From 2102709b691b7543390b023a654b9f9a31d28cfd Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Fri, 21 Nov 2025 14:01:48 -0600 Subject: [PATCH 1/5] WIP --- .github/workflows/spec_sync.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .github/workflows/spec_sync.yml diff --git a/.github/workflows/spec_sync.yml b/.github/workflows/spec_sync.yml new file mode 100644 index 00000000000..248d7bdb5cc --- /dev/null +++ b/.github/workflows/spec_sync.yml @@ -0,0 +1,15 @@ +name: Sync specs to ruby/spec +on: [push] + +jobs: + sync-specs: + runs-on: ubuntu-latest + steps: + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + - name: Checkout mspec repo + uses: actions/checkout@v3 + with: [repository: 'ruby/mspec', path: 'mspec'] + - name: Sync JRuby specs + working-directory: 'mspec/tool/sync' + run: ruby sync-rubyspec.rb jruby From 049020a1b8063d2b0f3f5dafc298595f3d7120d9 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Fri, 21 Nov 2025 14:14:23 -0600 Subject: [PATCH 2/5] Remove main workflow for experimentation --- .github/workflows/ci.yml | 560 --------------------------------------- 1 file changed, 560 deletions(-) delete mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index b95c83ee3ff..00000000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,560 +0,0 @@ -name: JRuby CI - -on: [push, pull_request] - -env: - JAVA_OPTS: '-XX:+TieredCompilation -XX:TieredStopAtLevel=1 -Xms60M -Xmx1G -XX:InitialCodeCacheSize=40M -XX:ReservedCodeCacheSize=120M' - -permissions: - contents: read - -jobs: - - rake-test: - runs-on: ubuntu-latest - - strategy: - matrix: - target: ['test:jruby:int', 'spec:ruby:fast', 'spec:ji', 'spec:ffi', 'test:mri:core:jit', 'test:mri:extra', 'spec:ruby:fast:jit', 'test:mri:stdlib', 'spec:ruby:slow', 'spec:ruby:debug', 'test:jruby:aot', 'test:slow_suites', 'spec:compiler', 'spec:regression', 'spec:jrubyc', 'spec:profiler'] - java-version: ['21', '25'] - fail-fast: false - - name: rake ${{ matrix.target }} (Java ${{ matrix.java-version }}) - - steps: - - name: checkout - uses: actions/checkout@v3 - - name: remove default java except 21 - run: sudo apt remove temurin-8-jdk temurin-11-jdk temurin-17-jdk - - name: set up java ${{ matrix.java-version }} - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: ${{ matrix.java-version }} - cache: 'maven' - - name: bootstrap - run: mvn -ntp -Pbootstrap clean package - - name: bundle install - run: bin/jruby --dev -S bundle install - - name: rake ${{ matrix.target }} - run: bin/jruby -S rake ${{ matrix.target }} - - rake-test-multiplatform: - runs-on: ${{ matrix.platform }} - - strategy: - matrix: - target: ['spec:jruby'] - platform: ['ubuntu-latest', 'macos-latest'] - java-version: ['21', '25'] - fail-fast: false - - name: rake ${{ matrix.target }} (Java ${{ matrix.java-version }}) - - steps: - - name: checkout - uses: actions/checkout@v3 - - name: set up java ${{ matrix.java-version }} - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: ${{ matrix.java-version }} - cache: 'maven' - - name: bootstrap - run: mvn -ntp -Pbootstrap clean package - - name: bundle install - run: bin/jruby --dev -S bundle install - - name: rake ${{ matrix.target }} - run: bin/jruby -S rake ${{ matrix.target }} - - repeat-specs: - runs-on: ubuntu-latest - - strategy: - fail-fast: false - - name: run specs repeatedly to test optimizations - - steps: - - name: checkout - uses: actions/checkout@v3 - - name: remove default java except 21 - run: sudo apt remove temurin-8-jdk temurin-11-jdk temurin-17-jdk - - name: set up java 21 - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: 21 - cache: 'maven' - - name: bootstrap - run: mvn -ntp -Pbootstrap clean package - - name: bundle install - run: bin/jruby --dev -S bundle install - - name: run specs - env: - JAVA_OPTS: '-XX:TieredStopAtLevel=1' - run: bin/jruby spec/mspec/bin/mspec ci -R 4 -T-Xjit.threshold=0 :language - - jruby-tests-dev: - runs-on: ubuntu-latest - - strategy: - fail-fast: false - - env: - JRUBY_OPTS: '--dev' - - steps: - - name: checkout - uses: actions/checkout@v3 - - name: remove default java except 21 - run: sudo apt remove temurin-8-jdk temurin-11-jdk temurin-17-jdk - - name: set up java 21 - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: 21 - cache: 'maven' - - name: bootstrap - run: mvn -ntp -Pbootstrap clean package - - name: bundle install - run: bin/jruby --dev -S bundle install - - name: rake test:jruby - run: bin/jruby --dev -S rake test:jruby - - rake-test-indy-off: - runs-on: ubuntu-latest - - strategy: - matrix: - target: ['test:mri:core:jit', 'test:jruby:jit', 'spec:compiler', 'spec:ruby:fast:jit', 'spec:ji'] - java-version: ['21', '25'] - fail-fast: false - - name: rake ${{ matrix.target }} (Java ${{ matrix.java-version }} -indy) - - env: - JRUBY_OPTS: '-Xcompile.invokedynamic=false -X+C -Xjit.threshold=0' - - steps: - - name: checkout - uses: actions/checkout@v3 - - name: remove default java except 21 - run: sudo apt remove temurin-8-jdk temurin-11-jdk temurin-17-jdk - - name: set up java ${{ matrix.java-version }} - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: ${{ matrix.java-version }} - cache: 'maven' - - name: bootstrap - run: mvn -ntp -Pbootstrap clean package - - name: bundle install - run: bin/jruby --dev -S bundle install - - name: rake ${{ matrix.target }} - run: bin/jruby -S rake ${{ matrix.target }} - - mvn-test: - runs-on: ubuntu-latest - - strategy: - matrix: - package-flags: ['-Pmain', '-Pdist', '-Pcomplete', '-Posgi', '-Ptest', '-Pmain,test -Dinvoker.test=extended'] - java-version: [21, 25] - fail-fast: false - - name: mvn ${{ matrix.package-flags }} (Java ${{ matrix.java-version }}) - - steps: - - name: checkout - uses: actions/checkout@v3 - - name: remove default java except 21 - run: sudo apt remove temurin-8-jdk temurin-11-jdk temurin-17-jdk - - name: set up java ${{ matrix.java-version }} - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: ${{ matrix.java-version }} - cache: 'maven' - - name: bootstrap - run: mvn -ntp -Pbootstrap clean package - - name: bundle install - run: bin/jruby --dev -S bundle install - - name: mvn package ${{ matrix.package-flags }} - run: tool/maven-ci-script.sh - env: - PHASE: 'package ${{ matrix.package-flags }}' - - mvn-test-extended: - runs-on: ubuntu-latest - - strategy: - matrix: - package-flags: ['-Pjruby-jars', '-Pjruby-jars,test -Dinvoker.test=extended', '-Pjruby_complete_jar_extended -Dinvoker.skip=true'] - java-version: [21, 25] - fail-fast: false - - - name: mvn ${{ matrix.package-flags }} (Java ${{ matrix.java-version }}) - - steps: - - name: checkout - uses: actions/checkout@v3 - - name: remove default java except 21 - run: sudo apt remove temurin-8-jdk temurin-11-jdk temurin-17-jdk - - name: set up java ${{ matrix.java-version }} - uses: actions/setup-java@v3 - with: - distribution: temurin - java-version: ${{ matrix.java-version }} - cache: 'maven' - - name: bootstrap - run: mvn -ntp -Pbootstrap clean package - - name: bundle install - run: bin/jruby --dev -S bundle install - - name: mvn package ${{ matrix.package-flags }} - run: tool/maven-ci-script.sh - env: - PHASE: 'package ${{ matrix.package-flags }}' - - regression-specs-jit: - runs-on: ubuntu-latest - - strategy: - fail-fast: false - - env: - JRUBY_OPTS: '-Xjit.threshold=0' - - steps: - - name: checkout - uses: actions/checkout@v3 - - name: remove default java except 21 - run: sudo apt remove temurin-8-jdk temurin-11-jdk temurin-17-jdk - - name: set up java 21 - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: 21 - cache: 'maven' - - name: bootstrap - run: mvn -ntp -Pbootstrap clean package - - name: bundle install - run: bin/jruby --dev -S bundle install - - name: rake spec:regression - run: bin/jruby -S rake spec:regression - - mvn-test-windows: - runs-on: windows-latest - - strategy: - fail-fast: false - - name: mvn -Ptest, rake test:jruby (Windows, Java 21) - - env: - JAVA_OPTS: "-Djdk.io.File.enableADS=true" - JDK_JAVA_OPTS: "-Djdk.io.File.enableADS=true" - - steps: - - name: checkout - uses: actions/checkout@v3 - - name: set up java 21 - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: 21 - cache: 'maven' - - name: bootstrap - run: mvn -ntp -Pbootstrap clean package - - name: bundle install - run: bin/jruby --dev -S bundle install - - name: rake test:jruby - run: bin/jruby -S rake test:jruby TESTOPTS="--no-show-detail-immediately" - env: - JRUBY_OPTS: '' - - name: mvn -P test - run: ./mvnw package -B -Ptest - - spec-ruby-language-windows: - runs-on: windows-latest - - strategy: - fail-fast: false - - name: language specs (Windows, Java 21) - - env: - JAVA_OPTS: "-Djdk.io.File.enableADS=true" - JDK_JAVA_OPTS: "-Djdk.io.File.enableADS=true" - - steps: - - name: checkout - uses: actions/checkout@v3 - - name: set up java 21 - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: 21 - cache: 'maven' - - name: bootstrap - run: mvn -ntp -Pbootstrap clean package - - name: bundle install - run: bin/jruby --dev -S bundle install - - name: language specs interpreted - run: bin/jruby spec/mspec/bin/mspec ci :language - - name: language specs compiled - run: bin/jruby spec/mspec/bin/mspec ci :language - env: - JRUBY_OPTS: -Xjit.threshold=0 - - spec-ruby-core-windows: - runs-on: windows-latest - - strategy: - fail-fast: false - - name: core specs (Windows, Java 21) - - env: - JAVA_OPTS: "-Djdk.io.File.enableADS=true" - JDK_JAVA_OPTS: "-Djdk.io.File.enableADS=true" - - steps: - - name: checkout - uses: actions/checkout@v3 - - name: set up java 21 - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: 21 - cache: 'maven' - - name: bootstrap - run: mvn -ntp -Pbootstrap clean package - - name: bundle install - run: bin/jruby --dev -S bundle install - - name: core specs interpreted - run: bin/jruby spec/mspec/bin/mspec ci :core - - name: core specs compiled - run: bin/jruby spec/mspec/bin/mspec ci :core - env: - JRUBY_OPTS: -Xjit.threshold=0 - - dependency-check: - runs-on: ubuntu-latest - - name: Dependency check - - steps: - - name: checkout - uses: actions/checkout@v3 - - name: remove default java except 21 - run: sudo apt remove temurin-8-jdk temurin-11-jdk temurin-17-jdk - - name: set up java 21 - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: '21' - cache: 'maven' - - name: dependency convergence - run: tool/maven-ci-script.sh - env: - PHASE: 'install -Pmain -Dinvoker.test=GH-6081*' - - test-versions: - runs-on: ubuntu-latest - - strategy: - fail-fast: false - - name: Verify build artifacts - steps: - - name: checkout - uses: actions/checkout@v3 - - name: remove default java except 21 - run: sudo apt remove temurin-8-jdk temurin-11-jdk temurin-17-jdk - - name: set up java 21 - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: 21 - cache: 'maven' - - name: maven-ci-script.sh - run: tool/maven-ci-script.sh - env: - COMMAND: 'test/check_versions.sh' - - sequel: - runs-on: ubuntu-latest - - strategy: - fail-fast: false - - services: - postgres: - image: postgres:latest - ports: [ "5432:5432" ] - options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 - env: - POSTGRES_PASSWORD: postgres - mysql: - image: mysql:latest - env: - MYSQL_ROOT_PASSWORD: root - MYSQL_DATABASE: sequel_test - ports: [ "3306:3306" ] - options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 - mariadb: - image: mariadb:latest - env: - MARIADB_ROOT_PASSWORD: root - MARIADB_DATABASE: sequel_test - ports: ["3307:3306"] - options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=3 - - steps: - - name: checkout - uses: actions/checkout@v3 - - name: remove default java except 21 - run: sudo apt remove temurin-8-jdk temurin-11-jdk temurin-17-jdk - - name: set up java 21 - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: 21 - cache: 'maven' - - name: bootstrap - run: mvn -ntp -Pbootstrap clean package - - name: bundle install - run: bin/jruby --dev -S bundle install - - name: sequel - run: tool/sequel-github-actions.sh - - concurrent-ruby: - runs-on: ubuntu-latest - - strategy: - fail-fast: false - - steps: - - name: checkout - uses: actions/checkout@v3 - - name: remove default java except 21 - run: sudo apt remove temurin-8-jdk temurin-11-jdk temurin-17-jdk - - name: set up java 21 - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: 21 - cache: 'maven' - - name: bootstrap - run: mvn -ntp -Pbootstrap clean package - - name: bundle install - run: bin/jruby --dev -S bundle install - - name: concurrent-ruby - run: tool/concurrent-ruby-github-actions.sh - -# mvn-test-m1: -# runs-on: [self-hosted, macos, aarch64] -# -# strategy: -# matrix: -# package-flags: ['-Ptest'] -# # dist, complete, and osgi do not pass on 21 yet -# java-version: ['11'] -# fail-fast: false -# -# name: mvn ${{ matrix.package-flags }} (Java ${{ matrix.java-version }} Apple aarch64) -# -# steps: -# - name: checkout -# uses: actions/checkout@v3 -# - name: set up java ${{ matrix.java-version }} -# uses: actions/setup-java@v3 -# with: -# distribution: 'zulu' -# java-version: ${{ matrix.java-version }} -# architecture: arm -# - name: bootstrap -# run: ./mvnw -Pbootstrap clean package -# - name: mvn package ${{ matrix.package-flags }} -# run: tool/maven-ci-script.sh -# env: -# PHASE: 'package ${{ matrix.package-flags }}' -# -# spec-m1: -# runs-on: [self-hosted, macos, aarch64] -# -# strategy: -# matrix: -# target: ['spec:ffi'] -# java-version: ['11'] -# fail-fast: false -# -# name: rake ${{ matrix.target }} (Java ${{ matrix.java-version }} Apple aarch64) -# -# steps: -# - name: Bootstrap build -# uses: jruby/jruby-ci-build@fbd2cf981aaff3eae190ac20086fa161be3d9060 -# with: -# java-version: 21 -# - name: set up java ${{ matrix.java-version }} -# uses: actions/setup-java@v3 -# with: -# distribution: 'zulu' -# java-version: ${{ matrix.java-version }} -# architecture: arm -# cache: 'maven' -# - name: rake ${{ matrix.target }} -## run: "bin/jruby -S rake ${{ matrix.target }}" -# run: "true" - - maven-test-openj9-21: - runs-on: ubuntu-latest - - name: mvn -Ptest (OpenJ9 Java 21) - - steps: - - name: checkout - uses: actions/checkout@v3 - - name: remove default java except 21 - run: sudo apt remove temurin-8-jdk temurin-11-jdk temurin-17-jdk - - name: set up java ${{ matrix.java-version }} - uses: actions/setup-java@v3 - with: - distribution: 'semeru' - java-version: '21' - cache: 'maven' - - name: bootstrap - run: mvn -ntp -Pbootstrap clean package - - name: bundle install - run: bin/jruby -S bundle install - - name: test profile - run: "tool/maven-ci-script.sh" - env: - PHASE: 'package -Ptest' - - jruby-shell-check: - runs-on: ubuntu-latest - - name: shellcheck jruby.sh - - steps: - - name: checkout - uses: actions/checkout@v3 - - name: install shellcheck - run: sudo apt install shellcheck - - name: run shellcheck - run: shellcheck bin/jruby.sh - - publish-snapshot: - permissions: - contents: read - if: ${{ github.ref == 'refs/heads/master' && github.repository == 'jruby/jruby' }} - needs: [mvn-test, mvn-test-extended, mvn-test-windows, dependency-check, rake-test, rake-test-indy-off, rake-test, test-versions, sequel, concurrent-ruby, jruby-tests-dev, regression-specs-jit] - uses: jruby/jruby/.github/workflows/snapshot-publish.yml@46678ce513443c231ce91c7782ad72b886aed5b4 - with: - javaLevel: 21 - secrets: - SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} - SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} From db903f33ff2fe65dc3a8ea58d422e3faec819912 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Fri, 21 Nov 2025 14:14:33 -0600 Subject: [PATCH 3/5] Fix hash vs array --- .github/workflows/spec_sync.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/spec_sync.yml b/.github/workflows/spec_sync.yml index 248d7bdb5cc..df725074d78 100644 --- a/.github/workflows/spec_sync.yml +++ b/.github/workflows/spec_sync.yml @@ -9,7 +9,7 @@ jobs: uses: ruby/setup-ruby@v1 - name: Checkout mspec repo uses: actions/checkout@v3 - with: [repository: 'ruby/mspec', path: 'mspec'] + with: {repository: 'ruby/mspec', path: 'mspec'} - name: Sync JRuby specs working-directory: 'mspec/tool/sync' run: ruby sync-rubyspec.rb jruby From 5e9f8bd0d8fc65ca735303272377dde9c1215986 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Fri, 21 Nov 2025 14:18:01 -0600 Subject: [PATCH 4/5] Add ruby-version --- .github/workflows/spec_sync.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/spec_sync.yml b/.github/workflows/spec_sync.yml index df725074d78..106d6ddb78f 100644 --- a/.github/workflows/spec_sync.yml +++ b/.github/workflows/spec_sync.yml @@ -7,6 +7,7 @@ jobs: steps: - name: Set up Ruby uses: ruby/setup-ruby@v1 + with: {ruby-version: '3.4.7'} - name: Checkout mspec repo uses: actions/checkout@v3 with: {repository: 'ruby/mspec', path: 'mspec'} From 8bc6fdc0d9c35b5c3bbdb311db3e50607edc958a Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Fri, 21 Nov 2025 14:19:10 -0600 Subject: [PATCH 5/5] Check out RubySpecs --- .github/workflows/spec_sync.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/spec_sync.yml b/.github/workflows/spec_sync.yml index 106d6ddb78f..1e7f6c9eef1 100644 --- a/.github/workflows/spec_sync.yml +++ b/.github/workflows/spec_sync.yml @@ -11,6 +11,9 @@ jobs: - name: Checkout mspec repo uses: actions/checkout@v3 with: {repository: 'ruby/mspec', path: 'mspec'} + - name: Checkout rubyspec repo + uses: actions/checkout@v3 + with: {repository: 'ruby/spec', path: 'rubyspec'} - name: Sync JRuby specs working-directory: 'mspec/tool/sync' run: ruby sync-rubyspec.rb jruby