-
Notifications
You must be signed in to change notification settings - Fork 0
124 lines (117 loc) · 3.93 KB
/
unit-tests.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# 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: [3.1]
vagrant: [main]
allow_fail: [true]
include:
- 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.1
vagrant:
allow_fail: false
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Clone ruby-libvirt for ruby 3.1 support
if: ${{ startsWith(matrix.ruby, '3.1') }}
uses: actions/checkout@v3
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
- 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.1 setup
if: ${{ startsWith(matrix.ruby, '3.1') }}
run: |
# 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
echo "BUNDLE_DISABLE_CHECKSUM_VALIDATION=true" >> ${GITHUB_ENV}
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true
env:
# skip installing development group gems to save time
BUNDLE_WITHOUT: 'development'
BUNDLE_JOBS: 4
VAGRANT_VERSION: ${{ matrix.vagrant }}
- name: Run tests
run: |
bundle exec parallel_test spec --type rspec
env:
BUNDLE_WITHOUT: 'development'
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]
if: ${{ always() }}
runs-on: ubuntu-latest
steps:
- name: Check matrix execution status
run: exit 1
# see https://stackoverflow.com/a/67532120/4907315
# and https://github.com/orgs/community/discussions/26822
if: >-
${{
contains(needs.*.result, 'failure')
|| contains(needs.*.result, 'cancelled')
}}
- name: Coveralls Finished
uses: coverallsapp/github-action@master
if: contains(needs.*.result, 'skipped') == false
with:
github-token: ${{ secrets.github_token }}
parallel-finished: true