Run tests on multiple platforms and fix windows MPIR issue #248
Workflow file for this run
This file contains 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: Build and test riscv64 | |
on: | |
push: | |
branches: | |
- main | |
release: | |
types: [published] | |
pull_request: | |
branches: | |
- '**' | |
concurrency: | |
# SHA is added to the end if on `main` to let all main workflows run | |
group: ${{ github.ref }}-${{ github.workflow }}-${{ github.event_name }}-${{ (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/heads/release/') || startsWith(github.ref, 'refs/heads/long_lived/')) && github.sha || '' }} | |
cancel-in-progress: true | |
permissions: | |
contents: read | |
id-token: write | |
jobs: | |
build_wheels: | |
name: ${{ matrix.os.emoji }} π¦ Build ${{ matrix.python.major-dot-minor }} | |
runs-on: ${{ matrix.os.runs-on }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- name: Linux | |
matrix: linux | |
emoji: π§ | |
runs-on: [ubuntu-latest] | |
python: | |
- major-dot-minor: '3.8' | |
matrix: '3.8' | |
- major-dot-minor: '3.9' | |
matrix: '3.9' | |
- major-dot-minor: '3.10' | |
matrix: '3.10' | |
- major-dot-minor: '3.11' | |
matrix: '3.11' | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 1 | |
- name: Set up QEMU on x86_64 | |
id: qemu | |
uses: docker/setup-qemu-action@v3 | |
with: | |
platforms: riscv64 | |
- name: Build and Test | |
run: | | |
docker run --rm --platform linux/riscv64 \ | |
-v ${{ github.workspace }}:/ws --workdir=/ws \ | |
chianetwork/ubuntu-22.04-risc-builder:latest \ | |
bash -exc '\ | |
pyenv global ${{ matrix.python.matrix }} && \ | |
python3 -m venv venv && \ | |
source ./venv/bin/activate && \ | |
pip install --upgrade pip && \ | |
cmake --version && \ | |
uname -a && \ | |
export BUILD_VDF_CLIENT=N && \ | |
pip wheel -w dist . && \ | |
./venv/bin/python -m pip install dist/*.whl && \ | |
./venv/bin/python -m pip install pytest && \ | |
./venv/bin/python -m pytest -v tests/ | |
' | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: packages-${{ matrix.os.name }}-${{ matrix.python.major-dot-minor }} | |
path: ./dist | |
if-no-files-found: error | |
upload: | |
name: Upload to Chia PyPI | |
runs-on: ubuntu-latest | |
needs: | |
- build_wheels | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set Env | |
uses: Chia-Network/actions/setjobenv@main | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Download artifacts | |
if: env.RELEASE == 'true' | |
uses: actions/download-artifact@v4 | |
with: | |
merge-multiple: true | |
pattern: packages-* | |
path: ./dist | |
- name: Configure AWS credentials | |
if: env.RELEASE == 'true' | |
uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
role-to-assume: arn:aws:iam::${{ secrets.CHIA_AWS_ACCOUNT_ID }}:role/installer-upload | |
aws-region: us-west-2 | |
- name: List existing wheels | |
if: env.RELEASE == 'true' | |
shell: sh | |
run: | | |
aws s3 ls s3://download.chia.net/simple/chiavdf/ > existing_wheel_list_raw | |
cat existing_wheel_list_raw | |
cat existing_wheel_list_raw | tr -s ' ' | cut -d ' ' -f 4 > existing_wheel_list | |
- name: List new wheels | |
if: env.RELEASE == 'true' | |
shell: sh | |
run: | | |
(cd dist/; ls chiavdf-*.whl) > new_wheel_list | |
cat new_wheel_list | xargs -I % sh -c 'ls -l dist/%' | |
- name: Choose wheels to upload | |
if: env.RELEASE == 'true' | |
shell: sh | |
run: | | |
grep -F -x -v -f existing_wheel_list new_wheel_list > upload_wheel_list | |
cat upload_wheel_list | |
- name: Upload wheels | |
if: env.RELEASE == 'true' | |
shell: sh | |
run: | | |
cat upload_wheel_list | xargs -I % sh -c 'aws s3 cp dist/% s3://download.chia.net/simple/chiavdf/' |