Add Trusted Publishing workflow (#536) #292
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: [push, pull_request, workflow_dispatch] | |
env: | |
BUNDLE_JOBS: 4 | |
# jobs defined in the order we want them listed in the Actions UI | |
jobs: | |
profile: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: [2.7] | |
idna_mode: [native, pure] | |
os: [ubuntu-20.04] | |
env: | |
IDNA_MODE: ${{ matrix.idna_mode }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install libidn | |
run: sudo apt-get install libidn11-dev | |
- name: Setup ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
bundler-cache: false | |
ruby-version: ${{ matrix.ruby }} | |
- name: Install gems | |
run: bundle install | |
- name: >- | |
Profile Memory Allocation with ${{ matrix.idna_mode }} IDNA during Addressable::URI#parse | |
run: bundle exec rake profile:memory | |
- name: >- | |
Profile Memory Allocation with ${{ matrix.idna_mode }} IDNA during Addressable::Template#match | |
run: bundle exec rake profile:template_match_memory | |
coverage: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: [2.7] | |
os: [ubuntu-20.04] | |
env: | |
BUNDLE_WITHOUT: development | |
COVERALLS_SERVICE_NAME: github | |
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
COVERALLS_DEBUG: true | |
CI_BUILD_NUMBER: ${{ github.run_id }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install libidn | |
run: sudo apt-get install libidn11-dev | |
- name: Setup ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
bundler-cache: false | |
ruby-version: ${{ matrix.ruby }} | |
- name: Install gems | |
run: bundle install | |
- name: Run specs and report coverage | |
run: bundle exec rake | |
test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
# the job name is composed by these attributes | |
ruby: | |
- 2.2 | |
- 2.3 | |
- 2.4 | |
- 2.5 | |
- 2.6 | |
- 2.7 | |
# quotes because of YAML gotcha: https://github.com/actions/runner/issues/849 | |
- '3.0' | |
- 3.1 | |
- 3.2 | |
- 3.3 | |
- jruby-9.1 | |
- jruby-9.2 | |
- jruby-9.3 | |
- jruby-9.4 | |
- truffleruby-22.1 | |
- truffleruby-22.2 | |
- truffleruby-22.3 | |
os: | |
- ubuntu-20.04 | |
gemfile: | |
- Gemfile | |
include: | |
- { os: ubuntu-20.04, ruby: 2.7, gemfile: gemfiles/public_suffix_2.rb } | |
- { os: ubuntu-20.04, ruby: 2.7, gemfile: gemfiles/public_suffix_3.rb } | |
- { os: ubuntu-20.04, ruby: 2.7, gemfile: gemfiles/public_suffix_4.rb } | |
# Ubuntu | |
- { os: ubuntu-22.04, ruby: 3.1 } | |
# macOS | |
- { os: macos-11, ruby: 3.1 } | |
- { os: macos-12, ruby: 3.1 } | |
# Windows | |
- { os: windows-2019, ruby: 3.1 } | |
- { os: windows-2022, ruby: 3.1 } | |
- { os: windows-2022, ruby: jruby-9.3 } | |
# allowed to fail | |
- { os: ubuntu-20.04, ruby: head, gemfile: Gemfile, allow-failure: true } | |
- { os: ubuntu-20.04, ruby: jruby-head, gemfile: Gemfile, allow-failure: true } | |
- { os: ubuntu-20.04, ruby: truffleruby-head, gemfile: Gemfile, allow-failure: true } | |
env: | |
BUNDLE_GEMFILE: ${{ matrix.gemfile }} | |
BUNDLE_WITHOUT: development:coverage | |
# Workaround for Windows JRuby JDK issue | |
# https://github.com/ruby/setup-ruby/issues/339 | |
# https://github.com/jruby/jruby/issues/7182#issuecomment-1112953015 | |
JAVA_OPTS: -Djdk.io.File.enableADS=true | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install libidn (Ubuntu) | |
if: startsWith(matrix.os, 'ubuntu') | |
run: sudo apt-get install libidn11-dev | |
- name: Install libidn (macOS) | |
if: startsWith(matrix.os, 'macos') | |
run: brew install libidn | |
- name: Setup ruby | |
continue-on-error: ${{ matrix.allow-failure || false }} | |
id: setupruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
bundler-cache: false | |
ruby-version: ${{ matrix.ruby }} | |
- name: Install gems | |
continue-on-error: ${{ matrix.allow-failure || false }} | |
id: bundle | |
run: bundle install | |
- name: Run specs | |
continue-on-error: ${{ matrix.allow-failure || false }} | |
id: specs | |
run: bundle exec rake spec | |
# because continue-on-error marks the steps as pass if they fail | |
- name: >- | |
Setup ruby outcome: ${{ steps.setupruby.outcome }} | |
run: echo NOOP | |
- name: >- | |
Install gems outcome: ${{ steps.bundle.outcome }} | |
run: echo NOOP | |
- name: >- | |
Run specs outcome: ${{ steps.specs.outcome }} | |
run: echo NOOP |