# 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 - uses: actions/cache@v3 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.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 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