Refactoring to Ansible Collection #115
Workflow file for this run
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: | |
- centos/9-Stream | |
- 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: Deploy the test VMs | |
run: | | |
if [ "${{ matrix.os }}" = "centos/9-Stream" ]; then | |
inventory_file=inventories/baremetal-centos.yaml | |
else | |
inventory_file=inventories/baremetal.yaml | |
fi | |
ansible-playbook -i $inventory_file playbooks/update_packages.yaml | |
if [ "${{ matrix.os }}" = "ubuntu/20.04" ]; then | |
# Ubuntu 20.04's OVN is too old. | |
sed -i "s/ovn_release:.*/ovn_release: \"ppa\"/g" $inventory_file | |
elif [ "${{ matrix.os }}" = "debian/12" ]; then | |
# ZFS on Debian needs compiling which is slow, use btrfs instead | |
sed -i "s/driver: zfs/driver: btrfs/g" $inventory_file | |
fi | |
ansible-playbook -i $inventory_file -v 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 |