summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJun Aruga <jaruga@redhat.com>2025-09-25 18:55:43 +0100
committerJun Aruga <junaruga@users.noreply.github.com>2025-09-26 22:39:45 +0100
commit4ac8b12a1acc814cdeb1fdd46048104bf0f19dde (patch)
tree8b760c214eff0981334520f8b020e71dd6617422
parentba52af6fc3e9ce8263794e8d2cad3fdf2785adad (diff)
CI: Add make-ibm job in ubuntu.yml and remove ubuntu-ibm.yml
Add `make-ibm` job to run ppc64le/s390x cases in the `ubuntu.yml`, and remove `ubuntu-ibm.yml`. This commit improves removing a duplicated logic between the `ubuntu.yml` and `ubuntu-ibm.yml`. I am using the YAML anchors and aliases feature to avoid the duplicated logic. The document is below. https://docs.github.com/en/actions/reference/workflows-and-actions/reusing-workflow-configurations#yaml-anchors-and-aliases I don't add the `make-ibm` job to the `result` job, the line `needs: [make]` intentionally to make the `make-ibm` job's result optional to merge PRs.
-rw-r--r--.github/workflows/ubuntu-ibm.yml183
-rw-r--r--.github/workflows/ubuntu.yml58
2 files changed, 55 insertions, 186 deletions
diff --git a/.github/workflows/ubuntu-ibm.yml b/.github/workflows/ubuntu-ibm.yml
deleted file mode 100644
index 8bcce6e4a1..0000000000
--- a/.github/workflows/ubuntu-ibm.yml
+++ /dev/null
@@ -1,183 +0,0 @@
-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: ['']
- os:
- - ubuntu-24.04-ppc64le
- - ubuntu-24.04-s390x
- # Add a x86_64 case to make this CI pass on fork repositories.
- - ubuntu-24.04
- # 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
- - os: ubuntu-24.04
- upstream: true
- fail-fast: false
-
- env:
- GITPULLOPTIONS: --no-tags origin ${{ github.ref }}
- RUBY_DEBUG: ci
-
- runs-on: ${{ matrix.os }}
-
- 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- with:
- sparse-checkout-cone-mode: false
- sparse-checkout: /.github
-
- - uses: ./.github/actions/setup/ubuntu
-
- - uses: ruby/setup-ruby@a9bfc2ecf3dd40734a9418f89a7e9d484c32b990 # v1.248.0
- with:
- ruby-version: '3.1'
- bundler: none
- if: ${{ !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:
- configure: ${{ matrix.configure }}
- run: >-
- ../src/configure -C --disable-install-doc ${configure:-cppflags=-DRUBY_DEBUG}
-
- - run: make
-
- - run: make hello
-
- - name: runirb
- run: |
- echo IRB::VERSION | 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 }}
- test-opts: ${{ matrix.configure }}
- launchable-token: ${{ secrets.LAUNCHABLE_TOKEN }}
- builddir: build
- srcdir: src
- continue-on-error: true
- timeout-minutes: 3
-
- # A temporary workaround: Set the user's primary group to avoid 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: Set user's group id
- run: sudo usermod -g "$(id -g)" runner
- 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}")
-
- 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: |
- 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
- make test-pc "DESTDIR=$DESTDIR"
-
- - uses: ./.github/actions/slack
- with:
- label: ${{ matrix.test_task }} ${{ matrix.configure }}
- 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 4358e4c3a7..6174e99170 100644
--- a/.github/workflows/ubuntu.yml
+++ b/.github/workflows/ubuntu.yml
@@ -45,7 +45,7 @@ jobs:
extra_checks: [capi]
fail-fast: false
- env:
+ env: &make-env
GITPULLOPTIONS: --no-tags origin ${{ github.ref }}
RUBY_DEBUG: ci
@@ -59,7 +59,7 @@ jobs:
|| (github.event_name == 'push' && github.event.pull_request.user.login == 'dependabot[bot]')
)}}
- steps:
+ steps: &make-steps
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
sparse-checkout-cone-mode: false
@@ -73,7 +73,19 @@ jobs:
with:
ruby-version: '3.1'
bundler: none
- if: ${{ !endsWith(matrix.os, 'arm') }}
+ if: >-
+ ${{ !endsWith(matrix.os, 'arm')
+ && !endsWith(matrix.os, 'ppc64le') && !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:
@@ -123,6 +135,21 @@ jobs:
continue-on-error: true
timeout-minutes: 3
+ # 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
+ if: ${{ endsWith(matrix.os, 's390x') }}
+
+ # A temporary workaround: Set the user's primary group to avoid 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: Set user's group id
+ run: sudo usermod -g "$(id -g)" runner
+ if: ${{ endsWith(matrix.os, 'ppc64le') || endsWith(matrix.os, 's390x') }}
+
- name: make ${{ matrix.test_task }}
run: |
test -n "${LAUNCHABLE_STDOUT}" && exec 1> >(tee "${LAUNCHABLE_STDOUT}")
@@ -168,6 +195,31 @@ jobs:
SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot
if: ${{ failure() }}
+ make-ibm:
+ strategy:
+ matrix:
+ include:
+ - test_task: check
+ os: ubuntu-24.04-ppc64le
+ - test_task: check
+ os: ubuntu-24.04-s390x
+ fail-fast: false
+
+ env: *make-env
+
+ runs-on: ${{ matrix.os }}
+
+ if: >-
+ ${{github.repository == 'ruby/ruby'
+ && !(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: *make-steps
+
result:
if: ${{ always() }}
name: ${{ github.workflow }} result