Temp gid #215
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: Build | |
on: | |
push: | |
branches: ['main', 'release/**'] | |
paths: | |
- '**' | |
- '!docs/**' # ignore docs changes | |
- '!**.md' # ignore markdown changes | |
pull_request: | |
branches: ['main', 'release/**'] | |
paths: | |
- '.github/workflows/build.yml' | |
- '**.go' | |
- 'go.*' | |
- 'cmd/go.*' | |
- 'Makefile' | |
- 'Dockerfile' | |
- 'integration/**' | |
- 'scripts/**' | |
env: | |
GO_VERSION: '1.22.6' | |
jobs: | |
setup: | |
# This job sets up the runners to be used in the matrix for the build workflow. | |
# It provides a list of available runners with stable, human-friendly names and a mapping | |
# from those names to the actual `runs-on` value for each runner type. This allows us to | |
# use codebuild-hosted runners for awslabs/soci-snapshotter without requiring forks to also | |
# have codebuild-hosted runners. | |
# | |
# If you want to use codebuild runners for your personal fork, follow the instructions to set | |
# up a codebuild project. https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html | |
# Then, replace 'soci-snapshotter-instance' with the name of the project you created. | |
name: Setup Build Matrix | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
# We're using a matrix with a single entry so that we can define some config as YAML rather than | |
# having to write escaped json in a string. | |
include: | |
- use-codebuild: ${{ github.repository_owner == 'awslabs' }} | |
runs-on-names-cb: [ubuntu-x86, al2-arm] | |
runs-on-names-gh: [ubuntu] | |
runner-labels: | |
ubuntu: ubuntu-22.04 | |
ubuntu-x86: "codebuild-soci-snapshotter-instance-${{ github.run_id }}-${{ github.run_attempt }}-ubuntu-7.0-large" | |
al2-arm: "codebuild-soci-snapshotter-instance-${{ github.run_id }}-${{ github.run_attempt }}-arm-3.0-large" | |
outputs: | |
available-runners: ${{ matrix.use-codebuild && toJSON(matrix.runs-on-names-cb) || toJSON(matrix.runs-on-names-gh) }} | |
runner-labels: ${{ toJSON(matrix.runner-labels) }} | |
steps: | |
- name: Dump Config | |
run: echo '${{ toJSON(matrix) }}' | |
test: | |
needs: setup | |
runs-on: ${{ fromJSON(needs.setup.outputs.runner-labels)[matrix.os] }} | |
strategy: | |
matrix: | |
os: ${{ fromJSON(needs.setup.outputs.available-runners) }} | |
timeout-minutes: 15 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
- name: Install zlib static on AL2 ARM instances | |
if: matrix.os == 'al2-arm' | |
run: dnf install zlib-static.aarch64 -y | |
- run: make | |
- run: make test-with-coverage | |
- name: Show test coverage | |
run: make show-test-coverage | |
integration: | |
needs: setup | |
runs-on: ${{ fromJSON(needs.setup.outputs.runner-labels)[matrix.os] }} | |
timeout-minutes: 40 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: ${{ fromJSON(needs.setup.outputs.available-runners) }} | |
containerd: ["1.6.34", "1.7.20", "2.0.0-rc.3"] | |
env: | |
DOCKER_BUILD_ARGS: "CONTAINERD_VERSION=${{ matrix.containerd }}" | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
- name: Install zlib static on AL2 ARM instances | |
if: matrix.os == 'al2-arm' | |
run: dnf install zlib-static.aarch64 -y | |
- run: make integration-with-coverage | |
- name: Show test coverage | |
run: make show-integration-coverage |