Skip to content

Commit

Permalink
github: switch to use lxc
Browse files Browse the repository at this point in the history
vagrant on macos is fragile recently, try to use lxc.

Signed-off-by: Kentaro Hayashi <[email protected]>
  • Loading branch information
kenhys committed Dec 6, 2023
1 parent e18a591 commit 569d709
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 45 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/apt.yml
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ jobs:
test:
name: Test
needs: build
runs-on: macos-latest
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
Expand All @@ -112,5 +112,5 @@ jobs:
- uses: actions/download-artifact@master
with:
name: packages-apt-source-${{ matrix.distribution }}
- name: Run Test
- name: Run Test
run: fluent-package/apt/systemd-test/test.sh ${{ matrix.distribution }}
2 changes: 1 addition & 1 deletion .github/workflows/yum.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ jobs:
test:
name: Test
needs: build
runs-on: macos-latest
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
Expand Down
54 changes: 33 additions & 21 deletions fluent-package/apt/systemd-test/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,28 @@ if [ -z $1 ]; then
fi

vm=$1
dir="/vagrant/fluent-package/apt/systemd-test"
dir="/host/fluent-package/apt/systemd-test"

vagrant status $vm | grep -E "^${vm}\s+not created (.*)$"
if [ $? -ne 0 ]; then
echo "Error: The VM already exists. Need to destroy it in advance with the following command."
echo "$ vagrant destroy $vm"
exit 1
fi
lxc image list images

case $vm in
debian-bullseye)
image="images:debian/11"
;;
debian-bookworm)
image="images:debian/12"
;;
ubuntu-focal)
image="ubuntu:20.04"
;;
ubuntu-jammy)
image="ubuntu:20.04"
;;
*)
echo "Error: No mapping to lxc images."
exit 1
;;
esac

set -eu

Expand All @@ -32,24 +46,22 @@ fi

for apt_repo_type in local v5 lts; do
echo -e "\nRun test: $apt_repo_type\n"
vagrant up $vm
vagrant ssh $vm -- $dir/setup.sh
vagrant ssh $vm -- $dir/install-newly.sh $apt_repo_type
vagrant destroy -f $vm
lxc launch $image target
lxc config device add target host disk source=$PWD path=/host
lxc exec target -- $dir/setup.sh
lxc exec tartet -- $dir/install-newly.sh $apt_repo_type
lxc stop target
lxc delete target
done

for test_filename in ${test_filenames[@]}; do
echo -e "\nRun test: $test_filename\n"
vagrant up $vm
vagrant ssh $vm -- $dir/setup.sh
vagrant ssh $vm -- $dir/$test_filename
vagrant destroy -f $vm
# I want to use snapshot instead of destorying it for every test,
# but somehow, it will be often an error on GitHub Actions...
# $ vagrant ssh $vm -- $dir/setup.sh
# $ vagrant snapshot save -f $vm after-setup
# (execute a test)
# $ vagrant snapshot restore $vm after-setup
lxc launch $image target
lxc config device add target host disk source=$PWD path=/host
lxc exec target -- $dir/setup.sh
lxc exec tartet -- $dir/$test_filename
lxc stop target
lxc delete target
done

echo -e "\nAll Success!\n"
58 changes: 37 additions & 21 deletions fluent-package/yum/systemd-test/test.sh
Original file line number Diff line number Diff line change
@@ -1,20 +1,37 @@
#!/bin/bash

if [ -z $1 ]; then
echo "Error: Need to specify VM name in the Vagrantfile."
echo "Ex.) $ ./test.sh almalinux-9"
echo "Error: Need to specify distribution name."
echo "Ex.) $ ./test.sh centos-7"
exit 1
fi

vm=$1
dir="/vagrant/fluent-package/yum/systemd-test"

vagrant status $vm | grep -E "^${vm}\s+not created (.*)$"
if [ $? -ne 0 ]; then
echo "Error: The VM already exists. Need to destroy it in advance with the following command."
echo "$ vagrant destroy $vm"
exit 1
fi
dir="/host/fluent-package/yum/systemd-test"

lxc image list images

case $vm in
centos-7)
image="images:centos/7"
;;
rockylinux-8)
image="images:rockylinux/8"
;;
almalinux-9)
image="images:almalinux/9"
;;
amazonlinux-2)
image="images:amazonlinux/2"
;;
amazonlinux-2023)
image="images:amazonlinux/2023"
;;
*)
echo "Error: No mapping to lxc images."
exit 1
;;
esac

set -eu

Expand All @@ -26,21 +43,20 @@ test_filenames=(

for yum_repo_type in local v5 lts; do
echo -e "\nRun test: $yum_repo_type\n"
vagrant up $vm
vagrant ssh $vm -- $dir/install-newly.sh $yum_repo_type
vagrant destroy -f $vm
lxc launch $image target
lxc config device add target host disk source=$PWD path=/host
lxc exec tartet -- $dir/install-newly.sh $yum_repo_type
lxc stop target
lxc delete target
done

for test_filename in ${test_filenames[@]}; do
echo -e "\nRun test: $test_filename\n"
vagrant up $vm
vagrant ssh $vm -- $dir/$test_filename
vagrant destroy -f $vm
# I want to use snapshot instead of destroying it for every test,
# but somehow, it will be often an error on GitHub Actions...
# $ vagrant snapshot save -f $vm after-setup
# (execute a test)
# $ vagrant snapshot restore $vm after-setup
lxc launch $image target
lxc config device add target host disk source=$PWD path=/host
lxc exec tartet -- $dir/$test_filename
lxc stop target
lxc delete target
done

echo -e "\nAll Success!\n"

0 comments on commit 569d709

Please sign in to comment.