summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/ubuntu-ibm.yml193
-rw-r--r--.github/workflows/ubuntu.yml57
2 files changed, 199 insertions, 51 deletions
diff --git a/.github/workflows/ubuntu-ibm.yml b/.github/workflows/ubuntu-ibm.yml
new file mode 100644
index 0000000000..619b11bb5e
--- /dev/null
+++ b/.github/workflows/ubuntu-ibm.yml
@@ -0,0 +1,193 @@
+name: Ubuntu IBM
+on:
+ push:
+ paths-ignore:
+ - 'doc/**'
+ - '**/man/*'
+ - '**.md'
+ - '**.rdoc'
+ - '**/.document'
+ - '.*.yml'
+ pull_request:
+ # Do not use paths-ignore for required status checks
+ # https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/collaborating-on-repositories-with-code-quality-features/troubleshooting-required-status-checks#handling-skipped-but-required-checks
+ merge_group:
+
+concurrency:
+ group: ${{ github.workflow }} / ${{ startsWith(github.event_name, 'pull') && github.ref_name || github.sha }}
+ cancel-in-progress: ${{ startsWith(github.event_name, 'pull') }}
+
+permissions:
+ contents: read
+
+jobs:
+ make:
+ strategy:
+ matrix:
+ test_task: [check]
+ configure: ['']
+ arch: ['']
+ os:
+ # FIXME Comment out ppc64le due to failing tests on GitHub Actions
+ # ppc64le
+ # https://bugs.ruby-lang.org/issues/21534
+ # - ubuntu-24.04-ppc64le
+ - ubuntu-24.04-s390x
+ # The ppc64le/s390x runners work only in the registered repositories.
+ # They don't work in forked repositories.
+ # https://github.com/IBM/actionspz/blob/main/docs/FAQ.md#what-about-forked-repos
+ upstream:
+ - ${{ github.repository == 'ruby/ruby' }}
+ exclude:
+ - os: ubuntu-24.04-ppc64le
+ upstream: false
+ - os: ubuntu-24.04-s390x
+ upstream: false
+ fail-fast: false
+
+ env:
+ GITPULLOPTIONS: --no-tags origin ${{ github.ref }}
+ RUBY_DEBUG: ci
+
+ runs-on: ${{ matrix.os || 'ubuntu-22.04' }}
+
+ if: >-
+ ${{!(false
+ || contains(github.event.head_commit.message, '[DOC]')
+ || contains(github.event.pull_request.title, '[DOC]')
+ || contains(github.event.pull_request.labels.*.name, 'Documentation')
+ || (github.event_name == 'push' && github.event.pull_request.user.login == 'dependabot[bot]')
+ )}}
+
+ steps:
+ - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ sparse-checkout-cone-mode: false
+ sparse-checkout: /.github
+
+ - uses: ./.github/actions/setup/ubuntu
+ with:
+ arch: ${{ matrix.arch }}
+
+ - uses: ruby/setup-ruby@a9bfc2ecf3dd40734a9418f89a7e9d484c32b990 # v1.248.0
+ with:
+ ruby-version: '3.1'
+ bundler: none
+ if: ${{ !endsWith(matrix.os, 'arm') && !endsWith(matrix.os, 'ppc64le') && !endsWith(matrix.os, 's390x') }}
+
+ # Avoid possible test failures with the zlib applying the following patch
+ # on s390x CPU architecture.
+ # https://github.com/madler/zlib/pull/410
+ - name: Disable DFLTCC
+ run: echo "DFLTCC=0" >> $GITHUB_ENV
+ working-directory:
+ if: ${{ endsWith(matrix.os, 's390x') }}
+
+ # A temporary workaround: Set HOME env to pass the step
+ # ./.github/actions/setup/directories.
+ # https://github.com/IBM/actionspz/issues/30
+ - name: Set HOME env
+ run: |
+ echo "HOME: #{HOME}"
+ echo "HOME=$(ls -d ~)" >> $GITHUB_ENV
+ working-directory:
+ if: ${{ endsWith(matrix.os, 'ppc64le') || endsWith(matrix.os, 's390x') }}
+
+ - uses: ./.github/actions/setup/directories
+ with:
+ srcdir: src
+ builddir: build
+ makeup: true
+ clean: true
+ dummy-files: ${{ matrix.test_task == 'check' }}
+ # Set fetch-depth: 10 so that Launchable can receive commits information.
+ fetch-depth: 10
+
+ - name: Run configure
+ env:
+ arch: ${{ matrix.arch }}
+ configure: ${{ matrix.configure }}
+ run: >-
+ $SETARCH ../src/configure -C --disable-install-doc ${configure:-cppflags=-DRUBY_DEBUG}
+ ${arch:+--target=$arch-$OSTYPE --host=$arch-$OSTYPE}
+
+ - run: $SETARCH make prepare-gems
+ if: ${{ matrix.test_task == 'test-bundled-gems' }}
+
+ - run: $SETARCH make
+
+ - run: $SETARCH make hello
+
+ - name: runirb
+ run: |
+ echo IRB::VERSION | $SETARCH make runirb RUNOPT="-- -f"
+
+ - name: Set test options for skipped tests
+ run: |
+ set -x
+ TESTS="$(echo "${{ matrix.skipped_tests }}" | sed 's| |$$/ -n!/|g;s|^|-n!/|;s|$|$$/|')"
+ echo "TESTS=${TESTS}" >> $GITHUB_ENV
+ if: ${{ matrix.test_task == 'check' && matrix.skipped_tests }}
+
+ - name: Set up Launchable
+ id: launchable
+ uses: ./.github/actions/launchable/setup
+ with:
+ os: ${{ matrix.os || 'ubuntu-22.04' }}
+ test-opts: ${{ matrix.configure }}
+ launchable-token: ${{ secrets.LAUNCHABLE_TOKEN }}
+ builddir: build
+ srcdir: src
+ continue-on-error: true
+ timeout-minutes: 3
+
+ # A temporary workaround: Skip user ground id test
+ # There is a mismatch between the group IDs of "id -g" and C function
+ # getpwuid(uid_t uid) pw_gid.
+ # https://github.com/IBM/actionspz/issues/31
+ - name: Skip user group id test
+ run: |
+ sed -i.orig '/^ it "returns user group id" do/a\ skip' \
+ ../src/spec/ruby/library/etc/struct_passwd_spec.rb
+ diff -u ../src/spec/ruby/library/etc/struct_passwd_spec.rb{.orig,} || :
+ if: ${{ endsWith(matrix.os, 'ppc64le') || endsWith(matrix.os, 's390x') }}
+
+ - name: make ${{ matrix.test_task }}
+ run: |
+ test -n "${LAUNCHABLE_STDOUT}" && exec 1> >(tee "${LAUNCHABLE_STDOUT}")
+ test -n "${LAUNCHABLE_STDERR}" && exec 2> >(tee "${LAUNCHABLE_STDERR}")
+
+ $SETARCH make -s ${{ matrix.test_task }} \
+ ${TESTS:+TESTS="$TESTS"} \
+ ${{ !contains(matrix.test_task, 'bundle') && 'RUBYOPT=-w' || '' }}
+ timeout-minutes: ${{ matrix.timeout || 40 }}
+ env:
+ RUBY_TESTOPTS: '-q --tty=no'
+ TEST_BUNDLED_GEMS_ALLOW_FAILURES: ''
+ PRECHECK_BUNDLED_GEMS: 'no'
+ LAUNCHABLE_STDOUT: ${{ steps.launchable.outputs.stdout_report_path }}
+ LAUNCHABLE_STDERR: ${{ steps.launchable.outputs.stderr_report_path }}
+
+ - name: make skipped tests
+ run: |
+ $SETARCH make -s test-all TESTS="${TESTS//-n!\//-n/}"
+ env:
+ GNUMAKEFLAGS: ''
+ RUBY_TESTOPTS: '-v --tty=no'
+ if: ${{ matrix.test_task == 'check' && matrix.skipped_tests }}
+ continue-on-error: ${{ matrix.continue-on-skipped_tests || false }}
+
+ - name: test-pc
+ run: |
+ DESTDIR=${RUNNER_TEMP-${TMPDIR-/tmp}}/installed
+ $SETARCH make test-pc "DESTDIR=$DESTDIR"
+
+ - uses: ./.github/actions/slack
+ with:
+ label: ${{ matrix.test_task }} ${{ matrix.configure }}${{ matrix.arch }}
+ SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
+ if: ${{ failure() }}
+
+defaults:
+ run:
+ working-directory: build
diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml
index 8955ea91d4..7eeac76d88 100644
--- a/.github/workflows/ubuntu.yml
+++ b/.github/workflows/ubuntu.yml
@@ -24,22 +24,7 @@ jobs:
make:
strategy:
matrix:
- test_task: [check]
- configure: ['']
- arch: ['']
- os:
- - ubuntu-24.04
- - ubuntu-24.04-arm
- # FIXME Comment out ppc64le due to failing tests on GitHub Actions
- # ppc64le
- # https://bugs.ruby-lang.org/issues/21534
- # - ubuntu-24.04-ppc64le
- - ubuntu-24.04-s390x
- # The ppc64le/s390x runners work only in the registered repositories.
- # They don't work in forked repositories.
- # https://github.com/IBM/actionspz/blob/main/docs/FAQ.md#what-about-forked-repos
- upstream:
- - ${{ github.repository == 'ruby/ruby' }}
+ # We enumerate every job in matrix.include to save build time
include:
- test_task: check
configure: 'cppflags=-DVM_CHECK_MODE'
@@ -52,11 +37,10 @@ jobs:
- test_task: test-bundler-parallel
timeout: 50
- test_task: test-bundled-gems
- exclude:
- - os: ubuntu-24.04-ppc64le
- upstream: false
- - os: ubuntu-24.04-s390x
- upstream: false
+ - test_task: check
+ os: ubuntu-24.04
+ - test_task: check
+ os: ubuntu-24.04-arm
fail-fast: false
env:
@@ -87,25 +71,7 @@ jobs:
with:
ruby-version: '3.1'
bundler: none
- if: ${{ !endsWith(matrix.os, 'arm') && !endsWith(matrix.os, 'ppc64le') && !endsWith(matrix.os, 's390x') }}
-
- # Avoid possible test failures with the zlib applying the following patch
- # on s390x CPU architecture.
- # https://github.com/madler/zlib/pull/410
- - name: Disable DFLTCC
- run: echo "DFLTCC=0" >> $GITHUB_ENV
- working-directory:
- if: ${{ endsWith(matrix.os, 's390x') }}
-
- # A temporary workaround: Set HOME env to pass the step
- # ./.github/actions/setup/directories.
- # https://github.com/IBM/actionspz/issues/30
- - name: Set HOME env
- run: |
- echo "HOME: #{HOME}"
- echo "HOME=$(ls -d ~)" >> $GITHUB_ENV
- working-directory:
- if: ${{ endsWith(matrix.os, 'ppc64le') || endsWith(matrix.os, 's390x') }}
+ if: ${{ !endsWith(matrix.os, 'arm') }}
- uses: ./.github/actions/setup/directories
with:
@@ -155,17 +121,6 @@ jobs:
continue-on-error: true
timeout-minutes: 3
- # A temporary workaround: Skip user ground id test
- # There is a mismatch between the group IDs of "id -g" and C function
- # getpwuid(uid_t uid) pw_gid.
- # https://github.com/IBM/actionspz/issues/31
- - name: Skip user group id test
- run: |
- sed -i.orig '/^ it "returns user group id" do/a\ skip' \
- ../src/spec/ruby/library/etc/struct_passwd_spec.rb
- diff -u ../src/spec/ruby/library/etc/struct_passwd_spec.rb{.orig,} || :
- if: ${{ endsWith(matrix.os, 'ppc64le') || endsWith(matrix.os, 's390x') }}
-
- name: make ${{ matrix.test_task }}
run: |
test -n "${LAUNCHABLE_STDOUT}" && exec 1> >(tee "${LAUNCHABLE_STDOUT}")