Race Condition Bug fixes #371
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Bittensor BTCLI Test | |
| permissions: | |
| pull-requests: write | |
| contents: read | |
| concurrency: | |
| group: e2e-cli-${{ github.ref }} | |
| cancel-in-progress: true | |
| on: | |
| pull_request: | |
| branches: | |
| - main | |
| - staging | |
| types: [opened, synchronize, reopened, labeled, unlabeled] | |
| env: | |
| CARGO_TERM_COLOR: always | |
| VERBOSE: ${{ github.event.inputs.verbose }} | |
| jobs: | |
| apply-label-to-new-pr: | |
| runs-on: ubuntu-latest | |
| if: ${{ github.event.pull_request.draft == false }} | |
| outputs: | |
| should_continue_cli: ${{ steps.check.outputs.should_continue_cli }} | |
| steps: | |
| - name: Check | |
| id: check | |
| run: | | |
| ACTION="${{ github.event.action }}" | |
| if [[ "$ACTION" == "opened" || "$ACTION" == "reopened" ]]; then | |
| echo "should_continue_cli=true" >> $GITHUB_OUTPUT | |
| else | |
| echo "should_continue_cli=false" >> $GITHUB_OUTPUT | |
| fi | |
| shell: bash | |
| - name: Add label | |
| if: steps.check.outputs.should_continue_cli == 'true' | |
| uses: actions-ecosystem/action-add-labels@v1 | |
| with: | |
| github_token: ${{ secrets.GITHUB_TOKEN }} | |
| labels: run-bittensor-cli-tests | |
| check-labels: | |
| needs: apply-label-to-new-pr | |
| runs-on: ubuntu-latest | |
| if: always() | |
| outputs: | |
| run-cli-tests: ${{ steps.get-labels.outputs.run-cli-tests }} | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v4 | |
| - name: Get labels from PR | |
| id: get-labels | |
| run: | | |
| LABELS=$(gh pr view ${{ github.event.pull_request.number }} --json labels --jq '.labels[].name') | |
| echo "Current labels: $LABELS" | |
| if echo "$LABELS" | grep -q "run-bittensor-cli-tests"; then | |
| echo "run-cli-tests=true" >> $GITHUB_ENV | |
| echo "run-cli-tests=true" >> $GITHUB_OUTPUT | |
| else | |
| echo "run-cli-tests=false" >> $GITHUB_ENV | |
| echo "run-cli-tests=false" >> $GITHUB_OUTPUT | |
| fi | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| find-e2e-tests: | |
| needs: check-labels | |
| if: always() && needs.check-labels.outputs.run-cli-tests == 'true' | |
| runs-on: ubuntu-latest | |
| outputs: | |
| test-files: ${{ steps.get-tests.outputs.test-files }} | |
| steps: | |
| - name: Research preparation | |
| working-directory: ${{ github.workspace }} | |
| run: git clone https://github.com/opentensor/btcli.git | |
| - name: Checkout | |
| working-directory: ${{ github.workspace }}/btcli | |
| run: git checkout staging | |
| - name: Install dependencies | |
| run: sudo apt-get install -y jq | |
| - name: Find e2e test files | |
| id: get-tests | |
| run: | | |
| test_files=$(find ${{ github.workspace }}/btcli/tests/e2e_tests -name "test*.py" | jq -R -s -c 'split("\n") | map(select(. != ""))') | |
| echo "test-files=$test_files" >> $GITHUB_OUTPUT | |
| shell: bash | |
| pull-docker-image: | |
| needs: check-labels | |
| runs-on: ubuntu-latest | |
| if: always() && needs.check-labels.outputs.run-cli-tests == 'true' | |
| steps: | |
| - name: Log in to GitHub Container Registry | |
| run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin | |
| - name: Pull Docker Image | |
| run: docker pull ghcr.io/opentensor/subtensor-localnet:devnet-ready | |
| - name: Save Docker Image to Cache | |
| run: docker save -o subtensor-localnet.tar ghcr.io/opentensor/subtensor-localnet:devnet-ready | |
| - name: Upload Docker Image as Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: subtensor-localnet | |
| path: subtensor-localnet.tar | |
| run-e2e-tests: | |
| needs: | |
| - check-labels | |
| - find-e2e-tests | |
| - pull-docker-image | |
| if: always() && needs.check-labels.outputs.run-cli-tests == 'true' | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| max-parallel: 16 | |
| matrix: | |
| rust-branch: | |
| - stable | |
| rust-target: | |
| - x86_64-unknown-linux-gnu | |
| os: | |
| - ubuntu-latest | |
| test-file: ${{ fromJson(needs.find-e2e-tests.outputs.test-files) }} | |
| env: | |
| RELEASE_NAME: development | |
| RUSTV: ${{ matrix.rust-branch }} | |
| RUST_BACKTRACE: full | |
| RUST_BIN_DIR: target/${{ matrix.rust-target }} | |
| TARGET: ${{ matrix.rust-target }} | |
| timeout-minutes: 60 | |
| name: "e2e tests: ${{ matrix.test-file }}" | |
| steps: | |
| - name: Check-out repository | |
| uses: actions/checkout@v4 | |
| - name: Install system dependencies | |
| run: | | |
| sudo apt-get update && | |
| sudo apt-get install -y clang curl libssl-dev llvm libudev-dev protobuf-compiler | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.13' | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| - name: Clone Bittensor CLI repo | |
| run: git clone https://github.com/opentensor/btcli.git | |
| - name: Checkout btcli staging branch | |
| working-directory: ${{ github.workspace }}/btcli | |
| run: | | |
| git checkout staging | |
| git fetch origin staging | |
| - name: Install btcli dependencies | |
| working-directory: ${{ github.workspace }}/btcli | |
| run: uv pip install --system '.[dev]' | |
| - name: Clone async-substrate-interface repo | |
| run: git clone https://github.com/opentensor/async-substrate-interface.git | |
| - name: Checkout PR branch in async-substrate-interface | |
| working-directory: ${{ github.workspace }}/async-substrate-interface | |
| run: | | |
| git fetch origin ${{ github.event.pull_request.head.ref }} | |
| git checkout ${{ github.event.pull_request.head.ref }} | |
| echo "Current branch: $(git rev-parse --abbrev-ref HEAD)" | |
| - name: Install async-substrate-interface with dev dependencies | |
| working-directory: ${{ github.workspace }}/async-substrate-interface | |
| run: | | |
| uv pip uninstall --system async-substrate-interface || true | |
| uv pip install --system '.[dev]' | |
| - name: Download Cached Docker Image | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: subtensor-localnet | |
| - name: Load Docker Image | |
| run: docker load -i subtensor-localnet.tar | |
| - name: Run e2e tests | |
| run: pytest ${{ matrix.test-file }} -s | |
| run-unit-test: | |
| needs: | |
| - check-labels | |
| if: always() && needs.check-labels.outputs.run-cli-tests == 'true' | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check-out repository | |
| uses: actions/checkout@v4 | |
| - name: Install system dependencies | |
| run: | | |
| sudo apt-get update && | |
| sudo apt-get install -y clang curl libssl-dev llvm libudev-dev protobuf-compiler | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.13' | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| - name: Clone Bittensor CLI repo | |
| run: git clone https://github.com/opentensor/btcli.git | |
| - name: Checkout btcli staging branch | |
| working-directory: ${{ github.workspace }}/btcli | |
| run: | | |
| git checkout staging | |
| git fetch origin staging | |
| - name: Install btcli dependencies | |
| working-directory: ${{ github.workspace }}/btcli | |
| run: uv pip install --system '.[dev]' | |
| - name: Clone async-substrate-interface repo | |
| run: git clone https://github.com/opentensor/async-substrate-interface.git | |
| - name: Checkout PR branch in async-substrate-interface | |
| working-directory: ${{ github.workspace }}/async-substrate-interface | |
| run: | | |
| git fetch origin ${{ github.event.pull_request.head.ref }} | |
| git checkout ${{ github.event.pull_request.head.ref }} | |
| echo "Current branch: $(git rev-parse --abbrev-ref HEAD)" | |
| - name: Install async-substrate-interface with dev dependencies | |
| working-directory: ${{ github.workspace }}/async-substrate-interface | |
| run: | | |
| uv pip uninstall --system async-substrate-interface || true | |
| uv pip install --system '.[dev]' | |
| - name: Run BTCLI unit tests | |
| run: pytest ${{ github.workspace }}/btcli/tests/unit_tests |