[GR-57603] Import Ruby 3.3.5 #4944
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
# NOTE: This is only a small subset of the CI which runs on GitHub Actions. | |
# Most of the CI is defined in ci.jsonnet. | |
name: CI | |
on: | |
pull_request: | |
push: | |
branches: [master] | |
permissions: | |
contents: read | |
jobs: | |
lint: | |
name: lint | |
runs-on: ubuntu-20.04 | |
env: | |
JT_JDK: '21' | |
steps: | |
- name: Clone TruffleRuby | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # Necessary for jt check_abi | |
- name: Setup system Ruby | |
uses: ruby/setup-ruby@v1 | |
- name: Setup jt | |
run: echo "$PWD/bin" >> $GITHUB_PATH | |
- name: Restore ~/.mx/cache | |
uses: actions/cache@v3 | |
with: | |
path: ~/.mx/cache | |
key: mx-cache-lint-${{ runner.os }}-${{ hashFiles('common.json') }} | |
- uses: ./.github/actions/setup-jvmci-graal | |
- run: jt install eclipse | |
- name: Install RuboCop | |
run: gem install --no-document rubocop:0.66.0 | |
- name: Build with --warning-as-error to ensure there are no non-deprecation warnings | |
# See comment in ci.jsonnet about --jdt | |
run: jt build -- --jdt builtin --warning-as-error --force-deprecation-as-warning | |
- run: jt lint | |
build: | |
name: build jvm | |
runs-on: ubuntu-20.04 | |
defaults: | |
run: | |
# Ensure all build files are in build/. | |
# Test jobs don't have build/ to ensure nothing uses the build files. | |
working-directory: build | |
steps: | |
- name: Clone TruffleRuby | |
uses: actions/checkout@v4 | |
with: | |
path: build | |
- name: Setup system Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
working-directory: build | |
- name: Setup jt | |
run: echo "$PWD/bin" >> $GITHUB_PATH | |
- name: Restore ~/.mx/cache | |
uses: actions/cache@v3 | |
with: | |
path: ~/.mx/cache | |
key: mx-cache-build-${{ runner.os }}-${{ hashFiles('build/common.json') }} | |
- uses: ./build/.github/actions/setup-jvmci-graal | |
- name: Build TruffleRuby | |
run: jt build | |
- name: Create archive | |
run: | | |
mv "$(jt -u jvm ruby-home)" "${{ github.workspace }}/truffleruby-jvm" | |
cd ${{ github.workspace }} | |
tar cf ${{ github.workspace }}/truffleruby-jvm.tar truffleruby-jvm | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: truffleruby-jvm | |
path: ${{ github.workspace }}/truffleruby-jvm.tar | |
include-hidden-files: true | |
build_native: | |
name: build native | |
runs-on: ubuntu-20.04 | |
defaults: | |
run: | |
# Ensure all build files are in build/. | |
# Test jobs don't have build/ to ensure nothing uses the build files. | |
working-directory: build | |
steps: | |
- name: Clone TruffleRuby | |
uses: actions/checkout@v4 | |
with: | |
path: build | |
- name: Setup system Ruby | |
uses: ruby/setup-ruby@v1 | |
with: | |
working-directory: build | |
- name: Setup jt | |
run: echo "$PWD/bin" >> $GITHUB_PATH | |
- name: Restore ~/.mx/cache | |
uses: actions/cache@v3 | |
with: | |
path: ~/.mx/cache | |
key: mx-cache-build-native-${{ runner.os }}-${{ hashFiles('build/common.json') }} | |
- uses: ./build/.github/actions/setup-jvmci-graal | |
- run: free -m | |
- name: Build TruffleRuby | |
run: jt build --env native | |
- name: Create archive | |
run: | | |
mv "$(jt -u native ruby-home)" "${{ github.workspace }}/truffleruby-native" | |
cd ${{ github.workspace }} | |
tar cf ${{ github.workspace }}/truffleruby-native.tar truffleruby-native | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: truffleruby-native | |
path: ${{ github.workspace }}/truffleruby-native.tar | |
include-hidden-files: true | |
fast_specs: | |
name: fast specs | |
needs: [build] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Clone TruffleRuby | |
uses: actions/checkout@v4 | |
- name: Setup system Ruby | |
uses: ruby/setup-ruby@v1 | |
- name: Setup jt | |
run: echo "SYSTEM_RUBY=$(which ruby)" >> $GITHUB_ENV && echo "$PWD/bin" >> $GITHUB_PATH | |
- uses: actions/download-artifact@v4 | |
with: | |
name: truffleruby-jvm | |
- uses: ./.github/actions/setup-truffleruby | |
- run: jt test fast | |
- run: jt test :next | |
all_specs: | |
name: specs ${{ matrix.specs }} | |
needs: [build] | |
runs-on: ubuntu-20.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
specs: | |
- :truffle # ~12min | |
- :language :core # ~3min + ~9min | |
- :library :cext :security :command_line :tracepoint # command_line ~5min, others < 2min | |
steps: | |
- name: Clone TruffleRuby | |
uses: actions/checkout@v4 | |
- name: Setup system Ruby | |
uses: ruby/setup-ruby@v1 | |
- name: Setup jt | |
run: echo "SYSTEM_RUBY=$(which ruby)" >> $GITHUB_ENV && echo "$PWD/bin" >> $GITHUB_PATH | |
- uses: actions/download-artifact@v4 | |
with: | |
name: truffleruby-jvm | |
- uses: ./.github/actions/setup-truffleruby | |
- run: jt test --timeout 180 ${{ matrix.specs }} | |
test_integration: | |
name: test integration | |
needs: [build] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Clone TruffleRuby | |
uses: actions/checkout@v4 | |
- name: Setup system Ruby | |
uses: ruby/setup-ruby@v1 | |
- name: Setup jt | |
run: echo "SYSTEM_RUBY=$(which ruby)" >> $GITHUB_ENV && echo "$PWD/bin" >> $GITHUB_PATH | |
- uses: actions/download-artifact@v4 | |
with: | |
name: truffleruby-jvm | |
- uses: ./.github/actions/setup-truffleruby | |
- run: jt test integration | |
test_native: | |
name: test native | |
needs: [build_native] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Clone TruffleRuby | |
uses: actions/checkout@v4 | |
- name: Setup system Ruby | |
uses: ruby/setup-ruby@v1 | |
- name: Setup jt | |
run: echo "SYSTEM_RUBY=$(which ruby)" >> $GITHUB_ENV && echo "$PWD/bin" >> $GITHUB_PATH | |
- uses: actions/download-artifact@v4 | |
with: | |
name: truffleruby-native | |
- uses: ./.github/actions/setup-truffleruby | |
with: | |
archive: truffleruby-native | |
- run: jt test compiler | |
# A subset of specs that are more likely to differ on native and run quickly | |
- run: jt test :command_line | |
- run: jt test :language | |
# To catch slow :truffle specs which only apply to native | |
- run: jt test fast :truffle | |
test_mri: | |
name: run MRI tests on native | |
needs: [build_native] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Clone TruffleRuby | |
uses: actions/checkout@v4 | |
- name: Setup system Ruby | |
uses: ruby/setup-ruby@v1 | |
- name: Setup jt | |
run: echo "SYSTEM_RUBY=$(which ruby)" >> $GITHUB_ENV && echo "$PWD/bin" >> $GITHUB_PATH | |
- uses: actions/download-artifact@v4 | |
with: | |
name: truffleruby-native | |
- uses: ./.github/actions/setup-truffleruby | |
with: | |
archive: truffleruby-native | |
- run: jt test mri --fast --no-sulong | |
ruby_spec_cruby: | |
name: ruby/spec on CRuby ${{ matrix.ruby }} | |
strategy: | |
fail-fast: false | |
matrix: | |
ruby: ['3.0', '3.1', '3.2'] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.ruby }} | |
bundler: none | |
- name: Setup jt | |
run: echo "$PWD/bin" >> $GITHUB_PATH | |
- run: CHECK_LEAKS=true jt -u ruby mspec -fdot --timeout 30 spec/ruby |