DEBUG: Return an exit status non-zero. #140
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
name: macOS | |
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: | |
env: | |
# GITHUB_PULL_REQUEST_URL are used for commenting test reports in Launchable Github App. | |
# https://github.com/launchableinc/cli/blob/v1.80.1/launchable/utils/link.py#L42 | |
GITHUB_PULL_REQUEST_URL: ${{ github.event.pull_request.html_url }} | |
# The following envs are necessary in Launchable tokenless authentication. | |
# https://github.com/launchableinc/cli/blob/v1.80.1/launchable/utils/authentication.py#L20 | |
LAUNCHABLE_ORGANIZATION: ${{ github.repository_owner }} | |
LAUNCHABLE_WORKSPACE: ${{ github.event.repository.name }} | |
# https://github.com/launchableinc/cli/blob/v1.80.1/launchable/utils/authentication.py#L71 | |
GITHUB_PR_HEAD_SHA: ${{ github.event.pull_request.head.sha || github.sha }} | |
# This setting only needs for forked repositories from the ruby/ruby. | |
LAUNCHABLE_TOKEN: ${{ secrets.LAUNCHABLE_TOKEN }} | |
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: ${{ fromJSON(format('["macos-12","macos-13"{0}]', (github.repository == 'ruby/ruby' && ',"macos-arm-oss"' || ''))) }} | |
include: | |
- test_task: test-all | |
os: ${{ github.repository == 'ruby/ruby' && 'macos-arm-oss' || 'macos-13' }} | |
- test_task: test-bundled-gems | |
os: ${{ github.repository == 'ruby/ruby' && 'macos-arm-oss' || 'macos-13' }} | |
fail-fast: false | |
env: | |
GITPULLOPTIONS: --no-tags origin ${{ github.ref }} | |
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.actor == 'dependabot[bot]') | |
)}} | |
steps: | |
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
with: | |
sparse-checkout-cone-mode: false | |
sparse-checkout: /.github | |
# Set fetch-depth: 0 so that Launchable can receive commits information. | |
fetch-depth: 0 | |
fetch-tags: false | |
- name: Install libraries | |
uses: ./.github/actions/setup/macos | |
- uses: ./.github/actions/setup/directories | |
with: | |
srcdir: src | |
builddir: build | |
makeup: true | |
dummy-files: ${{ matrix.test_task == 'check' }} | |
- name: Run configure | |
run: ../src/configure -C --disable-install-doc ${{ matrix.configure }} | |
- run: make prepare-gems | |
if: ${{ matrix.test_task == 'test-bundled-gems' }} | |
- run: make | |
# DEBUG: Return an exit status non-zero. | |
- run: false | |
# Launchable CLI requires Python and Java | |
# https://www.launchableinc.com/docs/resources/cli-reference/ | |
- name: Set up Python | |
uses: actions/setup-python@871daa956ca9ea99f3c3e30acb424b7960676734 # v5.0.0 | |
with: | |
python-version: "3.10" | |
- name: Set up Java | |
uses: actions/setup-java@7a445ee88d4e23b52c33fdc7601e40278616c7f8 # v4.0.0 | |
with: | |
distribution: 'temurin' | |
java-version: '17' | |
- name: Setup Launchable | |
id: setup_launchable | |
run: | | |
set -ex | |
pip install launchable | |
launchable verify | |
launchable record build --name ${GITHUB_PR_HEAD_SHA} | |
: # To avoid file name conflicts, we use a random number here as a ID. | |
random_number=$RANDOM | |
echo "random_number=$random_number" >> $GITHUB_OUTPUT | |
echo "TEST_WITH_LAUNCHABLE=--launchable-test-reports=$random_number.json" >> "$GITHUB_ENV" | |
if: ${{ (matrix.test_task == 'check' || matrix.test_task == 'test-all') }} | |
- name: Set repeat-count option for make ${{ matrix.test_task }} | |
run: echo "TEST_WITH_LAUNCHABLE=$TEST_WITH_LAUNCHABLE --repeat-count=2" >> "$GITHUB_ENV" | |
if: ${{ matrix.test_task == 'test-all' }} | |
- name: make ${{ matrix.test_task }} | |
run: | | |
make -s ${{ matrix.test_task }} TESTS="$TEST_WITH_LAUNCHABLE" ${TESTS:+TESTS=`echo "$TESTS" | sed 's| |$$/ -n!/|g;s|^|-n!/|;s|$|$$/|'`} | |
timeout-minutes: 60 | |
env: | |
RUBY_TESTOPTS: '-q --tty=no' | |
TESTS: ${{ matrix.test_task == 'check' && matrix.skipped_tests || '' }} | |
TEST_BUNDLED_GEMS_ALLOW_FAILURES: 'typeprof' | |
PRECHECK_BUNDLED_GEMS: 'no' | |
- name: make skipped tests | |
run: | | |
make -s test-all TESTS=`echo "$TESTS" | sed 's| |$$/ -n/|g;s|^|-n/|;s|$|$$/|'` | |
env: | |
GNUMAKEFLAGS: '' | |
RUBY_TESTOPTS: '-v --tty=no' | |
TESTS: ${{ matrix.skipped_tests }} | |
PRECHECK_BUNDLED_GEMS: 'no' | |
if: ${{ matrix.test_task == 'check' && matrix.skipped_tests != '' }} | |
continue-on-error: ${{ matrix.continue-on-skipped_tests || false }} | |
- name: Launchable - record tests | |
run: launchable record tests --flavor os=${{ matrix.os }} --flavor test_task=${{ matrix.test_task }} raw ${{ steps.setup_launchable.outputs.random_number }}.json | |
if: ${{ always() && (matrix.test_task == 'check' || matrix.test_task == 'test-all') }} | |
- uses: ./.github/actions/slack | |
with: | |
label: ${{ matrix.os }} / ${{ matrix.test_task }} ${{ matrix.configure }} | |
SLACK_WEBHOOK_URL: ${{ secrets.SIMPLER_ALERTS_URL }} # ruby-lang slack: ruby/simpler-alerts-bot | |
if: ${{ failure() }} | |
result: | |
if: ${{ always() }} | |
name: ${{ github.workflow }} result | |
runs-on: macos-latest | |
needs: [make] | |
steps: | |
- run: exit 1 | |
if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }} | |
defaults: | |
run: | |
working-directory: build |