Skip to content

Add pr-checks.yaml (sdk label only) #40

Add pr-checks.yaml (sdk label only)

Add pr-checks.yaml (sdk label only) #40

Workflow file for this run

name: Bittensor Checks
concurrency:
group: e2e-sdk-${{ github.ref }}
cancel-in-progress: true
on:
pull_request:
branches:
- master
- staging
types: [opened, synchronize, reopened, labeled, unlabeled]
env:
CARGO_TERM_COLOR: always
VERBOSE: ${{ github.event.inputs.verbose }}
jobs:
check-labels:
runs-on: ubuntu-latest
if: ${{ github.event.pull_request.draft == false }}
outputs:
skip-tests: ${{ contains(github.event.pull_request.labels.*.name, 'skip-bittensor-tests') }}
run-cli-tests: ${{ contains(github.event.pull_request.labels.*.name, 'run-bittensor-cli-tests') }}
run-sdk-tests: ${{ contains(github.event.pull_request.labels.*.name, 'run-bittensor-sdk-tests') }}
steps:
- name: Check out repository
uses: actions/checkout@v4
run-tests:
needs: check-labels
runs-on: ubuntu-latest
if: ${{ github.event_name == 'pull_request' && github.event.pull_request.draft == false && needs.check-labels.outputs.run-sdk-tests == 'true' }}
timeout-minutes: 60
steps:
- name: Check-out repository
uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update &&
sudo apt-get install -y clang curl libssl-dev llvm libudev-dev protobuf-compiler
- name: Install Rust stable
uses: actions-rs/[email protected]
with:
toolchain: stable
components: rustfmt
profile: minimal
- name: Add wasm32-unknown-unknown target
run: |
rustup target add wasm32-unknown-unknown --toolchain stable-x86_64-unknown-linux-gnu
rustup component add rust-src --toolchain stable-x86_64-unknown-linux-gnu
- name: Create Python virtual environment
run: python3 -m venv venv
- name: Clone Bittensor SDK repo
run: git clone https://github.com/opentensor/bittensor.git
- name: Setup Bittensor SDK from cloned repo
working-directory: bittensor
run: |
source ../venv/bin/activate
git checkout staging
python3 -m pip install --upgrade pip
python3 -m pip install '.[dev]'
pip install maturin
- name: Clone Bittensor Wallet repo
run: git clone https://github.com/opentensor/btwallet.git
- name: Checkout PR branch in Wallet repo
working-directory: btwallet
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: Build and install Rust Bittensor Wallet package
working-directory: btwallet
run: |
source ../venv/bin/activate
maturin develop
- name: Clone Subtensor repo
run: git clone https://github.com/opentensor/subtensor.git
- name: Checkout Subtensor repo to `devnet-ready` branch
working-directory: subtensor
run: git checkout devnet-ready
- name: Find e2e test files
working-directory: bittensor
id: find-tests
run: |
test_files=$(find tests/e2e_tests -name "test_*.py" | jq -R -s -c 'split("\n")[:-1]')
echo "TEST_FILES=$test_files" >> $GITHUB_ENV
echo "matrix=$(jq -n --argjson files "$test_files" '{include: [$files[] | {test_file: .}]}')" >> $GITHUB_ENV
outputs:
matrix: ${{ env.matrix }}
run-e2e-tests:
needs: run-tests
runs-on: ubuntu-latest
if: ${{ github.event_name == 'pull_request' && github.event.pull_request.draft == false }}
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.run-tests.outputs.matrix) }}
steps:
- name: Check-out repository
uses: actions/checkout@v4
- name: Restore Python virtual environment
uses: actions/download-artifact@v4
with:
name: python-venv
path: venv
- name: Run Bittensor SDK e2e test - ${{ matrix.test_file }}
working-directory: bittensor
run: |
source ../venv/bin/activate
if [ -f "../subtensor/scripts/localnet.sh" ]; then
LOCALNET_SH_PATH="../subtensor/scripts/localnet.sh" \
python3 -m pytest ${{ matrix.test_file }} -s
else
echo "Error: localnet.sh not found"
exit 1
fi