add dry run logic for publish steps #46
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: Build numpy wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'numpy version to build (git tag without leading v, e.g. 2.5.1)' | |
| required: true | |
| default: '2.5.1' | |
| pull_request: | |
| paths: | |
| - '.github/workflows/build-numpy.yml' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ inputs.version || '2.5.1' }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read # to fetch code (actions/checkout) | |
| env: | |
| NUMPY_VERSION: ${{ inputs.version || '2.5.1' }} | |
| UV_EXTRA_INDEX_URL: https://pypi.riseproject.dev/simple/ | |
| UV_INDEX_STRATEGY: unsafe-best-match | |
| UV_ONLY_BINARY: ':all:' | |
| # Pinned explicitly (rather than left to cibuildwheel's default resolution) | |
| # so the gpl_sources job below can pull the exact same image the wheels | |
| # were built in. | |
| MANYLINUX_RISCV64_IMAGE: quay.io/pypa/manylinux_2_39_riscv64 | |
| jobs: | |
| build_wheels: | |
| name: Build numpy ${{ inputs.version || '2.5.1' }} ${{ matrix.python }}-manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python: ["cp312", "cp313", "cp314", "cp314t"] | |
| env: | |
| CCACHE_DIR: ${{ github.workspace }}/.ccache | |
| CCACHE_BASEDIR: "/project" | |
| CCACHE_COMPILERCHECK: "content" | |
| steps: | |
| # Layout note: numpy is checked out at the workspace root (not under a | |
| # subdir) so cibuildwheel's `{project}` template substitution resolves | |
| # to the numpy source tree. numpy's pyproject.toml uses | |
| # `{project}/tools/wheels/cibw_before_build.sh`, which only works when | |
| # CWD == numpy root at cibuildwheel invocation time. python-wheels is | |
| # placed under `python-wheels-repo/` to free the workspace root for numpy. | |
| - name: Checkout numpy v${{ env.NUMPY_VERSION }} | |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| repository: numpy/numpy | |
| ref: v${{ env.NUMPY_VERSION }} | |
| submodules: true | |
| persist-credentials: false | |
| - name: Restore compilation cache | |
| uses: actions/cache/restore@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 | |
| id: ccache-restore | |
| with: | |
| path: ${{ env.CCACHE_DIR }} | |
| key: ccache-wheels-numpy-v${{ env.NUMPY_VERSION }}-manylinux_riscv64-${{ matrix.python }}-${{ github.run_id }} | |
| restore-keys: | | |
| ccache-wheels-numpy-v${{ env.NUMPY_VERSION }}-manylinux_riscv64-${{ matrix.python }}- | |
| ccache-wheels-numpy-manylinux_riscv64-${{ matrix.python }}- | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@294735312765b09d24a2fbec22660ce817587d55 # v4.1.0 | |
| env: | |
| CIBW_BUILD: ${{ matrix.python }}-manylinux_riscv64 | |
| CIBW_BEFORE_ALL_LINUX: | | |
| set -eux | |
| CCACHE_VERSION=4.13.6 | |
| curl -fsSL https://github.com/ccache/ccache/releases/download/v${CCACHE_VERSION}/ccache-${CCACHE_VERSION}-linux-$(uname -m)-musl-static.tar.gz | \ | |
| tar -xvzf - --strip-components 1 -C /usr/local/bin ccache-${CCACHE_VERSION}-linux-$(uname -m)-musl-static/ccache | |
| ccache --version | |
| ccache --zero-stats | |
| CIBW_ENVIRONMENT_PASS_LINUX: >- | |
| CCACHE_BASEDIR | |
| CCACHE_COMPILERCHECK | |
| CIBW_CONTAINER_ENGINE: "docker; create_args: --volume ${{ env.CCACHE_DIR }}:/root/.ccache" | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| - name: Save compilation cache | |
| if: always() && github.ref == 'refs/heads/main' | |
| uses: actions/cache/save@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 | |
| with: | |
| path: ${{ env.CCACHE_DIR }} | |
| key: ccache-wheels-numpy-v${{ env.NUMPY_VERSION }}-manylinux_riscv64-${{ matrix.python }}-${{ github.run_id }} | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: numpy-${{ env.NUMPY_VERSION }}-${{ matrix.python }}-manylinux_riscv64 | |
| path: ./wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| name: Publish numpy ${{ inputs.version || '2.5.1' }} to GitLab | |
| needs: [build_wheels] | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| steps: | |
| - name: Publish wheels and open docs PR | |
| uses: riseproject-dev/python-wheels/actions/publish-wheels@main | |
| with: | |
| artifact-pattern: numpy-${{ env.NUMPY_VERSION }}-*-manylinux_riscv64 | |
| gitlab-username: ${{ vars.GITLAB_DEPLOY_USER }} | |
| gitlab-token: ${{ secrets.GITLAB_DEPLOY_TOKEN }} | |
| gitlab-project-id: ${{ vars.GITLAB_PROJECT_ID }} | |
| gh-token: ${{ secrets.GITHUB_TOKEN }} |