Merge pull request #6854 from kzys/cirrus-ci
Move Vagrant-based tests from GitHub Actions to Cirrus CI
This commit is contained in:
commit
8e74f2af00
77
.cirrus.yml
Normal file
77
.cirrus.yml
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
# While Cirrus CI gives open-source projects free 16.0 CPUs,
|
||||||
|
# we use only 2 CPUs x 3 tasks = 6 CPUs since the tests here aren't fully
|
||||||
|
# utilizing multiple CPUs.
|
||||||
|
# https://cirrus-ci.org/faq/#are-there-any-limits
|
||||||
|
#
|
||||||
|
# Undocumented constraints;
|
||||||
|
# - The maximum memory limit is 4G times the number of CPUs.
|
||||||
|
# - The number of CPUs should be multiple of 2.
|
||||||
|
|
||||||
|
task:
|
||||||
|
name: Vagrant
|
||||||
|
|
||||||
|
compute_engine_instance:
|
||||||
|
image_project: cirrus-images
|
||||||
|
image: family/docker-kvm
|
||||||
|
platform: linux
|
||||||
|
nested_virtualization: true
|
||||||
|
cpu: 2
|
||||||
|
memory: 8G
|
||||||
|
|
||||||
|
env:
|
||||||
|
GOTEST: gotestsum --
|
||||||
|
# By default, Cirrus CI doesn't have HOME defined
|
||||||
|
HOME: /root
|
||||||
|
matrix:
|
||||||
|
BOX: fedora/35-cloud-base
|
||||||
|
BOX: rockylinux/8
|
||||||
|
install_libvirt_vagrant_script: |
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y libvirt-daemon libvirt-daemon-system vagrant vagrant-libvirt
|
||||||
|
systemctl enable --now libvirtd
|
||||||
|
|
||||||
|
vagrant_cache:
|
||||||
|
folder: /root/.vagrant.d
|
||||||
|
fingerprint_script: uname -a; cat Vagrantfile
|
||||||
|
|
||||||
|
vagrant_up_script: |
|
||||||
|
vagrant up --no-tty
|
||||||
|
|
||||||
|
integration_script: |
|
||||||
|
vagrant up --provision-with=selinux,install-runc,install-gotestsum,test-integration
|
||||||
|
|
||||||
|
cri_test_script: |
|
||||||
|
vagrant up --provision-with=selinux,install-runc,install-gotestsum,test-cri
|
||||||
|
|
||||||
|
task:
|
||||||
|
name: CGroupsV2 - rootless CRI test
|
||||||
|
|
||||||
|
env:
|
||||||
|
HOME: /root
|
||||||
|
|
||||||
|
compute_engine_instance:
|
||||||
|
image_project: cirrus-images
|
||||||
|
image: family/docker-kvm
|
||||||
|
platform: linux
|
||||||
|
nested_virtualization: true
|
||||||
|
cpu: 2
|
||||||
|
memory: 8G
|
||||||
|
|
||||||
|
install_libvirt_vagrant_script: |
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y libvirt-daemon libvirt-daemon-system vagrant vagrant-libvirt
|
||||||
|
systemctl enable --now libvirtd
|
||||||
|
|
||||||
|
vagrant_cache:
|
||||||
|
folder: /root/.vagrant.d
|
||||||
|
fingerprint_script: uname -a; cat Vagrantfile
|
||||||
|
|
||||||
|
vagrant_up_script: |
|
||||||
|
vagrant up --provision-with=install-rootless-podman --no-tty
|
||||||
|
|
||||||
|
podman_build_script: |
|
||||||
|
# Execute rootless podman to create the UserNS env
|
||||||
|
vagrant ssh -- podman build --target cri-in-userns -t cri-in-userns -f /vagrant/contrib/Dockerfile.test /vagrant
|
||||||
|
|
||||||
|
test_script: |
|
||||||
|
vagrant ssh -- podman run --rm --privileged cri-in-userns
|
103
.github/workflows/ci.yml
vendored
103
.github/workflows/ci.yml
vendored
@ -508,106 +508,3 @@ jobs:
|
|||||||
name: TestResults MacOS
|
name: TestResults MacOS
|
||||||
path: |
|
path: |
|
||||||
*-junit.xml
|
*-junit.xml
|
||||||
|
|
||||||
vagrant:
|
|
||||||
name: Vagrant
|
|
||||||
# nested virtualization is only available on macOS hosts
|
|
||||||
runs-on: macos-10.15
|
|
||||||
timeout-minutes: 45
|
|
||||||
needs: [project, linters, protos, man]
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
# Currently crun is disabled to decrease CI flakiness.
|
|
||||||
# We can enable crun again when we get a better CI infra.
|
|
||||||
runc: [runc]
|
|
||||||
# Fedora is for testing cgroup v2 functionality, Rocky Linux is for testing on an enterprise-grade environment
|
|
||||||
box: ["fedora/35-cloud-base", "rockylinux/8"]
|
|
||||||
env:
|
|
||||||
GOTEST: gotestsum --
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: "Cache ~/.vagrant.d/boxes"
|
|
||||||
uses: actions/cache@v2
|
|
||||||
with:
|
|
||||||
path: ~/.vagrant.d/boxes
|
|
||||||
key: vagrant-${{ hashFiles('Vagrantfile*') }}
|
|
||||||
|
|
||||||
- name: Vagrant start
|
|
||||||
env:
|
|
||||||
BOX: ${{ matrix.box }}
|
|
||||||
run: |
|
|
||||||
if [ "$BOX" = "rockylinux/8" ]; then
|
|
||||||
# The latest version 5.0.0 seems 404 (as of March 30, 2022)
|
|
||||||
export BOX_VERSION="4.0.0"
|
|
||||||
fi
|
|
||||||
# Retry if it fails (download.fedoraproject.org returns 404 sometimes)
|
|
||||||
vagrant up || vagrant up
|
|
||||||
|
|
||||||
- name: Integration
|
|
||||||
env:
|
|
||||||
RUNC_FLAVOR: ${{ matrix.runc }}
|
|
||||||
SELINUX: Enforcing
|
|
||||||
GOTESTSUM_JUNITFILE: /tmp/test-integration-junit.xml
|
|
||||||
run: vagrant up --provision-with=selinux,install-runc,install-gotestsum,test-integration
|
|
||||||
|
|
||||||
- name: CRI test
|
|
||||||
env:
|
|
||||||
RUNC_FLAVOR: ${{ matrix.runc }}
|
|
||||||
SELINUX: Enforcing
|
|
||||||
REPORT_DIR: /tmp/critestreport
|
|
||||||
run: vagrant up --provision-with=selinux,install-runc,install-gotestsum,test-cri
|
|
||||||
|
|
||||||
- name: Collect the VM's IP address for Docker Hub's throttling issue
|
|
||||||
if: failure()
|
|
||||||
run: vagrant ssh -- curl https://api64.ipify.org/
|
|
||||||
|
|
||||||
- name: Get test reports
|
|
||||||
if: always()
|
|
||||||
run: |
|
|
||||||
set -e
|
|
||||||
vagrant plugin install vagrant-vbguest
|
|
||||||
vagrant plugin install vagrant-scp
|
|
||||||
vagrant scp :/tmp/test-integration-junit.xml "${{ github.workspace }}/"
|
|
||||||
vagrant scp :/tmp/critestreport "${{ github.workspace }}/critestreport"
|
|
||||||
- uses: actions/upload-artifact@v2
|
|
||||||
if: always()
|
|
||||||
with:
|
|
||||||
# ${{ matrix.box }} cannot be used here due to character limitation
|
|
||||||
name: TestResults vagrant ${{ github.run_id }} ${{ matrix.runtime }} ${{matrix.runc}}
|
|
||||||
path: |
|
|
||||||
${{github.workspace}}/*-junit.xml
|
|
||||||
${{github.workspace}}/critestreport/*
|
|
||||||
|
|
||||||
cgroup2-misc:
|
|
||||||
name: CGroupsV2 - rootless CRI test
|
|
||||||
# nested virtualization is only available on macOS hosts
|
|
||||||
runs-on: macos-10.15
|
|
||||||
timeout-minutes: 45
|
|
||||||
needs: [project, linters, protos, man]
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: "Cache ~/.vagrant.d/boxes"
|
|
||||||
uses: actions/cache@v2
|
|
||||||
with:
|
|
||||||
path: ~/.vagrant.d/boxes
|
|
||||||
key: vagrant-${{ hashFiles('Vagrantfile*') }}
|
|
||||||
|
|
||||||
- name: Vagrant start
|
|
||||||
run: |
|
|
||||||
# Retry if it fails (download.fedoraproject.org returns 404 sometimes)
|
|
||||||
vagrant up || vagrant up
|
|
||||||
|
|
||||||
# slow, so separated from the regular cgroup2 task
|
|
||||||
- name: CRI-in-UserNS test with Rootless Podman
|
|
||||||
run: |
|
|
||||||
vagrant up --provision-with=install-rootless-podman
|
|
||||||
# Execute rootless podman to create the UserNS env
|
|
||||||
vagrant ssh -- podman build --target cri-in-userns -t cri-in-userns -f /vagrant/contrib/Dockerfile.test /vagrant
|
|
||||||
vagrant ssh -- podman run --rm --privileged cri-in-userns
|
|
||||||
|
|
||||||
- name: Collect the VM's IP address for Docker Hub's throttling issue
|
|
||||||
if: failure()
|
|
||||||
run: vagrant ssh -- curl https://api64.ipify.org/
|
|
||||||
|
6
Vagrantfile
vendored
6
Vagrantfile
vendored
@ -19,17 +19,23 @@
|
|||||||
Vagrant.configure("2") do |config|
|
Vagrant.configure("2") do |config|
|
||||||
config.vm.box = ENV["BOX"] || "fedora/35-cloud-base"
|
config.vm.box = ENV["BOX"] || "fedora/35-cloud-base"
|
||||||
config.vm.box_version = ENV["BOX_VERSION"]
|
config.vm.box_version = ENV["BOX_VERSION"]
|
||||||
|
|
||||||
memory = 4096
|
memory = 4096
|
||||||
cpus = 2
|
cpus = 2
|
||||||
|
disk_size = 60
|
||||||
config.vm.provider :virtualbox do |v|
|
config.vm.provider :virtualbox do |v|
|
||||||
v.memory = memory
|
v.memory = memory
|
||||||
v.cpus = cpus
|
v.cpus = cpus
|
||||||
|
v.disk :disk, size: "#{disk_size}GB", primary: true
|
||||||
end
|
end
|
||||||
config.vm.provider :libvirt do |v|
|
config.vm.provider :libvirt do |v|
|
||||||
v.memory = memory
|
v.memory = memory
|
||||||
v.cpus = cpus
|
v.cpus = cpus
|
||||||
|
v.machine_virtual_size = disk_size
|
||||||
end
|
end
|
||||||
|
|
||||||
|
config.vm.provision 'shell', path: 'script/resize-vagrant-root.sh'
|
||||||
|
|
||||||
# Disabled by default. To run:
|
# Disabled by default. To run:
|
||||||
# vagrant up --provision-with=upgrade-packages
|
# vagrant up --provision-with=upgrade-packages
|
||||||
# To upgrade only specific packages:
|
# To upgrade only specific packages:
|
||||||
|
40
script/resize-vagrant-root.sh
Executable file
40
script/resize-vagrant-root.sh
Executable file
@ -0,0 +1,40 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright The containerd Authors.
|
||||||
|
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
set -eu -o pipefail
|
||||||
|
|
||||||
|
# Rocky Linux doesn't have growpart by default.
|
||||||
|
(growpart -h > /dev/null) || dnf -y install cloud-utils-growpart
|
||||||
|
|
||||||
|
df_line=$(df -T / | grep '^/dev/')
|
||||||
|
if [[ "$df_line" =~ ^/dev/([a-z]+)([0-9+]) ]]; then
|
||||||
|
dev="${BASH_REMATCH[1]}"
|
||||||
|
part="${BASH_REMATCH[2]}"
|
||||||
|
growpart "/dev/$dev" "$part"
|
||||||
|
|
||||||
|
fstype=$(echo "$df_line" | awk '{print $2}')
|
||||||
|
if [[ "$fstype" = 'btrfs' ]]; then
|
||||||
|
btrfs filesystem resize max /
|
||||||
|
elif [[ "$fstype" = 'xfs' ]]; then
|
||||||
|
xfs_growfs -d /
|
||||||
|
else
|
||||||
|
echo "Unknown filesystem: $df_line"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Failed to parse: $df_line"
|
||||||
|
exit 1
|
||||||
|
fi
|
Loading…
Reference in New Issue
Block a user