mirror of
https://github.com/containerd/containerd.git
synced 2026-06-30 19:58:29 +00:00
142 lines
5.4 KiB
YAML
142 lines
5.4 KiB
YAML
name: E2E
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
k8s_version:
|
|
description: 'Kubernetes branch or tag to test against'
|
|
required: false
|
|
default: 'master'
|
|
type: string
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
node-e2e-k8s:
|
|
name: Kubernetes Node
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 90
|
|
steps:
|
|
- name: Clean up disk space
|
|
run: |
|
|
df -h
|
|
sudo rm -rf /usr/share/dotnet \
|
|
/usr/local/graalvm \
|
|
/usr/local/.ghcup \
|
|
/usr/local/share/powershell \
|
|
/usr/local/share/chromium \
|
|
/usr/local/share/firefox \
|
|
/usr/local/lib/android \
|
|
/usr/local/lib/node_modules \
|
|
/usr/local/share/podman \
|
|
/usr/local/aws-cli/ \
|
|
/usr/local/lib/heroku \
|
|
/usr/local/rustup \
|
|
/usr/local/cargo \
|
|
/usr/local/google-cloud-sdk
|
|
df -h
|
|
|
|
- name: Checkout containerd
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
with:
|
|
path: src/github.com/containerd/containerd
|
|
fetch-depth: 0
|
|
|
|
- name: Checkout Kubernetes
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
with:
|
|
repository: kubernetes/kubernetes
|
|
path: src/k8s.io/kubernetes
|
|
ref: ${{ inputs.k8s_version }}
|
|
fetch-depth: 0
|
|
|
|
- name: Install Go
|
|
uses: ./src/github.com/containerd/containerd/.github/actions/install-go
|
|
|
|
- name: Set Up Environment
|
|
run: |
|
|
set -e -x
|
|
# Disable swap to allow kubelet to start.
|
|
sudo swapoff -a
|
|
sudo apt-get update
|
|
sudo apt-get install -y gperf build-essential pkg-config
|
|
echo "GOPATH=${{ github.workspace }}" >> $GITHUB_ENV
|
|
echo "${{ github.workspace }}/bin" >> $GITHUB_PATH
|
|
|
|
- name: Build and Install containerd
|
|
working-directory: ./src/github.com/containerd/containerd
|
|
run: |
|
|
set -e -x
|
|
script/setup/install-seccomp
|
|
script/setup/install-runc
|
|
script/setup/install-cni $(grep containernetworking/plugins go.mod | awk '{print $2}')
|
|
make binaries GO_BUILD_FLAGS="-mod=vendor"
|
|
sudo make install
|
|
|
|
- name: Configure and Start containerd
|
|
run: |
|
|
set -e -x
|
|
# Stop and disable pre-existing containerd service to ensure a clean state.
|
|
if sudo systemctl is-active --quiet containerd; then
|
|
sudo systemctl stop containerd
|
|
fi
|
|
if sudo systemctl is-enabled --quiet containerd; then
|
|
sudo systemctl disable containerd
|
|
fi
|
|
|
|
sudo mkdir -p /etc/containerd
|
|
sudo tee /etc/containerd/config.toml > /dev/null <<EOF
|
|
version = 2
|
|
required_plugins = ["io.containerd.grpc.v1.cri"]
|
|
[plugins."io.containerd.grpc.v1.cri".containerd]
|
|
default_runtime_name = "runc"
|
|
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
|
|
runtime_type = "io.containerd.runc.v2"
|
|
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
|
|
# Ensure containerd uses the runc binary installed from source.
|
|
BinaryName = "/usr/local/sbin/runc"
|
|
SystemdCgroup = true
|
|
# Required for certain node e2e tests.
|
|
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.test-handler]
|
|
runtime_type = "io.containerd.runc.v2"
|
|
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.test-handler.options]
|
|
# Ensure containerd uses the runc binary installed from source.
|
|
BinaryName = "/usr/local/sbin/runc"
|
|
SystemdCgroup = true
|
|
EOF
|
|
|
|
sudo cp ./src/github.com/containerd/containerd/containerd.service /etc/systemd/system/
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl start containerd
|
|
|
|
# Wait and verify the daemon is ready.
|
|
sleep 5
|
|
sudo ctr version
|
|
|
|
- name: Run Node E2E Tests
|
|
working-directory: ./src/k8s.io/kubernetes
|
|
run: |
|
|
sudo make test-e2e-node \
|
|
FOCUS='\[NodeConformance\]|\[Feature:.+\]|\[Feature\]' \
|
|
SKIP='\[Flaky\]|\[Slow\]|\[Serial\]|\[Feature:UserNamespacesSupport\]|\[Feature:PodLifecycleSleepActionAllowZero\]|\[Feature:UserNamespacesPodSecurityStandards\]|\[Feature:KubeletCredentialProviders\]|\[Feature:LockContention\]|\[Feature:SCTPConnectivity\]|\[Alpha\]' \
|
|
TEST_ARGS='--feature-gates=PodAndContainerStatsFromCRI=true --kubelet-flags="--cgroup-driver=systemd --cgroups-per-qos=true --cgroup-root=/ --runtime-cgroups=/system.slice/containerd.service --feature-gates=PodAndContainerStatsFromCRI=true"'
|
|
|
|
- name: Collect Logs on Failure
|
|
if: failure()
|
|
run: |
|
|
ARTIFACT_DIR=./_artifacts
|
|
mkdir -p ${ARTIFACT_DIR}
|
|
KUBELET_LOG_SRC=$(sudo find /tmp/_artifacts -name "kubelet.log" | head -n 1)
|
|
if [ -f "$KUBELET_LOG_SRC" ]; then
|
|
sudo cp "$KUBELET_LOG_SRC" "${ARTIFACT_DIR}/kubelet.log"
|
|
else
|
|
echo "Kubelet log file not found." > "${ARTIFACT_DIR}/kubelet.log"
|
|
fi
|
|
sudo journalctl -u containerd --no-pager > "${ARTIFACT_DIR}/containerd.log"
|
|
|
|
- name: Upload Log Artifacts
|
|
if: failure()
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
with:
|
|
name: e2e-logs
|
|
path: ./_artifacts/
|