Use the full release of bladebit #1083
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 - check - upload | |
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 | |
jobs: | |
build-wheels: | |
name: Wheel - ${{ matrix.os.name }} ${{ matrix.python.major-dot-minor }} ${{ matrix.arch.name }} | |
runs-on: ${{ matrix.os.runs-on[matrix.arch.matrix] }} | |
continue-on-error: true | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- name: macOS | |
matrix: macos | |
runs-on: | |
arm: [macOS, ARM64] | |
intel: [macos-latest] | |
cibw-archs-macos: | |
arm: arm64 | |
intel: x86_64 | |
- name: Ubuntu | |
matrix: ubuntu | |
runs-on: | |
arm: [Linux, ARM64] | |
intel: [ubuntu-latest] | |
- name: Windows | |
matrix: windows | |
runs-on: | |
intel: [windows-latest] | |
python: | |
- major-dot-minor: '3.8' | |
cibw-build: 'cp38-*' | |
manylinux: | |
arm: manylinux2014 | |
intel: manylinux2014 | |
matrix: '3.8' | |
- major-dot-minor: '3.9' | |
cibw-build: 'cp39-*' | |
manylinux: | |
arm: manylinux2014 | |
intel: manylinux2014 | |
matrix: '3.9' | |
- major-dot-minor: '3.10' | |
cibw-build: 'cp310-*' | |
manylinux: | |
arm: manylinux2014 | |
intel: manylinux2014 | |
matrix: '3.10' | |
- major-dot-minor: '3.11' | |
cibw-build: 'cp311-*' | |
manylinux: | |
arm: manylinux2014 | |
intel: manylinux2014 | |
matrix: '3.11' | |
arch: | |
- name: ARM | |
matrix: arm | |
- name: Intel | |
matrix: intel | |
exclude: | |
# Only partial entries are required here by GitHub Actions so generally I | |
# only specify the `matrix:` entry. The super linter complains so for now | |
# all entries are included to avoid that. Reported at | |
# https://github.com/github/super-linter/issues/3016 | |
- os: | |
name: Windows | |
matrix: windows | |
runs-on: | |
intel: [windows-latest] | |
arch: | |
name: ARM | |
matrix: arm | |
- os: | |
name: macOS | |
matrix: macos | |
runs-on: | |
arm: [macOS, ARM64] | |
intel: [macos-latest] | |
python: | |
major-dot-minor: '3.8' | |
cibw-build: 'cp38-*' | |
matrix: '3.8' | |
arch: | |
name: ARM | |
matrix: arm | |
steps: | |
- name: Clean workspace | |
uses: Chia-Network/actions/clean-workspace@main | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Set Env | |
if: env.RUNNER_ARCH != 'ARM64' | |
uses: Chia-Network/actions/setjobenv@main | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- uses: Chia-Network/actions/setup-python@main | |
with: | |
python-version: ${{ matrix.python.major-dot-minor }} | |
- name: Install pipx | |
run: | | |
pip install pipx | |
- name: Get Windows Bladebit Harvester Artifact | |
if: runner.os == 'Windows' | |
shell: bash | |
run: | | |
set -eo pipefail | |
set -x | |
.github/actions/fetch_bladebit_harvester.sh windows x86-64 | |
- name: Build and test | |
env: | |
CIBW_PRERELEASE_PYTHONS: True | |
CIBW_BUILD_VERBOSITY_MACOS: 1 | |
CIBW_BUILD_VERBOSITY_LINUX: 1 | |
CIBW_BUILD_VERBOSITY_WINDOWS: 1 | |
CIBW_BUILD: ${{ matrix.python.cibw-build }} | |
CIBW_SKIP: '*-manylinux_i686 *-win32 *-musllinux_*' | |
CIBW_MANYLINUX_AARCH64_IMAGE: ${{ matrix.python.manylinux['arm'] }} | |
CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.python.manylinux['intel'] }} | |
CIBW_ENVIRONMENT_WINDOWS: "CP_USE_GREEN_REAPER=1" | |
CIBW_ENVIRONMENT_LINUX: CP_USE_GREEN_REAPER="1" | |
CIBW_BEFORE_ALL_LINUX: | | |
set -eo pipefail | |
set -x | |
# Get bladebit harvester | |
set -eo pipefail | |
ARCH=$(uname -m) | |
if [[ $ARCH == x86_64 ]]; then | |
.github/actions/fetch_bladebit_harvester.sh linux x86-64 | |
else | |
.github/actions/fetch_bladebit_harvester.sh linux arm64 | |
fi | |
CIBW_BEFORE_BUILD_LINUX: > | |
python -m pip install --upgrade pip | |
CIBW_ARCHS_MACOS: ${{ matrix.os.cibw-archs-macos[matrix.arch.matrix] }} | |
CIBW_BEFORE_ALL_MACOS: | | |
brew install gmp boost cmake | |
# Get bladebit harvester | |
set -eo pipefail | |
ARCH=$(uname -m) | |
if [[ $ARCH == x86_64 ]]; then | |
.github/actions/fetch_bladebit_harvester.sh macos x86-64 | |
else | |
.github/actions/fetch_bladebit_harvester.sh macos arm64 | |
fi | |
CIBW_BEFORE_BUILD_MACOS: > | |
python -m pip install --upgrade pip | |
CIBW_ENVIRONMENT_MACOS: "MACOSX_DEPLOYMENT_TARGET=10.14 CP_USE_GREEN_REAPER=1" | |
CIBW_TEST_REQUIRES: pytest | |
CIBW_TEST_COMMAND: py.test -v {project}/tests | |
run: | |
pipx run --spec='cibuildwheel==2.9.0' cibuildwheel --output-dir dist 2>&1 | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: packages | |
path: ./dist | |
build-sdist: | |
name: sdist - ${{ matrix.os.name }} ${{ matrix.python.major-dot-minor }} ${{ matrix.arch.name }} | |
runs-on: ${{ matrix.os.runs-on[matrix.arch.matrix] }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- name: Ubuntu | |
matrix: ubuntu | |
runs-on: | |
arm: [Linux, ARM64] | |
intel: [ubuntu-latest] | |
python: | |
- major-dot-minor: '3.9' | |
matrix: '3.9' | |
arch: | |
- name: Intel | |
matrix: intel | |
steps: | |
- name: Clean workspace | |
uses: Chia-Network/actions/clean-workspace@main | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- uses: Chia-Network/actions/setup-python@main | |
with: | |
python-version: ${{ matrix.python.major-dot-minor }} | |
- name: Build source distribution | |
run: | | |
pip install build | |
python -m build --sdist --outdir dist . | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: packages | |
path: ./dist | |
check: | |
name: Check - ${{ matrix.os.name }} ${{ matrix.python.major-dot-minor }} ${{ matrix.arch.name }} | |
runs-on: ${{ matrix.os.runs-on[matrix.arch.matrix] }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- name: Ubuntu | |
matrix: ubuntu | |
runs-on: | |
arm: [Linux, ARM64] | |
intel: [ubuntu-latest] | |
python: | |
- major-dot-minor: '3.9' | |
matrix: '3.9' | |
arch: | |
- name: Intel | |
matrix: intel | |
steps: | |
- name: Clean workspace | |
uses: Chia-Network/actions/clean-workspace@main | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- uses: Chia-Network/actions/setup-python@main | |
with: | |
python-version: ${{ matrix.python.major-dot-minor }} | |
- name: flake8 | |
run: | | |
pip install flake8 | |
flake8 tests setup.py | |
- name: mypy | |
run: | | |
pip install mypy | |
mypy --config-file mypi.ini setup.py tests | |
upload: | |
name: Upload to PyPI - ${{ matrix.os.name }} ${{ matrix.python.major-dot-minor }} ${{ matrix.arch.name }} | |
runs-on: ${{ matrix.os.runs-on[matrix.arch.matrix] }} | |
needs: | |
- build-wheels | |
- build-sdist | |
- check | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- name: Ubuntu | |
matrix: ubuntu | |
runs-on: | |
arm: [Linux, ARM64] | |
intel: [ubuntu-latest] | |
python: | |
- major-dot-minor: '3.9' | |
matrix: '3.9' | |
arch: | |
- name: Intel | |
matrix: intel | |
steps: | |
- name: Clean workspace | |
uses: Chia-Network/actions/clean-workspace@main | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Set Env | |
uses: Chia-Network/actions/setjobenv@main | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- uses: Chia-Network/actions/setup-python@main | |
with: | |
python-version: ${{ matrix.python.major-dot-minor }} | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: packages | |
path: ./dist | |
- name: Test for secrets access | |
id: check_secrets | |
shell: bash | |
run: | | |
unset HAS_SECRET | |
if [ -n "$SECRET" ]; then HAS_SECRET='true' ; fi | |
echo "HAS_SECRET=${HAS_SECRET}" >>$GITHUB_OUTPUT | |
env: | |
SECRET: "${{ secrets.test_pypi_password }}" | |
- name: Install twine | |
run: pip install twine | |
- name: Publish distribution to PyPI | |
if: env.RELEASE == 'true' && steps.check_secrets.outputs.HAS_SECRET | |
env: | |
TWINE_USERNAME: __token__ | |
TWINE_NON_INTERACTIVE: 1 | |
TWINE_PASSWORD: ${{ secrets.pypi_password }} | |
run: twine upload --non-interactive --skip-existing --verbose 'dist/*' | |
- name: Publish distribution to Test PyPI | |
if: env.PRE_RELEASE == 'true' && steps.check_secrets.outputs.HAS_SECRET | |
env: | |
TWINE_REPOSITORY_URL: https://test.pypi.org/legacy/ | |
TWINE_USERNAME: __token__ | |
TWINE_NON_INTERACTIVE: 1 | |
TWINE_PASSWORD: ${{ secrets.test_pypi_password }} | |
run: twine upload --non-interactive --skip-existing --verbose 'dist/*' |