-
Notifications
You must be signed in to change notification settings - Fork 650
CI adjustments #3535
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CI adjustments #3535
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,7 +9,7 @@ on: | |
|
||
jobs: | ||
project: | ||
name: Project Checks | ||
name: checks | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Will now show as |
||
runs-on: ubuntu-24.04 | ||
timeout-minutes: 20 | ||
steps: | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -44,11 +44,13 @@ jobs: | |
- name: "Run unit tests" | ||
run: go test -v ./pkg/... | ||
- name: "Run integration tests" | ||
run: docker run -t --rm --privileged test-integration | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Split the two steps. |
||
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: | ||
runs-on: windows-latest | ||
timeout-minutes: 30 | ||
runs-on: windows-latest | ||
defaults: | ||
run: | ||
shell: bash | ||
|
@@ -74,6 +76,7 @@ jobs: | |
cache: true | ||
check-latest: true | ||
- run: go install ./cmd/nerdctl | ||
- run: go install -v gotest.tools/gotestsum@v1 | ||
# This here is solely to get the cni install script, which has not been modified in 3+ years. | ||
# There is little to no reason to update this to latest containerd | ||
- uses: actions/[email protected] | ||
|
@@ -91,5 +94,6 @@ jobs: | |
ctrdVersion: ${{ env.CONTAINERD_VERSION }} | ||
run: powershell hack/configure-windows-ci.ps1 | ||
- name: "Run integration tests" | ||
# See https://github.com/containerd/nerdctl/blob/main/docs/testing/README.md#about-parallelization | ||
run: go test -p 1 -v ./cmd/nerdctl/... | ||
run: ./hack/test-integration.sh -test.only-flaky=false | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Split the two steps and use gotestsum for better summary |
||
- name: "Run integration tests (flaky)" | ||
run: ./hack/test-integration.sh -test.only-flaky=true |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,13 +10,12 @@ on: | |
paths-ignore: | ||
- '**.md' | ||
|
||
env: | ||
ROOTFUL: true | ||
|
||
jobs: | ||
linux: | ||
runs-on: "ubuntu-24.04" | ||
timeout-minutes: 40 | ||
env: | ||
ROOTFUL: true | ||
steps: | ||
- uses: actions/[email protected] | ||
with: | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,9 +11,14 @@ on: | |
|
||
env: | ||
GO_VERSION: 1.23.x | ||
SHORT_TIMEOUT: 5 | ||
LONG_TIMEOUT: 60 | ||
|
||
jobs: | ||
test-unit: | ||
# Supposed to work: https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/evaluate-expressions-in-workflows-and-actions#example-returning-a-json-data-type | ||
# Apparently does not | ||
# timeout-minutes: ${{ fromJSON(env.SHORT_TIMEOUT) }} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I wish that worked. Anyone has insight? |
||
timeout-minutes: 5 | ||
name: unit | ${{ matrix.goos }} | ||
runs-on: "${{ matrix.os }}" | ||
|
@@ -48,11 +53,12 @@ jobs: | |
working-directory: containerd | ||
run: GOPATH=$(go env GOPATH) script/setup/install-cni-windows | ||
- name: "Run unit tests" | ||
run: go test -v ./pkg/... | ||
run: make test-unit | ||
|
||
test-integration: | ||
timeout-minutes: 60 | ||
name: rootful | ${{ matrix.containerd }} | ${{ matrix.runner }} | ||
runs-on: "${{ matrix.runner }}" | ||
timeout-minutes: 40 | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
|
@@ -95,23 +101,21 @@ jobs: | |
docker run --privileged --rm tonistiigi/binfmt --install linux/arm64 | ||
docker run --privileged --rm tonistiigi/binfmt --install linux/arm/v7 | ||
- name: "Run integration tests" | ||
uses: nick-fields/retry@v3 | ||
with: | ||
timeout_minutes: 30 | ||
max_attempts: 2 | ||
retry_on: error | ||
command: docker run -t --rm --privileged test-integration | ||
run: docker run -t --rm --privileged test-integration ./hack/test-integration.sh -test.only-flaky=false | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Split the two steps. |
||
- name: "Run integration tests (flaky)" | ||
run: docker run -t --rm --privileged test-integration ./hack/test-integration.sh -test.only-flaky=true | ||
|
||
test-integration-ipv6: | ||
timeout-minutes: 60 | ||
name: ipv6 | ${{ matrix.containerd }} | ${{ matrix.ubuntu }} | ||
runs-on: "ubuntu-${{ matrix.ubuntu }}" | ||
timeout-minutes: 40 | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
# ubuntu-20.04: cgroup v1, ubuntu-22.04 and later: cgroup v2 | ||
include: | ||
- ubuntu: 24.04 | ||
containerd: v1.7.23 | ||
containerd: v2.0.0-rc.5 | ||
apostasie marked this conversation as resolved.
Show resolved
Hide resolved
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This was discussed before: we run ipv6 tests only on the latest. |
||
env: | ||
UBUNTU_VERSION: "${{ matrix.ubuntu }}" | ||
CONTAINERD_VERSION: "${{ matrix.containerd }}" | ||
|
@@ -129,7 +133,7 @@ jobs: | |
echo '{"ipv6": true, "fixed-cidr-v6": "2001:db8:1::/64", "experimental": true, "ip6tables": true}' | sudo tee /etc/docker/daemon.json | ||
sudo systemctl restart docker | ||
- name: "Prepare integration test environment" | ||
run: docker build -t test-integration-ipv6 --target test-integration-ipv6 --build-arg UBUNTU_VERSION=${UBUNTU_VERSION} --build-arg CONTAINERD_VERSION=${CONTAINERD_VERSION} . | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No need for the extra stage that has nothing specific. It is just an extra arg. |
||
run: docker build -t test-integration --target test-integration --build-arg UBUNTU_VERSION=${UBUNTU_VERSION} --build-arg CONTAINERD_VERSION=${CONTAINERD_VERSION} . | ||
- name: "Remove snap loopback devices (conflicts with our loopback devices in TestRunDevice)" | ||
run: | | ||
sudo systemctl disable --now snapd.service snapd.socket | ||
|
@@ -147,20 +151,16 @@ jobs: | |
docker run --privileged --rm tonistiigi/binfmt --install linux/arm/v7 | ||
- name: "Run integration tests" | ||
# The nested IPv6 network inside docker and qemu is complex and needs a bunch of sysctl config. | ||
# Therefore it's hard to debug why the IPv6 tests fail in such an isolation layer. | ||
# Therefore, it's hard to debug why the IPv6 tests fail in such an isolation layer. | ||
# On the other side, using the host network is easier at configuration. | ||
# Besides, each job is running on a different instance, which means using host network here | ||
# is safe and has no side effects on others. | ||
uses: nick-fields/retry@v3 | ||
with: | ||
timeout_minutes: 30 | ||
max_attempts: 2 | ||
retry_on: error | ||
command: docker run --network host -t --rm --privileged test-integration-ipv6 | ||
run: docker run --network host -t --rm --privileged test-integration ./hack/test-integration.sh -test.only-ipv6 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nick should go |
||
|
||
test-integration-rootless: | ||
runs-on: "ubuntu-${{ matrix.ubuntu }}" | ||
timeout-minutes: 60 | ||
name: "${{ matrix.target }} | ${{ matrix.containerd }} | ${{ matrix.rootlesskit }} | ${{ matrix.ubuntu }}" | ||
runs-on: "ubuntu-${{ matrix.ubuntu }}" | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
|
@@ -169,24 +169,24 @@ jobs: | |
- ubuntu: 20.04 | ||
containerd: v1.6.36 | ||
rootlesskit: v1.1.1 # Deprecated | ||
target: test-integration-rootless | ||
target: rootless | ||
- ubuntu: 22.04 | ||
containerd: v1.7.23 | ||
rootlesskit: v2.3.1 | ||
target: test-integration-rootless | ||
target: rootless | ||
- ubuntu: 24.04 | ||
containerd: v2.0.0-rc.5 | ||
rootlesskit: v2.3.1 | ||
target: test-integration-rootless | ||
target: rootless | ||
- ubuntu: 24.04 | ||
containerd: v1.7.23 | ||
rootlesskit: v2.3.1 | ||
target: test-integration-rootless-port-slirp4netns | ||
target: rootless-port-slirp4netns | ||
env: | ||
UBUNTU_VERSION: "${{ matrix.ubuntu }}" | ||
CONTAINERD_VERSION: "${{ matrix.containerd }}" | ||
ROOTLESSKIT_VERSION: "${{ matrix.rootlesskit }}" | ||
TEST_TARGET: "${{ matrix.target }}" | ||
TEST_TARGET: "test-integration-${{ matrix.target }}" | ||
steps: | ||
- name: "Set up AppArmor" | ||
if: matrix.ubuntu == '24.04' | ||
|
@@ -226,16 +226,14 @@ jobs: | |
fi | ||
echo "WORKAROUND_ISSUE_622=${WORKAROUND_ISSUE_622}" >> "$GITHUB_ENV" | ||
- name: "Test (network driver=slirp4netns, port driver=builtin)" | ||
uses: nick-fields/retry@v3 | ||
with: | ||
timeout_minutes: 30 | ||
max_attempts: 2 | ||
retry_on: error | ||
command: docker run -t --rm --privileged -e WORKAROUND_ISSUE_622=${WORKAROUND_ISSUE_622} ${TEST_TARGET} | ||
run: docker run -t --rm --privileged -e WORKAROUND_ISSUE_622=${WORKAROUND_ISSUE_622} ${TEST_TARGET} /test-integration-rootless.sh ./hack/test-integration.sh -test.only-flaky=false | ||
- name: "Test (network driver=slirp4netns, port driver=builtin) (flaky)" | ||
run: docker run -t --rm --privileged -e WORKAROUND_ISSUE_622=${WORKAROUND_ISSUE_622} ${TEST_TARGET} /test-integration-rootless.sh ./hack/test-integration.sh -test.only-flaky=true | ||
|
||
cross: | ||
build: | ||
timeout-minutes: 5 | ||
name: "build | ${{ matrix.go-version }}" | ||
runs-on: ubuntu-24.04 | ||
timeout-minutes: 40 | ||
strategy: | ||
matrix: | ||
go-version: ["1.22.x", "1.23.x"] | ||
|
@@ -248,12 +246,13 @@ jobs: | |
go-version: ${{ matrix.go-version }} | ||
cache: true | ||
check-latest: true | ||
- name: "Cross" | ||
- name: "build" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Better display. This is not "cross-compilation" it is building for different versions of go. |
||
run: GO_VERSION="$(echo ${{ matrix.go-version }} | sed -e s/.x//)" make binaries | ||
|
||
test-integration-docker-compatibility: | ||
timeout-minutes: 60 | ||
name: docker | ||
runs-on: ubuntu-24.04 | ||
timeout-minutes: 45 | ||
steps: | ||
- uses: actions/[email protected] | ||
with: | ||
|
@@ -280,26 +279,18 @@ jobs: | |
- name: "Prepare integration test environment" | ||
run: | | ||
sudo apt-get install -y expect | ||
go install -v gotest.tools/gotestsum@v1 | ||
- name: "Ensure that the integration test suite is compatible with Docker" | ||
uses: nick-fields/retry@v3 | ||
with: | ||
timeout_minutes: 30 | ||
max_attempts: 2 | ||
retry_on: error | ||
# See https://github.com/containerd/nerdctl/blob/main/docs/testing/README.md#about-parallelization | ||
command: go test -p 1 -timeout 20m -v -exec sudo ./cmd/nerdctl/... -args -test.target=docker -test.allow-kill-daemon | ||
run: WITH_SUDO=true ./hack/test-integration.sh -test.target=docker | ||
- name: "Ensure that the IPv6 integration test suite is compatible with Docker" | ||
uses: nick-fields/retry@v3 | ||
with: | ||
timeout_minutes: 30 | ||
max_attempts: 2 | ||
retry_on: error | ||
# See https://github.com/containerd/nerdctl/blob/main/docs/testing/README.md#about-parallelization | ||
command: go test -p 1 -timeout 20m -v -exec sudo ./cmd/nerdctl/... -args -test.target=docker -test.allow-kill-daemon -test.only-ipv6 | ||
run: WITH_SUDO=true ./hack/test-integration.sh -test.target=docker -test.only-ipv6 | ||
- name: "Ensure that the integration test suite is compatible with Docker (flaky only)" | ||
run: WITH_SUDO=true ./hack/test-integration.sh -test.target=docker -test.only-flaky | ||
|
||
test-integration-windows: | ||
runs-on: windows-2022 | ||
timeout-minutes: 30 | ||
name: windows | ||
runs-on: windows-2022 | ||
defaults: | ||
run: | ||
shell: bash | ||
|
@@ -313,6 +304,7 @@ jobs: | |
cache: true | ||
check-latest: true | ||
- run: go install ./cmd/nerdctl | ||
- run: go install -v gotest.tools/gotestsum@v1 | ||
- uses: actions/[email protected] | ||
with: | ||
repository: containerd/containerd | ||
|
@@ -326,16 +318,16 @@ jobs: | |
env: | ||
ctrdVersion: 1.7.23 | ||
run: powershell hack/configure-windows-ci.ps1 | ||
# TODO: Run unit tests | ||
- name: "Run integration tests" | ||
# See https://github.com/containerd/nerdctl/blob/main/docs/testing/README.md#about-parallelization | ||
run: go test -p 1 -v ./cmd/nerdctl/... | ||
run: ./hack/test-integration.sh -test.only-flaky=false | ||
- name: "Run integration tests (flaky)" | ||
run: ./hack/test-integration.sh -test.only-flaky=true | ||
|
||
test-integration-freebsd: | ||
timeout-minutes: 60 | ||
name: FreeBSD | ||
# ubuntu-24.04 lacks the vagrant package | ||
runs-on: ubuntu-22.04 | ||
timeout-minutes: 20 | ||
|
||
steps: | ||
- uses: actions/[email protected] | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Will now show as
image / build
instead ofContainer Image Build / build