Prepare release v0.16.0 (#259) #615
This file contains 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: CI | |
on: | |
push: | |
# Avoid duplicate builds on PRs. | |
branches: | |
- main | |
pull_request: | |
permissions: | |
contents: read | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
lint: | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Update Rust toolchain | |
run: rustup update | |
- name: Rust Cache | |
uses: Swatinem/[email protected] | |
- name: Clippy | |
run: cargo clippy --all-targets --locked -- --deny warnings | |
- name: rustfmt | |
run: cargo fmt -- --check | |
unit-test: | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Update Rust toolchain | |
run: rustup update | |
- name: Rust Cache | |
uses: Swatinem/[email protected] | |
- name: Run unit tests | |
run: cargo test --locked | |
integration-test: | |
strategy: | |
fail-fast: false | |
matrix: | |
builder: ["builder:24", "builder:22", "builder:20"] | |
arch: ["amd64", "arm64"] | |
exclude: | |
- builder: "builder:22" | |
arch: "arm64" | |
- builder: "builder:20" | |
arch: "arm64" | |
runs-on: ${{ matrix.arch == 'arm64' && 'pub-hk-ubuntu-24.04-arm-medium' || 'ubuntu-24.04' }} | |
env: | |
INTEGRATION_TEST_BUILDER: heroku/${{ matrix.builder }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install musl-tools | |
run: sudo apt-get install -y --no-install-recommends musl-tools | |
- name: Update Rust toolchain | |
run: rustup update | |
- name: Install Rust linux-musl target | |
run: rustup target add ${{ matrix.arch == 'arm64' && 'aarch64-unknown-linux-musl' || 'x86_64-unknown-linux-musl' }} | |
- name: Rust Cache | |
uses: Swatinem/[email protected] | |
- name: Install Pack CLI | |
uses: buildpacks/github-actions/[email protected] | |
- name: Pull builder image | |
run: docker pull '${{ env.INTEGRATION_TEST_BUILDER }}' | |
- name: Pull run image | |
# Using `docker inspect` rather than `pack builder inspect` since the latter makes | |
# additional requests to Docker Hub even when the image is available locally. | |
run: | | |
RUN_IMAGE=$( | |
docker inspect --format='{{index .Config.Labels "io.buildpacks.builder.metadata"}}' '${{ env.INTEGRATION_TEST_BUILDER }}' \ | |
| jq --exit-status --raw-output '.stack.runImage.image' | |
) | |
docker pull "${RUN_IMAGE}" | |
# The integration tests are annotated with the `ignore` attribute, allowing us to run | |
# only those and not the unit tests, via the `--ignored` option. On the latest stack | |
# we run all integration tests, but on older stacks we only run stack-specific tests. | |
- name: Run integration tests (all tests) | |
if: matrix.builder == 'builder:24' | |
run: cargo test --locked -- --ignored --test-threads $(($(nproc)+1)) | |
- name: Run integration tests (stack-specific tests only) | |
if: matrix.builder != 'builder:24' | |
run: cargo test --locked -- --ignored --test-threads $(($(nproc)+1)) 'python_version_test::' |