mirror of
https://github.com/ruby/setup-ruby.git
synced 2026-09-13 14:34:21 +02:00
When a fixed version is passed, it should be the minimum RubyGems version for the whole matrix, i.e., RubyGems should not be dowgraded past the default version of the oldest Ruby in the matrix.
211 lines
6.5 KiB
YAML
211 lines
6.5 KiB
YAML
name: Test this action
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches-ignore:
|
|
- v1
|
|
tags-ignore:
|
|
- '*'
|
|
paths-ignore:
|
|
- README.md
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
test:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ ubuntu-18.04, ubuntu-20.04, macos-10.15, macos-11.0, windows-2019, windows-2022 ]
|
|
ruby: [ 1.9, '2.0', 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, '3.0', 3.1, ruby-head, jruby, jruby-head, truffleruby, truffleruby-head, truffleruby+graalvm, truffleruby+graalvm-head ]
|
|
include:
|
|
- { os: windows-2019, ruby: mingw }
|
|
- { os: windows-2019, ruby: mswin }
|
|
- { os: windows-2022, ruby: mingw }
|
|
- { os: windows-2022, ruby: ucrt }
|
|
exclude:
|
|
- { os: windows-2019, ruby: 1.9 }
|
|
- { os: windows-2019, ruby: debug }
|
|
- { os: windows-2019, ruby: truffleruby }
|
|
- { os: windows-2019, ruby: truffleruby-head }
|
|
- { os: windows-2019, ruby: truffleruby+graalvm }
|
|
- { os: windows-2019, ruby: truffleruby+graalvm-head }
|
|
- { os: windows-2022, ruby: 1.9 }
|
|
- { os: windows-2022, ruby: debug }
|
|
- { os: windows-2022, ruby: truffleruby }
|
|
- { os: windows-2022, ruby: truffleruby-head }
|
|
- { os: windows-2022, ruby: truffleruby+graalvm }
|
|
- { os: windows-2022, ruby: truffleruby+graalvm-head }
|
|
|
|
name: ${{ matrix.os }} ${{ matrix.ruby }}
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
|
|
- uses: ./
|
|
with:
|
|
ruby-version: ${{ matrix.ruby }}
|
|
bundler-cache: true
|
|
- run: ruby -v
|
|
- name: PATH
|
|
shell: pwsh
|
|
run: |
|
|
# Show PATH with Powershell
|
|
$f, $r = $env:PATH.split([IO.Path]::PathSeparator); $r
|
|
|
|
- name: build compiler
|
|
run: |
|
|
ruby -e "puts 'build compiler: ' + RbConfig::CONFIG.fetch('CC_VERSION_MESSAGE', 'unknown').lines.first"
|
|
- name: gcc and ridk version (mingw)
|
|
if: startsWith(matrix.os, 'windows')
|
|
run: |
|
|
$abi, $plat = $(ruby -e "STDOUT.write RbConfig::CONFIG['ruby_version'] + ' ' + RUBY_PLATFORM").split(' ')
|
|
if ($plat.Contains('mingw')) {
|
|
gcc --version
|
|
if ($abi -ge '2.4') {
|
|
ridk version
|
|
} else {
|
|
echo 'ridk is unavailable'
|
|
}
|
|
}
|
|
- name: RbConfig::CONFIG
|
|
run: ruby -rrbconfig -rpp -e 'pp RbConfig::CONFIG'
|
|
- name: RbConfig::MAKEFILE_CONFIG
|
|
run: ruby -rrbconfig -rpp -e 'pp RbConfig::MAKEFILE_CONFIG'
|
|
|
|
- name: Subprocess test
|
|
run: ruby test_subprocess.rb
|
|
- name: OpenSSL compiled version
|
|
run: ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
|
|
- name: OpenSSL loaded version
|
|
run: ruby -ropenssl -e 'puts OpenSSL::OPENSSL_LIBRARY_VERSION'
|
|
if: matrix.ruby != '1.9'
|
|
- name: OpenSSL test
|
|
run: ruby -ropen-uri -e 'puts URI.send(:open, %{https://rubygems.org/}) { |f| f.read(1024) }'
|
|
|
|
- run: gem env
|
|
- name: C extension test
|
|
run: gem install json -v 2.2.0
|
|
- run: bundle --version
|
|
# This step is redundant with `bundler-cache: true` but is there to check a redundant `bundle install` still works
|
|
- run: bundle install
|
|
- run: bundle exec rake --version
|
|
- run: bundle exec rake
|
|
|
|
- name: which ruby, rake
|
|
if: "!startsWith(matrix.os, 'windows')"
|
|
run: which -a ruby rake
|
|
- name: where ruby, rake
|
|
if: startsWith(matrix.os, 'windows')
|
|
run: |
|
|
$ErrorActionPreference = 'Continue'
|
|
$where = 'ruby', 'rake'
|
|
foreach ($e in $where) {
|
|
$rslt = where.exe $e 2>&1 | Out-String
|
|
if ($rslt.contains($e)) { echo $rslt.Trim() }
|
|
else { echo "Can't find $e" }
|
|
echo ''
|
|
}
|
|
- name: bash test
|
|
shell: bash
|
|
run: echo ~
|
|
- name: Windows JRuby
|
|
if: startsWith(matrix.os, 'windows') && startsWith(matrix.ruby, 'jruby')
|
|
run: gem install sassc
|
|
|
|
testLatestRubygemsVersion:
|
|
name: "Test rubygems input set to latest upgrades the default RubyGems version"
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: ./
|
|
with:
|
|
ruby-version: 2.6
|
|
rubygems: latest
|
|
- run: ruby -e "exit(Gem.rubygems_version > Gem::Version.new('3.0.3'))"
|
|
|
|
testFixedRubygemsVersionUpgrades:
|
|
name: "Test rubygems input set to a fixed version upgrades RubyGems to that version if the default is older"
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: ./
|
|
with:
|
|
ruby-version: 2.6
|
|
rubygems: 3.2.3
|
|
- run: gem --version | grep -F "3.2.3"
|
|
|
|
testFixedRubygemsVersionNoop:
|
|
name: "Test rubygems input set to a fixed version noops if the default is newer"
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: ./
|
|
with:
|
|
ruby-version: 3.1
|
|
rubygems: 3.2.3
|
|
- run: gem --version | grep -F "3.3.3"
|
|
|
|
testExactBundlerVersion:
|
|
name: "Test with an exact Bundler version"
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: ./
|
|
with:
|
|
ruby-version: 2.6
|
|
bundler: 2.2.3
|
|
- run: bundle --version | grep -F "Bundler version 2.2.3"
|
|
|
|
testDependencyOnBundler1:
|
|
name: "Test gemfile depending on Bundler 1"
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/bundler1.gemfile
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: ./
|
|
with:
|
|
ruby-version: 2.7
|
|
bundler: 1
|
|
bundler-cache: true
|
|
- run: bundle --version | grep -F "Bundler version 1."
|
|
|
|
testGemfileMatrix:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
gemfile: [ rails5, rails6 ]
|
|
name: "Test with ${{ matrix.gemfile }} gemfile"
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: ./
|
|
with:
|
|
ruby-version: 2.6
|
|
bundler-cache: true
|
|
- run: bundle exec rails --version
|
|
|
|
testTruffleRubyNokogiri:
|
|
name: "Test installing a Gemfile with nokogiri on TruffleRuby"
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/nokogiri.gemfile
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: ./
|
|
with:
|
|
ruby-version: truffleruby-head
|
|
bundler-cache: true
|
|
- run: bundle list | grep nokogiri
|
|
|
|
lint:
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- run: yarn install
|
|
- run: yarn run package
|
|
- name: Check generated files are up to date
|
|
run: git diff --exit-code
|