name: test-and-release on: push: branches: [ main ] tags: [ 'v*' ] pull_request: concurrency: group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}' cancel-in-progress: true env: BUNDLER_VER: 2.3.24 # Forcing bundler version to ensure that it is consistent everywhere and # does not cause bundler gem reinstalls # bundler/rubygems 2.3.22 is a minimal requirement to support gnu/musl differentiation # https://github.com/rubygems/rubygems/pull/4488 jobs: test: name: Test on Ruby ${{ matrix.ruby }} ${{ matrix.os }} runs-on: ${{ matrix.os }} continue-on-error: false strategy: fail-fast: false matrix: ruby: [ '2.7', '3.0', '3.1' ] os: [ ubuntu-latest, windows-latest, macos-latest ] steps: - uses: actions/checkout@v3 - uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler: ${{ env.BUNDLER_VER }} bundler-cache: true - run: bundle exec rspec metanorma: name: Test with Metanorma on Ruby ${{ matrix.ruby }} ${{ matrix.os }} runs-on: ${{ matrix.os }} continue-on-error: false strategy: fail-fast: false matrix: ruby: [ '2.7', '3.0', '3.1' ] os: [ ubuntu-latest, windows-latest, macos-latest ] steps: - uses: actions/checkout@v3 with: repository: metanorma/metanorma - uses: metanorma/metanorma-build-scripts/inkscape-setup-action@main - uses: actions/checkout@v3 with: path: "excavate" - run: 'echo ''gem "excavate", path: "./excavate"'' > Gemfile.devel' # https://github.com/rubygems/rubygems/issues/5160 - if: matrix.ruby == '3.0' uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler-cache: true bundler: ${{ env.BUNDLER_VER }} rubygems: latest - if: matrix.ruby != '3.0' uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} bundler: ${{ env.BUNDLER_VER }} bundler-cache: true - run: bundle exec rake release: name: Release gem needs: [ test, metanorma ] runs-on: ubuntu-latest if: contains(github.ref, 'refs/tags/v') steps: - uses: actions/checkout@v3 - uses: cadwallion/publish-rubygems-action@master env: RUBYGEMS_API_KEY: ${{secrets.FONTIST_CI_RUBYGEMS_API_KEY}}