Merge pull request #1362 from numba/renovate/python-3.x #192
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: llvmlite_conda_builder | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| paths: | |
| - .github/workflows/llvmlite_conda_builder.yml | |
| - buildscripts/github/llvmlite_evaluate.py | |
| - conda-recipes/llvmlite/** | |
| workflow_dispatch: | |
| inputs: | |
| llvmdev_run_id: | |
| description: 'llvmdev workflow run ID (optional)' | |
| required: false | |
| type: string | |
| platform: | |
| description: Conda Platform | |
| default: linux-64 | |
| required: true | |
| type: choice | |
| options: | |
| - all | |
| - linux-64 | |
| - linux-aarch64 | |
| - osx-arm64 | |
| - win-64 | |
| # Add concurrency control | |
| concurrency: | |
| group: >- | |
| ${{ github.workflow }}- | |
| ${{ (github.event_name == 'push' && github.ref) | |
| || github.event.pull_request.number | |
| || toJson(github.event.inputs) | |
| || github.sha }} | |
| cancel-in-progress: true | |
| env: | |
| ARTIFACT_RETENTION_DAYS: 7 | |
| jobs: | |
| check: | |
| runs-on: ubuntu-24.04 | |
| outputs: | |
| matrix: ${{ steps.evaluate.outputs.matrix }} | |
| steps: | |
| - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| - uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0 | |
| with: | |
| python-version: '3.14' | |
| - name: Evaluate | |
| id: evaluate | |
| env: | |
| GITHUB_EVENT_NAME: ${{ github.event_name }} | |
| GITHUB_WORKFLOW_INPUT: ${{ toJson(github.event.inputs) }} | |
| run: | | |
| set -ex | |
| echo "=== Environment ===" | |
| echo "Event: $GITHUB_EVENT_NAME" | |
| echo "Inputs: $GITHUB_WORKFLOW_INPUT" | |
| echo "=== Running evaluation script ===" | |
| ./buildscripts/github/llvmlite_evaluate.py | |
| echo "=== Evaluation completed ===" | |
| build: | |
| needs: check | |
| name: ${{ matrix.platform }}-py${{ matrix.python-version }}-build | |
| runs-on: ${{ matrix.runner }} | |
| env: | |
| EXTRA_CHANNELS: '' | |
| defaults: | |
| run: | |
| shell: bash -elx {0} | |
| strategy: | |
| matrix: ${{fromJson(needs.check.outputs.matrix)}} | |
| fail-fast: false | |
| steps: | |
| - name: Clone repository | |
| uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup Miniconda | |
| uses: conda-incubator/setup-miniconda@835234971496cad1653abb28a638a281cf32541f # v3.2.0 | |
| with: | |
| auto-update-conda: true | |
| auto-activate-base: true | |
| - name: Install conda-build | |
| run: conda install conda-build | |
| - name: Download llvmdev Artifact | |
| if: ${{ inputs.llvmdev_run_id != '' }} | |
| uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 | |
| with: | |
| name: llvmdev_${{ matrix.platform }} | |
| path: llvmdev_conda_packages | |
| run-id: ${{ inputs.llvmdev_run_id }} | |
| repository: ${{ github.repository }} | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Build llvmlite conda package | |
| run: | | |
| if [ "${{ inputs.llvmdev_run_id }}" != "" ]; then | |
| LLVMDEV_CHANNEL="file:///${{ github.workspace }}/llvmdev_conda_packages" | |
| else | |
| LLVMDEV_CHANNEL="numba/label/dev" | |
| fi | |
| CONDA_CHANNEL_DIR="conda_channel_dir" | |
| mkdir $CONDA_CHANNEL_DIR | |
| if [ -n "${EXTRA_CHANNELS}" ]; then | |
| extra_args=(${EXTRA_CHANNELS}) | |
| else | |
| extra_args=() | |
| fi | |
| conda build --debug -c "${LLVMDEV_CHANNEL}" "${extra_args[@]}" -c defaults --python=${{ matrix.python-version }} conda-recipes/llvmlite --output-folder="${CONDA_CHANNEL_DIR}" --no-test | |
| - name: Upload llvmlite conda package | |
| uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 | |
| with: | |
| name: llvmlite-${{ matrix.platform }}-py${{ matrix.python-version }} | |
| path: conda_channel_dir | |
| compression-level: 0 | |
| retention-days: ${{ env.ARTIFACT_RETENTION_DAYS }} | |
| if-no-files-found: error | |
| - name: Show Workflow Run ID | |
| run: "echo \"Workflow Run ID: ${{ github.run_id }}\"" | |
| test: | |
| name: ${{ matrix.platform }}-py${{ matrix.python-version }}-test | |
| needs: [check, build] | |
| runs-on: ${{ matrix.runner }} | |
| env: | |
| EXTRA_CHANNELS: '' | |
| defaults: | |
| run: | |
| shell: bash -elx {0} | |
| strategy: | |
| matrix: ${{fromJson(needs.check.outputs.matrix)}} | |
| fail-fast: false | |
| steps: | |
| - name: Setup miniconda | |
| uses: conda-incubator/setup-miniconda@835234971496cad1653abb28a638a281cf32541f # v3.2.0 | |
| - name: Download llvmlite artifact | |
| uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 | |
| with: | |
| name: llvmlite-${{ matrix.platform }}-py${{ matrix.python-version }} | |
| - name: Install conda-build | |
| run: conda install conda-build | |
| - name: Run tests | |
| run: | | |
| if [ -n "${EXTRA_CHANNELS}" ]; then | |
| extra_args=(${EXTRA_CHANNELS}) | |
| else | |
| extra_args=() | |
| fi | |
| conda build --test "${extra_args[@]}" "${{ matrix.platform }}"/llvmlite*.conda |