Deploy top-of-tree xbuildenv and pyodide-core to S3 (#3766)

This commit is contained in:
Gyeongjae Choi 2023-04-17 14:22:07 +09:00 committed by GitHub
parent 9c28f51526
commit 25ba93485a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 38 additions and 1 deletions

View File

@ -543,6 +543,7 @@ jobs:
PYODIDE_BASE_URL="https://cdn.jsdelivr.net/pyodide/dev/debug/" make dist/console.html PYODIDE_BASE_URL="https://cdn.jsdelivr.net/pyodide/dev/debug/" make dist/console.html
cp dist/console.html dist-debug/console.html cp dist/console.html dist-debug/console.html
PYODIDE_BASE_URL="https://cdn.jsdelivr.net/pyodide/dev/full/" make dist/console.html PYODIDE_BASE_URL="https://cdn.jsdelivr.net/pyodide/dev/full/" make dist/console.html
- run: - run:
name: Deploy to S3 name: Deploy to S3
command: | command: |
@ -556,6 +557,20 @@ jobs:
command: | command: |
python3 tools/deploy_s3.py dist-pyc/ "dev/pyc/" --bucket "pyodide-cdn2.iodide.io" --cache-control 'max-age=3600, public' --rm-remote-prefix python3 tools/deploy_s3.py dist-pyc/ "dev/pyc/" --bucket "pyodide-cdn2.iodide.io" --cache-control 'max-age=3600, public' --rm-remote-prefix
- run:
# Unlike the release version, we upload the dev version to S3 not to GitHub.
name: Deploy release files to S3
command: |
mkdir -p /tmp/ghr/dist
cp -r dist /tmp/ghr/pyodide
cp -r xbuildenv /tmp/ghr/xbuildenv
cd /tmp/ghr
tar cjf dist/pyodide-core.tar.bz2 pyodide/pyodide{.js,.mjs,.asm.js,.asm.wasm} pyodide/{package,repodata}.json pyodide/python_stdlib.zip
tar cjf dist/xbuildenv.tar.bz2 xbuildenv/
python3 tools/deploy_s3.py dist/ "xbuildenv/dev" --bucket "pyodide-cache" --cache-control 'max-age=3600, public' --overwrite \
--access-key-env "AWS_ACCESS_KEY_ID_CACHE" --secret-key-env "AWS_SECRET_ACCESS_KEY_CACHE"
workflows: workflows:
version: 2 version: 2
build-and-deploy: build-and-deploy:
@ -854,6 +869,7 @@ workflows:
- test-core-firefox - test-core-firefox
- test-packages-firefox - test-packages-firefox
- build-pyodide-debug - build-pyodide-debug
- create-xbuild-env
- build-test-pyc-packages - build-test-pyc-packages
filters: filters:
branches: branches:

View File

@ -1,6 +1,7 @@
import gzip import gzip
import io import io
import mimetypes import mimetypes
import os
import shutil import shutil
from pathlib import Path from pathlib import Path
@ -70,9 +71,19 @@ def deploy_to_s3_main(
rm_remote_prefix: bool = typer.Option( rm_remote_prefix: bool = typer.Option(
False, help="Remove existing files under the remote prefix" False, help="Remove existing files under the remote prefix"
), ),
access_key_env: str = typer.Option(
"AWS_ACCESS_KEY_ID", help="Environment variable name for AWS access key"
),
secret_key_env: str = typer.Option(
"AWS_SECRET_ACCESS_KEY", help="Environment variable name for AWS secret key"
),
): ):
"""Deploy a dist folder with Pyodide packages to AWS S3""" """Deploy a dist folder with Pyodide packages to AWS S3"""
s3_client = boto3.client("s3") s3_client = boto3.client(
"s3",
aws_access_key_id=os.environ[access_key_env],
aws_secret_access_key=os.environ[secret_key_env],
)
typer.echo(f"Deploying {local_folder} to s3://{bucket}/{remote_prefix}") typer.echo(f"Deploying {local_folder} to s3://{bucket}/{remote_prefix}")
typer.echo("Options: ") typer.echo("Options: ")

View File

@ -43,6 +43,8 @@ def test_deploy_to_s3_overwrite(tmp_path, capsys):
pretend=False, pretend=False,
overwrite=False, overwrite=False,
rm_remote_prefix=False, rm_remote_prefix=False,
access_key_env="AWS_ACCESS_KEY_ID",
secret_key_env="AWS_SECRET_ACCESS_KEY",
) )
def get_object_list(): def get_object_list():
@ -61,6 +63,8 @@ def test_deploy_to_s3_overwrite(tmp_path, capsys):
pretend=False, pretend=False,
overwrite=False, overwrite=False,
rm_remote_prefix=False, rm_remote_prefix=False,
access_key_env="AWS_ACCESS_KEY_ID",
secret_key_env="AWS_SECRET_ACCESS_KEY",
) )
msg = "Cannot upload .* because it already exists" msg = "Cannot upload .* because it already exists"
captured = capsys.readouterr() captured = capsys.readouterr()
@ -76,6 +80,8 @@ def test_deploy_to_s3_overwrite(tmp_path, capsys):
pretend=False, pretend=False,
overwrite=True, overwrite=True,
rm_remote_prefix=False, rm_remote_prefix=False,
access_key_env="AWS_ACCESS_KEY_ID",
secret_key_env="AWS_SECRET_ACCESS_KEY",
) )
assert get_object_list() == {"dev/full/a.whl", "dev/full/b.tar", "dev/full/c.zip"} assert get_object_list() == {"dev/full/a.whl", "dev/full/b.tar", "dev/full/c.zip"}
@ -90,6 +96,8 @@ def test_deploy_to_s3_overwrite(tmp_path, capsys):
pretend=False, pretend=False,
overwrite=False, overwrite=False,
rm_remote_prefix=True, rm_remote_prefix=True,
access_key_env="AWS_ACCESS_KEY_ID",
secret_key_env="AWS_SECRET_ACCESS_KEY",
) )
assert get_object_list() == {"dev/full/c.zip", "dev/full/a.whl"} assert get_object_list() == {"dev/full/c.zip", "dev/full/a.whl"}
@ -112,6 +120,8 @@ def test_deploy_to_s3_mime_type(tmp_path, capsys):
pretend=False, pretend=False,
overwrite=False, overwrite=False,
rm_remote_prefix=False, rm_remote_prefix=False,
access_key_env="AWS_ACCESS_KEY_ID",
secret_key_env="AWS_SECRET_ACCESS_KEY",
) )
def get_header(key, field="content-type"): def get_header(key, field="content-type"):