diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 982975b37..fa8ee950f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,7 +28,7 @@ jobs: strategy: matrix: - os: [ubuntu-22.04, macos-12, windows-2019] + os: [ubuntu-22.04, actuated-arm64-4cpu-16gb, macos-12, windows-2019] steps: - uses: actions/setup-go@v4 @@ -208,7 +208,7 @@ jobs: strategy: matrix: - os: [ubuntu-22.04, macos-12, windows-2019, windows-2022] + os: [ubuntu-22.04, actuated-arm64-4cpu-16gb, macos-12, windows-2019, windows-2022] go-version: ["1.20.12", "1.21.5"] steps: - uses: actions/setup-go@v4 @@ -396,7 +396,7 @@ jobs: integration-linux: name: Linux Integration - runs-on: ubuntu-22.04 + runs-on: ${{ matrix.os }} timeout-minutes: 40 needs: [project, linters, protos, man] @@ -406,6 +406,7 @@ jobs: runtime: - io.containerd.runc.v2 runc: [runc, crun] + os: [ubuntu-22.04, actuated-arm64-4cpu-16gb] env: GOTEST: gotestsum -- @@ -422,7 +423,7 @@ jobs: RUNC_FLAVOR: ${{ matrix.runc }} run: | sudo apt-get update - sudo apt-get install -y gperf + sudo apt-get install -y gperf dmsetup strace xfsprogs script/setup/install-seccomp script/setup/install-runc script/setup/install-cni $(grep containernetworking/plugins go.mod | awk '{print $2}') @@ -430,6 +431,10 @@ jobs: script/setup/install-failpoint-binaries - name: Install criu + # NOTE: Required actuated enable CONFIG_CHECKPOINT_RESTORE + # + # REF: https://criu.org/Linux_kernel + if: matrix.os != 'actuated-arm64-4cpu-16gb' run: | sudo add-apt-repository -y ppa:criu/ppa sudo apt-get update @@ -514,7 +519,9 @@ jobs: losetup -l - name: Kernel Message if: failure() - run: sudo dmesg -T -f kern + run: | + sudo lsmod + sudo dmesg -T -f kern - uses: actions/upload-artifact@v3 if: always() diff --git a/mount/mount_idmapped_linux_test.go b/mount/mount_idmapped_linux_test.go index 1b21b9492..c18c658c0 100644 --- a/mount/mount_idmapped_linux_test.go +++ b/mount/mount_idmapped_linux_test.go @@ -23,6 +23,7 @@ import ( "syscall" "testing" + kernel "github.com/containerd/containerd/v2/contrib/seccomp/kernelversion" "github.com/containerd/continuity/testutil" "github.com/stretchr/testify/require" "golang.org/x/sys/unix" @@ -45,6 +46,13 @@ var ( func TestGetUsernsFD(t *testing.T) { testutil.RequiresRoot(t) + k512 := kernel.KernelVersion{Kernel: 5, Major: 12} + ok, err := kernel.GreaterEqualThan(k512) + require.NoError(t, err) + if !ok { + t.Skip("GetUsernsFD requires kernel >= 5.12") + } + t.Run("basic", testGetUsernsFDBasic) t.Run("when kill child process before write u[g]id maps", testGetUsernsFDKillChildWhenWriteUGIDMaps) diff --git a/script/setup/install-critools b/script/setup/install-critools index cca11f37e..a9c26bf8a 100755 --- a/script/setup/install-critools +++ b/script/setup/install-critools @@ -25,7 +25,9 @@ script_dir="$(cd -- "$(dirname -- "$0")" > /dev/null 2>&1; pwd -P)" # e2e will fail with "sudo: command not found" SUDO='' if (( $EUID != 0 )); then - SUDO='sudo' + # The actuated ARM64 env needs PATH=$PATH to get `go` path. Otherwise + # `make install` recipe will fail. + SUDO="sudo -E PATH=$PATH" fi cd "$(go env GOPATH)"