Files
vagrant-libvirt/.github/workflows/integration-tests.yml
Darragh Bailey 31cc8aa91e Add basic vagrant package integration test (#1302)
Simple integration test for vagrant package to ensure the execution
completes successfully to allow for some refactoring to be performed.

Ensure libguestfs-tools installed to provide virt-sysprep for tests and
update docs to reflect.
2021-06-01 17:45:02 +01:00

111 lines
2.9 KiB
YAML

name: Integration Tests
on:
push:
branches:
- master
pull_request:
jobs:
generate-matrix:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.generate-matrix.outputs.matrix }}
steps:
- uses: actions/checkout@v2
- name: Generate matrix
id: generate-matrix
run: |
tests="$(awk -f tests/parse_tests.awk < tests/runtests.bats)"
echo "::set-output name=matrix::${tests}"
run-tests:
needs: generate-matrix
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
test_name: ${{ fromJSON(needs.generate-matrix.outputs.matrix) }}
env:
NOKOGIRI_USE_SYSTEM_LIBRARIES: true
VAGRANT_VERSION: v2.2.14
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up libvirt
run: |
sudo apt-get update
sudo apt-get install -y \
bridge-utils \
dnsmasq-base \
ebtables \
libarchive-tools \
libguestfs-tools \
libvirt-clients \
libvirt-daemon \
libvirt-daemon-system \
qemu-kvm \
qemu-utils \
;
sudo apt-get install \
libvirt-dev \
libz-dev \
;
sudo apt-get install \
bats \
fping \
;
# start daemon
sudo systemctl start libvirtd
# add user to group
sudo usermod -a -G libvirt $USER
- uses: actions/cache@v2
with:
path: vendor/bundle
key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
restore-keys: |
${{ runner.os }}-gems-
- uses: actions/cache@v2
with:
path: ~/.vagrant.d/boxes
key: ${{ runner.os }}-${{ env.VAGRANT_VERSION }}
restore-keys: |
${{ runner.os }}-
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.6.6
- name: Set up rubygems
run: |
gem update --system --conservative || (gem i "rubygems-update:~>2.7" --no-document && update_rubygems)
gem update bundler --conservative
- name: Run bundler using cached path
run: |
bundle config path vendor/bundle
bundle install --jobs 4 --retry 3
- name: Install binstubs
run: |
bundle binstubs --all --path=./bin 1>/dev/null
./bin/vagrant --version
- name: Run tests
run: |
mkdir -p $HOME/.vagrant.d/
# use export with full path to avoid needing to resolve ~
export VAGRANT_HOME=$HOME/.vagrant.d
# use software emulation due to lack of nested emulation
cat <<EOF > $HOME/.vagrant.d/Vagrantfile
Vagrant.configure("2") do |config|
config.vm.provider :libvirt do |libvirt|
libvirt.driver = "qemu"
end
end
EOF
# run under libvirt group
sg libvirt -c "bats -f '${{ matrix.test_name }}' ./tests/runtests.bats"