Skip to content

Commit

Permalink
Add gha to upload Pyodide javascript bundle to r2
Browse files Browse the repository at this point in the history
This adds a github action that makes the Pyodide capnproto binary bundle and
uploads it to r2.
  • Loading branch information
hoodmane committed Oct 28, 2024
1 parent b8c1aa1 commit 5e2a8ec
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 0 deletions.
53 changes: 53 additions & 0 deletions .github/workflows/release-python-runtime.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: Build Python Runtime

on:
workflow_dispatch:
inputs:
pyodide:
description: The Pyodide version
pyodideRevision:
description: The Pyodide revision date
backport:
description: The Pyodide release backport number
dry-run:
description: Actually upload or just test build step?
default: false
type: boolean
jobs:
build:
runs-on: ubuntu-20.04
name: build Python runtime
steps:
- uses: actions/checkout@v4
with:
show-progress: false
- name: Setup Linux
if: runner.os == 'Linux'
run: |
export DEBIAN_FRONTEND=noninteractive
wget https://apt.llvm.org/llvm.sh
sed -i '/apt-get install/d' llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh 15
sudo apt-get install -y --no-install-recommends clang-15 lld-15 libunwind-15 libc++abi1-15 libc++1-15 libc++-15-dev
echo "build:linux --action_env=CC=/usr/lib/llvm-15/bin/clang --action_env=CXX=/usr/lib/llvm-15/bin/clang++" >> .bazelrc
echo "build:linux --host_action_env=CC=/usr/lib/llvm-15/bin/clang --host_action_env=CXX=/usr/lib/llvm-15/bin/clang++" >> .bazelrc
- 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 WORKSPACE
fi
- name: Bazel build
run: |
bazelisk build --config=release_linux //src/pyodide:pyodide.capnp.bin@rule
cp bazel-bin/src/pyodide/pyodide.capnp.bin .
- name: 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: |
pip install boto3
python3 src/pyodide/upload_bundle.py pyodide.capnp.bin pyodide_${{ inputs.pyodide }}_${{ inputs.pyodideRevision }}_${{ inputs.backport }}.capnp.bin
21 changes: 21 additions & 0 deletions src/pyodide/upload_bundle.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import sys
from os import environ

from boto3 import client


def main(path, key):
s3 = client(
"s3",
endpoint_url=f"https://{environ['R2_ACCOUNT_ID']}.r2.cloudflarestorage.com",
aws_access_key_id=environ["R2_ACCESS_KEY_ID"],
aws_secret_access_key=environ["R2_SECRET_ACCESS_KEY"],
region_name="auto",
)

s3.upload_file(str(path), "pyodide-capnp-bin", key)
return 0


if __name__ == "__main__":
sys.exit(main(sys.argv[1], sys.argv[2]))

0 comments on commit 5e2a8ec

Please sign in to comment.