Files
vagrant-libvirt/.github/workflows/unit-tests.yml
Darragh Bailey ba2c7be494 Handle REXML requires for Ubuntu focal (#1584)
The distribution provided vagrant package on Ubuntu 20.04 is version
2.2.6 running on ruby 2.7.2. It appears that the rexml layout is
slightly different and imports different paths than the current code
expects. Add this combination to the unit tests and switch the requires
to load the specific library requirements instead of relying on rexml
loading everything underneath.

Additionally it appears the hook behaviour change appeared earlier that
the understood vagrant release of 2.2.11, and 2.2.6 also requires the
newer hook behaviour.
2022-09-08 12:44:05 +01:00

142 lines
4.5 KiB
YAML

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
name: CI
on:
push:
branches:
- main
pull_request:
jobs:
test:
runs-on: ubuntu-latest
env:
VAGRANT_LIBVIRT_REQUIRE_SIMPLECOV: "true"
continue-on-error: ${{ matrix.allow_fail }}
strategy:
fail-fast: false
matrix:
# need to define one entry with a single entry for each of the options
# to allow include to expand the matrix correctly.
ruby: [2.6.6]
vagrant: [main]
allow_fail: [true]
include:
- ruby: 2.2.10
vagrant: v2.0.4
allow_fail: false
- ruby: 2.3.5
vagrant: v2.1.5
allow_fail: false
- ruby: 2.4.10
vagrant: v2.2.4
allow_fail: false
- ruby: 2.6.6
vagrant: v2.2.14
allow_fail: false
- ruby: 2.7.2
vagrant: v2.2.10
allow_fail: false
# above block is to ensure compatible with Ubuntu 20.04 vagrant package
# although it uses 2.2.10 it is the earliest version that will install on
# ruby 2.7 without patching
- ruby: 3.0.0
vagrant:
allow_fail: false
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Clone vagrant for ruby 3.0 support
if: ${{ matrix.ruby == '3.0.0' }}
uses: actions/checkout@v2
with:
repository: hashicorp/vagrant
path: .deps/vagrant
ref: f7973f00edb9438d0b36085f210c80af71cfe5c5
- name: Clone ruby-libvirt for ruby 3.0 support
if: ${{ matrix.ruby == '3.0.0' }}
uses: actions/checkout@v2
with:
repository: libvirt/libvirt-ruby
path: .deps/libvirt-ruby
ref: 43444be184e4d877c5ce110ee5475c952d7590f7
- name: Set up libvirt
run: |
sudo apt-get update
sudo apt-get install libvirt-dev
- uses: actions/cache@v2
with:
path: vendor/bundle
key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
restore-keys: |
${{ runner.os }}-gems-
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
- name: Set up rubygems
run: |
gem update --system --conservative || (gem i "rubygems-update:~>2.7" --no-document && update_rubygems)
gem update bundler --conservative
- name: Ensure bundle uses https instead of insecure git
run: |
git config --global url."https://github.com/".insteadOf git://github.com/
- name: Handle additional ruby 3.0 setup
if: ${{ matrix.ruby == '3.0.0' }}
run: |
# ensure vagrant gemspec allows ruby 3.0
pushd .deps/vagrant/
# ensure main branch exists
git checkout -b main
sed -i -e 's@s.required_ruby_version.*=.*@s.required_ruby_version = "~> 3.0"@' vagrant.gemspec
popd
bundle config local.vagrant ${PWD}/.deps/vagrant/
# build gem of latest bindings that contain fix for ruby include path
pushd .deps/libvirt-ruby
rake gem
popd
mkdir -p vendor/bundle/ruby/3.0.0/cache/
cp .deps/libvirt-ruby/pkg/ruby-libvirt-*.gem vendor/bundle/ruby/3.0.0/cache/
# need the following to allow the local provided gem to be used instead of the
# one from rubygems
bundle config set --local disable_checksum_validation true
- name: Run bundler using cached path
run: |
bundle config path vendor/bundle
bundle install --jobs 4 --retry 3
env:
VAGRANT_VERSION: ${{ matrix.vagrant }}
- name: Run tests
run: |
bundle exec rspec --color --format documentation
env:
VAGRANT_VERSION: ${{ matrix.vagrant }}
- name: Coveralls Parallel
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.github_token }}
parallel: true
path-to-lcov: ./coverage/lcov.info
finish:
needs: test
runs-on: ubuntu-latest
steps:
- name: Coveralls Finished
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.github_token }}
parallel-finished: true