[DNM] Test criu-dev failures #8773
Workflow file for this run
This file contains hidden or 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
| # NOTE Github Actions execution environments lack a terminal, needed for | |
| # some integration tests. So we use `script` command to fake a terminal. | |
| name: ci | |
| on: | |
| push: | |
| tags: | |
| - v* | |
| branches: | |
| - main | |
| - release-* | |
| pull_request: | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| env: | |
| # Don't ignore C warnings. Note that the output of "go env CGO_CFLAGS" by default is "-g -O2", so we keep them. | |
| CGO_CFLAGS: -g -O2 -Werror | |
| jobs: | |
| test: | |
| timeout-minutes: 30 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-24.04] | |
| go-version: [1.25.x] | |
| rootless: [""] | |
| race: ["-race", ""] | |
| criu: ["", "003fe3223a67df4bb9a1c785d4f4a02a6075b30f"] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: checkout | |
| uses: actions/checkout@v5 | |
| - name: Show host info | |
| run: | | |
| set -x | |
| # Sync `set -x` outputs with command ouputs | |
| exec 2>&1 | |
| # Version | |
| uname -a | |
| cat /etc/os-release | |
| # Hardware | |
| cat /proc/cpuinfo | |
| free -mt | |
| # cgroup | |
| ls -F /sys/fs/cgroup | |
| cat /proc/self/cgroup | |
| if [ -e /sys/fs/cgroup/cgroup.controllers ]; then | |
| cat /sys/fs/cgroup/cgroup.controllers | |
| cat /sys/fs/cgroup/cgroup.subtree_control | |
| ls -F /sys/fs/cgroup$(grep -oP '0::\K.*' /proc/self/cgroup) | |
| fi | |
| # kernel config | |
| script/check-config.sh | |
| - name: install deps | |
| run: | | |
| sudo apt update | |
| sudo apt -y install libseccomp-dev sshfs uidmap | |
| - name: install CRIU | |
| if: ${{ matrix.criu == '' }} | |
| env: | |
| PREFIX: https://download.opensuse.org/repositories/devel:/tools:/criu/xUbuntu | |
| run: | | |
| REPO=${PREFIX}_$(. /etc/os-release && echo $VERSION_ID) | |
| curl -fSsLl $REPO/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/devel_tools_criu.gpg > /dev/null | |
| echo "deb $REPO/ /" | sudo tee /etc/apt/sources.list.d/criu.list | |
| sudo apt update | |
| sudo apt -y install criu | |
| - name: install CRIU (${{ matrix.criu }}) | |
| if: ${{ matrix.criu != '' }} | |
| run: | | |
| sudo apt -qy install \ | |
| libcap-dev libnet1-dev libnl-3-dev uuid-dev \ | |
| libprotobuf-c-dev libprotobuf-dev protobuf-c-compiler protobuf-compiler \ | |
| strace | |
| git clone --depth 1 --revision ${{ matrix.criu }} \ | |
| https://github.com/checkpoint-restore/criu.git ~/criu | |
| (cd ~/criu && sudo make -j $(nproc) install-criu) | |
| rm -rf ~/criu | |
| - name: install go ${{ matrix.go-version }} | |
| uses: actions/setup-go@v6 | |
| with: | |
| go-version: ${{ matrix.go-version }} | |
| check-latest: true | |
| - name: build | |
| run: sudo -E PATH="$PATH" make EXTRA_FLAGS="${{ matrix.race }}" all | |
| - name: Setup Bats and bats libs | |
| uses: bats-core/[email protected] | |
| with: | |
| bats-version: 1.11.1 # Known as BATS_VERSION in other places. | |
| support-install: false | |
| assert-install: false | |
| detik-install: false | |
| file-install: false | |
| - name: Allow userns for runc | |
| # https://discourse.ubuntu.com/t/ubuntu-24-04-lts-noble-numbat-release-notes/39890#unprivileged-user-namespace-restrictions-15 | |
| if: startsWith(matrix.os, 'ubuntu-24.04') | |
| run: | | |
| sed "s;^profile runc /usr/sbin/;profile runc-test $PWD/;" < /etc/apparmor.d/runc | sudo apparmor_parser | |
| - name: unit test | |
| if: matrix.rootless != 'rootless' | |
| run: sudo -E PATH="$PATH" -- make TESTFLAGS="${{ matrix.race }}" localunittest | |
| - name: add rootless user | |
| if: matrix.rootless == 'rootless' | |
| run: | | |
| ./script/setup_rootless.sh | |
| sudo chmod a+X $HOME # for Ubuntu 22.04 and later | |
| - name: integration test (fs driver) | |
| run: | | |
| criu --version | |
| sudo -E PATH="$PATH" script -e -c 'make local${{ matrix.rootless }}integration' |