Skip to content

[WIP] CI, build NEXT #2620

[WIP] CI, build NEXT

[WIP] CI, build NEXT #2620

Workflow file for this run

# This pipeline purpose is solely meant to run a subset of our test suites against upcoming or unreleased dependencies versions
name: canary
on:
push:
branches:
- main
- 'release/**'
pull_request:
paths-ignore:
- '**.md'
env:
GO_VERSION: canary
GOTOOLCHAIN: local
GO_INSTALL_DESTINATION: /opt
GOOS: linux
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
linux:
runs-on: ubuntu-24.04
timeout-minutes: 40
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: "Setup environment"
run: |
# Get latest canary go version
export GO_VERSION=$(make install-go-resolve-version)
# Build integration image with updated dependencies
. ./hack/build-integration-canary.sh
LOG_LEVEL=info canary::build::integration
- name: "Remove snap loopback devices (conflicts with our loopback devices in TestRunDevice)"
run: |
sudo systemctl disable --now snapd.service snapd.socket
sudo apt-get purge -qq snapd
sudo losetup -Dv
sudo losetup -lv
- name: "Register QEMU (tonistiigi/binfmt)"
run: |
# `--install all` will only install emulation for architectures that cannot be natively executed
# Since some arm64 platforms do provide native fallback execution for 32 bits,
# armv7 emulation may or may not be installed, causing variance in the result of `uname -m`.
# To avoid that, we explicitly list the architectures we do want emulation for.
docker run --privileged --rm tonistiigi/binfmt --install linux/amd64
docker run --privileged --rm tonistiigi/binfmt --install linux/arm64
docker run --privileged --rm tonistiigi/binfmt --install linux/arm/v7
- name: "Run unit tests"
run: go test -v ./pkg/...
- name: "Run integration tests"
run: docker run -t --rm --privileged test-integration ./hack/test-integration.sh -test.only-flaky=false
- name: "Run integration tests (flaky)"
run: docker run -t --rm --privileged test-integration ./hack/test-integration.sh -test.only-flaky=true
windows:
timeout-minutes: 40
runs-on: windows-2022
env:
GOOS: windows
defaults:
run:
shell: bash
steps:
- name: "Clone"
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: "Setup go environment"
run: |
echo "GO_VERSION=$(make install-go-resolve-version)" >> "$GITHUB_ENV"
echo "PATH=$GO_INSTALL_DESTINATION/go/bin:$HOME/go/bin:$PATH" >> "$GITHUB_ENV"
- name: "Cache go"
uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2
id: cache-go
with:
path: /opt/go
key: golang-${{ env.GOOS }}-${{ env.GO_VERSION }}
- if: ${{ steps.cache-go.outputs.cache-hit != 'true' }}
name: "Setup go"
continue-on-error: false
run: make install-go
- name: "Cache dev-tools"
uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2
id: cache-go-dev
with:
path: ~/go/bin
key: golang-dev-${{ env.GOOS }}-${{ env.GO_VERSION }}-${{ hashFiles('Makefile') }}
- if: ${{ steps.cache-go-dev.outputs.cache-hit != 'true' }}
name: "Setup dev tools"
continue-on-error: false
run: make install-dev-tools
- name: "Setup CNI & containerd"
run: |
# CNI install script has not been modified in 3+ years.
# There is little to no reason to update this to latest containerd
curl -fsSLO https://raw.githubusercontent.com/containerd/containerd/refs/tags/v1.7.25/script/setup/install-cni-windows
GOPATH=$(go env GOPATH) ./install-cni-windows
# Setup nerdctl
go install ./cmd/nerdctl
# Get latest tagged containerd
args=(curl --proto '=https' --tlsv1.2 -fsSL -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28")
[ "${GITHUB_TOKEN:-}" == "" ] && {
echo "GITHUB_TOKEN is not set - you might face rate limitations with the Github API"
} || args+=(-H "Authorization: Bearer $GITHUB_TOKEN")
ctd_v="$("${args[@]}" https://api.github.com/repos/containerd/containerd/tags | jq -rc .[0].name)"
ctrdVersion="${ctd_v:1}" powershell hack/configure-windows-ci.ps1
- name: "Run unit tests"
run: go test -v ./pkg/...
- name: "Run integration tests"
run: ./hack/test-integration.sh -test.only-flaky=false
- name: "Run integration tests (flaky)"
run: ./hack/test-integration.sh -test.only-flaky=true