diff --git a/.github/workflows/cpack-builder.yml b/.github/workflows/cpack-builder.yml new file mode 100644 index 00000000..e00e9974 --- /dev/null +++ b/.github/workflows/cpack-builder.yml @@ -0,0 +1,50 @@ +name: cpack-builder + +on: + pull_request: + push: + schedule: + - cron: "0 7 * * *" # Run once daily + +permissions: + contents: read + +defaults: + run: + shell: bash -l {0} + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +env: + COMMIT_ID: ${{ github.sha }} + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID_IAM_S3_UPLOADER }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY_IAM_S3_UPLOADER }} + +jobs: + cpack-builder: + name: Build CPack + runs-on: ${{ matrix.runner }} + strategy: + fail-fast: false + matrix: + include: + - arch: aarch64 + runner: ubuntu-24.04-arm + - arch: amd64 + runner: ubuntu-24.04 + steps: + - uses: actions/checkout@v2 + with: + submodules: 'true' + - uses: conda-incubator/setup-miniconda@v3 + with: + miniforge-variant: Miniforge3 + miniforge-version: latest + activate-environment: dev + environment-file: ops/conda_env/dev.yml + use-mamba: true + - name: Build CPack + run: | + bash ops/build-cpack.sh ${{ matrix.arch }} diff --git a/.github/workflows/linux-wheel-builder.yml b/.github/workflows/linux-wheel-builder.yml index 0e3fb792..15f5053f 100644 --- a/.github/workflows/linux-wheel-builder.yml +++ b/.github/workflows/linux-wheel-builder.yml @@ -59,24 +59,3 @@ jobs: - name: Test wheel run: | bash ops/test-linux-python-wheel.sh - - cpack-builder: - name: Build CPack - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - submodules: 'true' - - uses: conda-incubator/setup-miniconda@v3 - with: - miniforge-variant: Miniforge3 - miniforge-version: latest - activate-environment: dev - environment-file: ops/conda_env/dev.yml - use-mamba: true - - uses: dbhi/qus/action@main - with: - targets: aarch64 - - name: Build CPack - run: | - bash ops/build-cpack.sh diff --git a/ops/build-cpack.sh b/ops/build-cpack.sh index c369031c..613d11b3 100755 --- a/ops/build-cpack.sh +++ b/ops/build-cpack.sh @@ -2,31 +2,29 @@ set -euo pipefail -echo "##[section] Building Treelite for amd64..." -tests/ci_build/ci_build.sh ubuntu20 tests/ci_build/build_via_cmake.sh +if [[ -z "${COMMIT_ID:-}" ]] +then + echo "Make sure to set environment variable COMMIT_ID" + exit 1 +fi -echo "##[section] Packing CPack for amd64..." -tests/ci_build/ci_build.sh ubuntu20 bash -c "cd build/ && cpack -G TGZ" -for tgz in build/treelite-*-Linux.tar.gz -do - mv -v "${tgz}" "${tgz%-Linux.tar.gz}+${COMMIT_ID}-Linux-amd64.tar.gz" -done - -echo "##[section]Uploading CPack for amd64..." -python -m awscli s3 cp build/*.tar.gz s3://treelite-cpack/ --acl public-read --region us-west-2 || true +if [[ "$#" -lt 1 ]] +then + echo "Usage: $0 {amd64,aarch64}" + exit 2 +fi -rm -rf build/ +arch="$1" -echo "##[section] Building Treelite for aarch64..." -export DOCKER_DEFAULT_PLATFORM=linux/arm64/v8 -tests/ci_build/ci_build.sh ubuntu20_aarch64 tests/ci_build/build_via_cmake.sh +echo "##[section] Building Treelite for ${arch}..." +tests/ci_build/ci_build.sh ubuntu20_${arch} tests/ci_build/build_via_cmake.sh -echo "##[section] Packing CPack for aarch64..." -tests/ci_build/ci_build.sh ubuntu20_aarch64 bash -c "cd build/ && cpack -G TGZ" +echo "##[section] Packing CPack for ${arch}..." +tests/ci_build/ci_build.sh ubuntu20_${arch} bash -c "cd build/ && cpack -G TGZ" for tgz in build/treelite-*-Linux.tar.gz do - mv -v "${tgz}" "${tgz%-Linux.tar.gz}+${COMMIT_ID}-Linux-aarch64.tar.gz" + mv -v "${tgz}" "${tgz%-Linux.tar.gz}+${COMMIT_ID}-Linux-${arch}.tar.gz" done -echo "##[section]Uploading CPack for aarch64..." +echo "##[section]Uploading CPack for ${arch}..." python -m awscli s3 cp build/*.tar.gz s3://treelite-cpack/ --acl public-read --region us-west-2 || true diff --git a/tests/ci_build/Dockerfile.ubuntu20 b/tests/ci_build/Dockerfile.ubuntu20_amd64 similarity index 100% rename from tests/ci_build/Dockerfile.ubuntu20 rename to tests/ci_build/Dockerfile.ubuntu20_amd64