Test multiple distros #34
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: Tests | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
permissions: | |
contents: read | |
jobs: | |
end-to-end: | |
name: End to end testing | |
timeout-minutes: 45 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- debian/12 | |
- ubuntu/20.04 | |
- ubuntu/22.04 | |
- ubuntu/24.04 | |
runs-on: | |
- self-hosted | |
- cpu-16 | |
- mem-32G | |
- disk-100G | |
- arch-amd64 | |
- image-debian-12 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
sudo apt-get install --no-install-recommends --yes \ | |
ansible \ | |
ceph-base \ | |
ceph-common \ | |
python3-jmespath | |
- name: Setup Incus | |
run: | | |
curl https://pkgs.zabbly.com/get/incus-daily | sudo sh | |
sudo chmod 666 /var/lib/incus/unix.socket | |
incus admin init --auto | |
- name: Setup OpenTofu | |
run: | | |
curl -sL https://get.opentofu.org/install-opentofu.sh -o install-opentofu.sh | |
chmod +x install-opentofu.sh | |
./install-opentofu.sh --install-method deb | |
rm -f install-opentofu.sh | |
- name: Create the test VMs | |
run: | | |
cd terraform | |
tofu init | |
tofu apply -auto-approve -target=module.baremetal -var incus_image=${{ matrix.os }} | |
- name: Waiting for VMs to boot up | |
run: | | |
sleep 1m | |
- name: Workaround for Debian | |
run: | | |
if [ "${{ matrix.os }}" = "debian/12" ]; then | |
export INCUS_PROJECT=dev-incus-deploy | |
for i in server01 server02 server03 server04 server05; do | |
incus exec $i -- sed -i "s/main/main contrib/g" /etc/apt/sources.list | |
incus exec $i -- apt-get update | |
done | |
fi | |
- name: Deploy the test VMs | |
run: | | |
cd ansible | |
cp hosts.yaml.example hosts.yaml | |
ansible-playbook deploy.yaml | |
- name: Post deployment validation | |
run: | | |
export INCUS_PROJECT=dev-incus-deploy | |
incus exec server01 -- incus launch images:debian/12 c1 | |
sleep 30s | |
incus list | |
incus exec server01 -- incus exec c1 -- ping -4 -W1 -c4 linuxcontainers.org | |
incus exec server01 -- incus exec c1 -- ping -6 -W1 -c4 linuxcontainers.org |