CI #1036
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: CI | |
on: | |
pull_request: | |
push: | |
merge_group: | |
schedule: | |
- cron: '0 0 * * *' # Every day at midnight | |
jobs: | |
checks: | |
name: Checks | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 20 | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: arduino/setup-protoc@v2 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- run: cargo check --examples --tests --all-targets | |
- run: cargo check --examples --tests --all-targets --all-features | |
- run: rustup toolchain install nightly --component rustfmt | |
- run: cargo +nightly fmt --all -- --check --files-with-diff | |
- run: cargo clippy --all-targets -- -D warnings | |
- run: cargo clippy --all-targets --all-features -- -D warnings | |
- run: cargo doc --no-deps | |
env: | |
RUSTDOCFLAGS: -Dwarnings | |
tests: | |
name: Tests | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 15 | |
strategy: | |
matrix: | |
os: [ubuntu-latest, macos-latest] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: arduino/setup-protoc@v2 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- env: | |
# runc::tests::test_exec needs $XDG_RUNTIME_DIR to be set | |
XDG_RUNTIME_DIR: /tmp/dummy-xdr | |
run: | | |
# runc-shim::cgroup::test_add_cgroup needs root permission to set cgroup | |
mkdir -p /tmp/dummy-xdr | |
export PROTOC=$(which protoc) | |
sudo -E $(command -v cargo) test | |
sudo -E $(command -v cargo) test --all-features | |
# Collect build timings | |
# See https://blog.rust-lang.org/2022/04/07/Rust-1.60.0.html#cargo---timings | |
timings: | |
name: Timings | |
runs-on: ubuntu-latest | |
timeout-minutes: 15 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: arduino/setup-protoc@v2 | |
with: | |
repo-token: ${{ secrets.GITHUB_TOKEN }} | |
- run: cargo build --all-features --timings | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: cargo-timing | |
path: target/cargo-timings/cargo-timing.html | |
if-no-files-found: error | |
deny: | |
name: Deny | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: EmbarkStudios/cargo-deny-action@v1 | |
integration: | |
name: Integration | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 40 | |
strategy: | |
matrix: | |
os: [ubuntu-20.04, ubuntu-22.04] | |
containerd: [v1.6.21, v1.7.1] | |
steps: | |
- name: Checkout extensions | |
uses: actions/checkout@v3 | |
- uses: actions/setup-go@v4 | |
with: | |
go-version: '1.20.4' | |
- name: Checkout containerd | |
uses: actions/checkout@v3 | |
with: | |
repository: containerd/containerd | |
path: src/github.com/containerd/containerd | |
ref: ${{ matrix.containerd }} | |
- name: Install containerd | |
env: | |
GOFLAGS: -modcacherw | |
CGO_ENABLED: 1 | |
run: | | |
# Install containerd dependencies first | |
sudo apt-get install -y gperf | |
sudo -E PATH=$PATH script/setup/install-seccomp | |
sudo -E PATH=$PATH script/setup/install-runc | |
sudo -E PATH=$PATH script/setup/install-cni $(grep containernetworking/plugins go.mod | awk '{print $2}') | |
# Install containerd | |
make bin/containerd GO_BUILD_FLAGS="-mod=vendor" BUILDTAGS="no_btrfs no_devmapper" | |
sudo -E PATH=$PATH install bin/containerd /usr/local/bin/ | |
working-directory: src/github.com/containerd/containerd | |
- name: Install shim | |
run: | | |
cargo build --release --bin containerd-shim-runc-v2-rs | |
sudo install -D ./target/release/containerd-shim-runc-v2-rs /usr/local/bin/ | |
- name: Integration | |
env: | |
GOPROXY: direct | |
TEST_RUNTIME: "io.containerd.runc.v2-rs" | |
TESTFLAGS_PARALLEL: 1 | |
EXTRA_TESTFLAGS: "-no-criu -test.skip='(TestContainerPTY|TestContainerExecLargeOutputWithTTY|TestTaskUpdate|TestTaskResize)'" | |
TESTFLAGS_RACE: "-race" | |
run: sudo -E PATH=$PATH make integration | |
working-directory: src/github.com/containerd/containerd |