mirror of
https://github.com/containers/bootc.git
synced 2026-02-05 06:45:13 +01:00
Synchronized from bootc-dev/infra@e15b9622fc. Signed-off-by: bootc-dev Bot <bot@bootc.dev>
97 lines
4.1 KiB
YAML
97 lines
4.1 KiB
YAML
name: 'Bootc Ubuntu Setup'
|
|
description: 'Default host setup'
|
|
inputs:
|
|
libvirt:
|
|
description: 'Install libvirt and virtualization stack'
|
|
required: false
|
|
default: 'false'
|
|
runs:
|
|
using: 'composite'
|
|
steps:
|
|
# The default runners have TONS of crud on them...
|
|
- name: Free up disk space on runner
|
|
shell: bash
|
|
run: |
|
|
set -xeuo pipefail
|
|
sudo df -h
|
|
# Use globs for package patterns (apt and dpkg both support fnmatch globs)
|
|
unwanted_pkgs=('aspnetcore-*' 'dotnet-*' 'llvm-*' 'php*' 'mongodb-*' 'mysql-*'
|
|
azure-cli google-chrome-stable firefox mono-devel)
|
|
unwanted_dirs=(/usr/share/dotnet /opt/ghc /usr/local/lib/android /opt/hostedtoolcache/CodeQL)
|
|
# Start background removal operations as systemd units; if this causes
|
|
# races in the future around disk space we can look at waiting for cleanup
|
|
# before starting further jobs, but right now we spent a lot of time waiting
|
|
# on the network and scripts and such below, giving these plenty of time to run.
|
|
n=0
|
|
runcleanup() {
|
|
sudo systemd-run -r -u action-cleanup-${n} -- "$@"
|
|
n=$(($n + 1))
|
|
}
|
|
runcleanup docker image prune --all --force
|
|
for x in ${unwanted_dirs[@]}; do
|
|
runcleanup rm -rf "$x"
|
|
done
|
|
# Apt removals in foreground, as we can't parallelize these.
|
|
# Only attempt removal if matching packages are installed.
|
|
for x in ${unwanted_pkgs[@]}; do
|
|
if dpkg -l "$x" >/dev/null 2>&1; then
|
|
/bin/time -f '%E %C' sudo apt-get remove -y "$x"
|
|
fi
|
|
done
|
|
# We really want support for heredocs
|
|
- name: Update podman and install just
|
|
shell: bash
|
|
run: |
|
|
set -eux
|
|
# Require the runner is ubuntu-24.04
|
|
IDV=$(. /usr/lib/os-release && echo ${ID}-${VERSION_ID})
|
|
test "${IDV}" = "ubuntu-24.04"
|
|
# plucky is the next release
|
|
echo 'deb http://azure.archive.ubuntu.com/ubuntu plucky universe main' | sudo tee /etc/apt/sources.list.d/plucky.list
|
|
/bin/time -f '%E %C' sudo apt update
|
|
# skopeo is currently older in plucky for some reason hence --allow-downgrades
|
|
/bin/time -f '%E %C' sudo apt install -y --allow-downgrades crun/plucky podman/plucky skopeo/plucky just
|
|
# This is the default on e.g. Fedora derivatives, but not Debian
|
|
- name: Enable unprivileged /dev/kvm access
|
|
shell: bash
|
|
run: |
|
|
set -xeuo pipefail
|
|
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
|
|
sudo udevadm control --reload-rules
|
|
sudo udevadm trigger --name-match=kvm
|
|
ls -l /dev/kvm
|
|
# Used by a few workflows, but generally useful
|
|
- name: Set architecture variable
|
|
id: set_arch
|
|
shell: bash
|
|
run: echo "ARCH=$(arch)" >> $GITHUB_ENV
|
|
# Install libvirt stack if requested
|
|
- name: Install libvirt and virtualization stack
|
|
if: ${{ inputs.libvirt == 'true' }}
|
|
shell: bash
|
|
run: |
|
|
set -xeuo pipefail
|
|
export BCVK_VERSION=0.10.0
|
|
# see https://github.com/bootc-dev/bcvk/issues/176
|
|
/bin/time -f '%E %C' sudo apt install -y libkrb5-dev pkg-config libvirt-dev genisoimage qemu-utils qemu-kvm virtiofsd libvirt-daemon-system python3-virt-firmware
|
|
# Something in the stack is overriding this, but we want session right now for bcvk
|
|
echo LIBVIRT_DEFAULT_URI=qemu:///session >> $GITHUB_ENV
|
|
td=$(mktemp -d)
|
|
cd $td
|
|
# Install bcvk
|
|
target=bcvk-$(arch)-unknown-linux-gnu
|
|
/bin/time -f '%E %C' curl -LO https://github.com/bootc-dev/bcvk/releases/download/v${BCVK_VERSION}/${target}.tar.gz
|
|
tar xzf ${target}.tar.gz
|
|
sudo install -T ${target} /usr/bin/bcvk
|
|
cd -
|
|
rm -rf "$td"
|
|
|
|
# Also bump the default fd limit as a workaround for https://github.com/bootc-dev/bcvk/issues/65
|
|
sudo sed -i -e 's,^\* hard nofile 65536,* hard nofile 524288,' /etc/security/limits.conf
|
|
- name: Cleanup status
|
|
shell: bash
|
|
run: |
|
|
set -xeuo pipefail
|
|
systemctl list-units 'action-cleanup*'
|
|
df -h
|