Skip to content

daft-build-artifact-s3 #67

daft-build-artifact-s3

daft-build-artifact-s3 #67

name: daft-build-artifact-s3
on:
workflow_dispatch:
inputs:
rust-profile:
description: Profile to compile with
required: true
default: release-lto
type: choice
options:
- release-lto
- release
env:
PACKAGE_NAME: getdaft
PYTHON_VERSION: 3.8
jobs:
build-and-push:
name: platform wheels for ${{ matrix.os }}-${{ matrix.compile_arch }}
runs-on: ${{ matrix.os }}-latest
strategy:
fail-fast: false
matrix:
os: [ubuntu]
compile_arch: [x86_64, aarch64]
# These permissions are needed to interact with GitHub's OIDC Token endpoint.
# This is used in the step "Assume GitHub Actions AWS Credentials"
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
- name: Assume GitHub Actions AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-region: us-west-2
role-to-assume: ${{ secrets.ACTIONS_AWS_ROLE_ARN }}
role-session-name: DaftPythonPackageGitHubWorkflow
- uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
architecture: x64
- run: pip install -U toml
- run: python tools/patch_package_version.py
- name: Build wheels - Linux x86
if: ${{ (matrix.os == 'ubuntu') && (matrix.compile_arch == 'x86_64') }}
uses: messense/maturin-action@v1
with:
target: x86_64
manylinux: auto
args: --profile ${{ inputs.rust-profile }} --out dist
before-script-linux: yum -y install perl-IPC-Cmd
env:
RUSTFLAGS: -C target-feature=+fxsr,+sse,+sse2,+sse3,+ssse3,+sse4.1,+sse4.2,+popcnt,+avx,+fma
- name: Build wheels - Linux aarch64
if: ${{ (matrix.os == 'ubuntu') && (matrix.compile_arch == 'aarch64') }}
uses: messense/maturin-action@v1
with:
target: aarch64-unknown-linux-gnu
manylinux: auto
# GCC 4.8.5 in manylinux2014 container doesn't support c11 atomic. This caused issues with the `ring` crate that causes TLS to fail
container: messense/manylinux_2_24-cross:aarch64
args: --profile ${{ inputs.rust-profile }} --out dist
before-script-linux: export JEMALLOC_SYS_WITH_LG_PAGE=16
- name: Copy all files as zip for Glue
run: for file in dist/*.whl; do cp $file dist/`basename $file .whl`.zip; done
- name: Upload files to s3
run: for file in dist/*; do aws s3 cp $file s3://github-actions-artifacts-bucket/daft-build-artifact-s3/${{ github.sha }}/ --acl public-read --no-progress; done
list-wheels:
name: List Wheels and Zip files Published to S3
runs-on: ubuntu-latest
needs:
- build-and-push
concurrency:
group: GenerateManifestS3
cancel-in-progress: false
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4
- name: Assume GitHub Actions AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-region: us-west-2
role-to-assume: ${{ secrets.ACTIONS_AWS_ROLE_ARN }}
role-session-name: DaftPythonPackageGitHubWorkflow
- name: List Wheels
run: aws s3 ls s3://github-actions-artifacts-bucket/daft-build-artifact-s3/${{ github.sha }}/
- name: install boto3
run: pip3 install boto3
- name: Generate New Manifest
run: python3 tools/generate_whl_html_manifest.py
- name: Echo command to pip install (copy this!)
run: echo 'pip install getdaft==<version> --pre --extra-index-url http://github-actions-artifacts-bucket.s3-website-us-west-2.amazonaws.com/ --trusted-host github-actions-artifacts-bucket.s3-website-us-west-2.amazonaws.com'