Build Python Runtime #161
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 Python Runtime | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| update-released: | |
| description: 'Update already released versions?' | |
| required: false | |
| default: false | |
| type: boolean | |
| jobs: | |
| build: | |
| runs-on: ubuntu-22.04 | |
| name: build Python runtime | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| show-progress: false | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.13' | |
| - name: Setup Runner | |
| uses: ./.github/actions/setup-runner | |
| - name: Configure download mirrors | |
| shell: bash | |
| run: | | |
| if [ ! -z "${{ secrets.WORKERS_MIRROR_URL }}" ] ; then | |
| # Strip comment in front of WORKERS_MIRROR_URL, then substitute secret to use it. | |
| sed -e '/WORKERS_MIRROR_URL/ { s@# *@@; s@WORKERS_MIRROR_URL@${{ secrets.WORKERS_MIRROR_URL }}@; }' -i.bak build/deps/nodejs.MODULE.bazel | |
| fi | |
| - name: Build and upload Pyodide capnproto bundle | |
| env: | |
| R2_ACCOUNT_ID: ${{ secrets.PYODIDE_CAPNP_R2_ACCOUNT_ID }} | |
| R2_ACCESS_KEY_ID: ${{ secrets.PYODIDE_CAPNP_R2_ACCESS_KEY_ID }} | |
| R2_SECRET_ACCESS_KEY: ${{ secrets.PYODIDE_CAPNP_R2_SECRET_ACCESS_KEY }} | |
| run: | | |
| bazel build @workerd//src/pyodide:python_bundles @workerd//src/pyodide:bundle_version_info --remote_cache=https://bazel:${{ secrets.BAZEL_CACHE_KEY }}@bazel-remote-cache.devprod.cloudflare.dev | |
| # boto3 v1.36.0 fails with: | |
| # NotImplemented error occurred in CreateMultipartUpload operation: Header 'x-amz-checksum-algorithm' with value 'CRC32' not implemented | |
| pip install 'boto3<1.36.0' requests | |
| python3 src/pyodide/upload_bundles.py ${{ inputs.update-released == true && '--update-released' || '' }} | |
| - name: Check for open PR and commit changes | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| # Commit changes to python_metadata.bzl and push to branch | |
| # Configure git | |
| git config --local user.email "action@github.com" | |
| git config --local user.name "release-python-runtime.yml GitHub Action" | |
| # Get current branch name | |
| BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD) | |
| echo "Current branch: $BRANCH_NAME" | |
| # Check if there are changes to python_metadata.bzl | |
| if git diff --quiet build/python_metadata.bzl; then | |
| echo "No changes to python_metadata.bzl" | |
| exit 0 | |
| fi | |
| echo "Changes detected in python_metadata.bzl" | |
| # Check if there's an open PR for this branch | |
| PR_COUNT=$(gh pr list --head "$BRANCH_NAME" --state open --json number --jq length) | |
| if [ "$PR_COUNT" -eq 0 ]; then | |
| echo "No open PR found for branch $BRANCH_NAME, skipping commit" | |
| exit 0 | |
| fi | |
| echo "Found open PR for branch $BRANCH_NAME" | |
| # Commit and push the changes | |
| git add build/python_metadata.bzl | |
| git commit --fixup HEAD -m "Update python_metadata.bzl with new bundle info | |
| This commit updates the backport and integrity values in python_metadata.bzl | |
| based on the latest Pyodide bundle upload. | |
| 🤖 Generated automatically by release-python-runtime workflow" | |
| # --no-verify because 'git merge-base origin/main HEAD' fails in pre-commit. | |
| # There shouldn't be formatting errors anyways and if there are CI will catch it. | |
| git push origin "$BRANCH_NAME" --no-verify | |
| echo "Changes committed and pushed to $BRANCH_NAME" |