Skip to content

Fix and refactor coinbase #60

Fix and refactor coinbase

Fix and refactor coinbase #60

name: Bittensor BTCLI Test
permissions:
pull-requests: write
contents: read
concurrency:
group: e2e-cli-${{ github.ref }}
cancel-in-progress: true
on:
pull_request:
branches:
- devnet
- devnet-ready
- testnet
- testnet-ready
- main
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 "::set-output name=run-cli-tests::true"
else
echo "run-cli-tests=false" >> $GITHUB_ENV
echo "::set-output name=run-cli-tests::false"
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 "::set-output name=test-files::$test_files"
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:latest
- name: Save Docker Image to Cache
run: docker save -o subtensor-localnet.tar ghcr.io/opentensor/subtensor-localnet:latest
- name: Upload Docker Image as Artifact
uses: actions/upload-artifact@v4
with:
name: subtensor-localnet
path: subtensor-localnet.tar
# main job
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: "cli: ${{ matrix.test-file }}"
steps:
- name: Check-out repository
uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v5
- name: Create Python virtual environment
working-directory: ${{ github.workspace }}
run: uv venv ${{ github.workspace }}/venv
- name: Clone Bittensor CLI repo
working-directory: ${{ github.workspace }}
run: git clone https://github.com/opentensor/btcli.git
- name: Setup Bittensor-cli from cloned repo
working-directory: ${{ github.workspace }}/btcli
run: |
source ${{ github.workspace }}/venv/bin/activate
git checkout staging
git fetch origin staging
uv run --active pip install --upgrade pip
uv run --active pip install '.[dev]'
uv run --active pip install pytest
- name: Install uv dependencies
working-directory: ${{ github.workspace }}/btcli
run: uv sync --all-extras --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 tests
working-directory: ${{ github.workspace }}/btcli
run: |
source ${{ github.workspace }}/venv/bin/activate
uv run pytest ${{ matrix.test-file }} -s