summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/actions/compilers/action.yml24
-rwxr-xr-x.github/actions/compilers/entrypoint.sh36
-rw-r--r--.github/workflows/compilers.yml25
-rwxr-xr-xbootstraptest/runner.rb14
4 files changed, 82 insertions, 17 deletions
diff --git a/.github/actions/compilers/action.yml b/.github/actions/compilers/action.yml
index aa23365e49..ff060ce2e0 100644
--- a/.github/actions/compilers/action.yml
+++ b/.github/actions/compilers/action.yml
@@ -77,6 +77,16 @@ runs:
- shell: bash
run: docker pull --quiet 'ghcr.io/ruby/ruby-ci-image:${{ inputs.tag }}'
+ - name: Enable Launchable conditionally
+ id: enable-launchable
+ run: echo "enable-launchable=true" >> $GITHUB_OUTPUT
+ shell: bash
+ if: >-
+ ${{
+ github.repository == 'ruby/ruby' ||
+ (github.repository != 'ruby/ruby' && env.LAUNCHABLE_TOKEN)
+ }}
+
- name: compile
shell: bash
run: >-
@@ -98,4 +108,18 @@ runs:
--env INPUT_MSPECOPT='${{ inputs.mspecopt }}'
--env INPUT_ENABLE_SHARED='${{ inputs.enable_shared }}'
--env INPUT_STATIC_EXTS='${{ inputs.static_exts }}'
+ --env LAUNCHABLE_ORGANIZATION='${{ github.repository_owner }}'
+ --env LAUNCHABLE_WORKSPACE='${{ github.event.repository.name }}'
+ --env LAUNCHABLE_ENABLED='${{ steps.enable-launchable.outputs.enable-launchable || false }}'
+ --env GITHUB_PR_HEAD_SHA='${{ github.event.pull_request.head.sha || github.sha }}'
+ --env GITHUB_PULL_REQUEST_URL='${{ github.event.pull_request.html_url }}'
+ --env GITHUB_REF='${{ github.ref }}'
+ --env GITHUB_ACTIONS
+ --env GITHUB_RUN_ID
+ --env GITHUB_REPOSITORY
+ --env GITHUB_WORKFLOW
+ --env GITHUB_RUN_NUMBER
+ --env GITHUB_EVENT_NAME
+ --env GITHUB_SHA
+ --env GITHUB_HEAD_REF
'ghcr.io/ruby/ruby-ci-image:${{ inputs.tag }}'
diff --git a/.github/actions/compilers/entrypoint.sh b/.github/actions/compilers/entrypoint.sh
index 5d8f559066..a9bb5f0bb7 100755
--- a/.github/actions/compilers/entrypoint.sh
+++ b/.github/actions/compilers/entrypoint.sh
@@ -70,21 +70,49 @@ if [[ -n "${INPUT_STATIC_EXTS}" ]]; then
echo "::endgroup::"
fi
+ruby_test_opts=''
+tests=''
+
+# Launchable
+setup_launchable() {
+ pushd ${srcdir}
+ # Launchable creates .launchable file in the current directory, but cannot a file to ${srcdir} directory.
+ # As a workaround, we set LAUNCHABLE_SESSION_DIR to ${builddir}.
+ export LAUNCHABLE_SESSION_DIR=${builddir}
+ local github_ref="${GITHUB_REF//\//_}"
+ boot_report_path='launchable_bootstraptest.json'
+ test_report_path='launchable_test_all.json'
+ ruby_test_opts+=--launchable-test-reports="${boot_report_path}"
+ tests+=--launchable-test-reports="${test_report_path}"
+ grouped launchable record build --name "${github_ref}"_"${GITHUB_PR_HEAD_SHA}" || true
+ trap launchable_record_test EXIT
+}
+launchable_record_test() {
+ pushd "${builddir}"
+ grouped launchable record tests --flavor test_task=test --test-suite bootstraptest raw "${boot_report_path}" || true
+ if [ "$INPUT_CHECK" = "true" ]; then
+ grouped launchable record tests --flavor test_task=test-all --test-suite test-all raw "${test_report_path}" || true
+ fi
+}
+if [ "$LAUNCHABLE_ENABLED" = "true" ]; then
+ setup_launchable
+fi
+
pushd ${builddir}
grouped make showflags
grouped make all
-grouped make test
+grouped make test RUBY_TESTOPTS="${ruby_test_opts}"
[[ -z "${INPUT_CHECK}" ]] && exit 0
if [ "$INPUT_CHECK" = "true" ]; then
- tests="ruby -ext-"
+ tests+=" -- ruby -ext-"
else
- tests="$INPUT_CHECK"
+ tests+=" -- $INPUT_CHECK"
fi
# grouped make install
grouped make test-tool
-grouped make test-all TESTS="-- $tests"
+grouped make test-all TESTS="$tests"
grouped env CHECK_LEAKS=true make test-spec MSPECOPT="$INPUT_MSPECOPT"
diff --git a/.github/workflows/compilers.yml b/.github/workflows/compilers.yml
index 59b8f44abf..d8fcfc2638 100644
--- a/.github/workflows/compilers.yml
+++ b/.github/workflows/compilers.yml
@@ -54,7 +54,8 @@ jobs:
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
with: { sparse-checkout-cone-mode: false, sparse-checkout: /.github }
- - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true } }
+ # Set fetch-depth: 10 so that Launchable can receive commits information.
+ - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true, fetch-depth: 10 } }
- name: 'clang 18 LTO'
uses: './.github/actions/compilers'
with:
@@ -74,7 +75,7 @@ jobs:
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
with: { sparse-checkout-cone-mode: false, sparse-checkout: /.github }
- - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true } }
+ - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true, fetch-depth: 10 } }
- name: 'GCC 13 LTO'
uses: './.github/actions/compilers'
with:
@@ -101,7 +102,7 @@ jobs:
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
with: { sparse-checkout-cone-mode: false, sparse-checkout: /.github }
- - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true } }
+ - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true, fetch-depth: 10 } }
- { uses: './.github/actions/compilers', name: 'clang 20', with: { tag: 'clang-20' } }
- { uses: './.github/actions/compilers', name: 'clang 19', with: { tag: 'clang-19' } }
- { uses: './.github/actions/compilers', name: 'clang 18', with: { tag: 'clang-18' } }
@@ -119,7 +120,7 @@ jobs:
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
with: { sparse-checkout-cone-mode: false, sparse-checkout: /.github }
- - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true } }
+ - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true, fetch-depth: 10 } }
- { uses: './.github/actions/compilers', name: 'clang 13', with: { tag: 'clang-13' } }
- { uses: './.github/actions/compilers', name: 'clang 12', with: { tag: 'clang-12' } }
- { uses: './.github/actions/compilers', name: 'clang 11', with: { tag: 'clang-11' } }
@@ -139,7 +140,7 @@ jobs:
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
with: { sparse-checkout-cone-mode: false, sparse-checkout: /.github }
- - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true } }
+ - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true, fetch-depth: 10 } }
# -Wno-strict-prototypes is necessary with current clang-15 since
# older autoconf generate functions without prototype and -pedantic
# now implies strict-prototypes. Disabling the error but leaving the
@@ -164,7 +165,7 @@ jobs:
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
with: { sparse-checkout-cone-mode: false, sparse-checkout: /.github }
- - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true } }
+ - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true, fetch-depth: 10 } }
- { uses: './.github/actions/compilers', name: 'C++20', with: { CXXFLAGS: '-std=c++20 -Werror=pedantic -pedantic-errors -Wno-c++11-long-long' } }
- { uses: './.github/actions/compilers', name: 'C++23', with: { CXXFLAGS: '-std=c++23 -Werror=pedantic -pedantic-errors -Wno-c++11-long-long' } }
- { uses: './.github/actions/compilers', name: 'C++26', with: { CXXFLAGS: '-std=c++26 -Werror=pedantic -pedantic-errors -Wno-c++11-long-long' } }
@@ -183,7 +184,7 @@ jobs:
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
with: { sparse-checkout-cone-mode: false, sparse-checkout: /.github }
- - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true } }
+ - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true, fetch-depth: 10 } }
- { uses: './.github/actions/compilers', name: 'disable-jit', with: { append_configure: '--disable-yjit --disable-rjit' } }
- { uses: './.github/actions/compilers', name: 'disable-dln', with: { append_configure: '--disable-dln' } }
- { uses: './.github/actions/compilers', name: 'enable-mkmf-verbose', with: { append_configure: '--enable-mkmf-verbose' } }
@@ -202,7 +203,7 @@ jobs:
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
with: { sparse-checkout-cone-mode: false, sparse-checkout: /.github }
- - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true } }
+ - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true, fetch-depth: 10 } }
- { uses: './.github/actions/compilers', name: 'NDEBUG', with: { cppflags: '-DNDEBUG' } }
- { uses: './.github/actions/compilers', name: 'RUBY_DEBUG', with: { cppflags: '-DRUBY_DEBUG' } }
- { uses: './.github/actions/compilers', name: 'ARRAY_DEBUG', with: { cppflags: '-DARRAY_DEBUG' } }
@@ -221,7 +222,7 @@ jobs:
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
with: { sparse-checkout-cone-mode: false, sparse-checkout: /.github }
- - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true } }
+ - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true, fetch-depth: 10 } }
- { uses: './.github/actions/compilers', name: 'HASH_DEBUG', with: { cppflags: '-DHASH_DEBUG' } }
- { uses: './.github/actions/compilers', name: 'ID_TABLE_DEBUG', with: { cppflags: '-DID_TABLE_DEBUG' } }
- { uses: './.github/actions/compilers', name: 'RGENGC_DEBUG=-1', with: { cppflags: '-DRGENGC_DEBUG=-1' } }
@@ -240,7 +241,7 @@ jobs:
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
with: { sparse-checkout-cone-mode: false, sparse-checkout: /.github }
- - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true } }
+ - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true, fetch-depth: 10 } }
- { uses: './.github/actions/compilers', name: 'USE_LAZY_LOAD', with: { cppflags: '-DUSE_LAZY_LOAD' } }
- { uses: './.github/actions/compilers', name: 'USE_SYMBOL_GC=0', with: { cppflags: '-DUSE_SYMBOL_GC=0' } }
- { uses: './.github/actions/compilers', name: 'USE_THREAD_CACHE=0', with: { cppflags: '-DUSE_THREAD_CACHE=0' } }
@@ -259,7 +260,7 @@ jobs:
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
with: { sparse-checkout-cone-mode: false, sparse-checkout: /.github }
- - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true } }
+ - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true, fetch-depth: 10 } }
- { uses: './.github/actions/compilers', name: 'GC_DEBUG_STRESS_TO_CLASS', with: { cppflags: '-DGC_DEBUG_STRESS_TO_CLASS' } }
- { uses: './.github/actions/compilers', name: 'GC_ENABLE_LAZY_SWEEP=0', with: { cppflags: '-DGC_ENABLE_LAZY_SWEEP=0' } }
- { uses: './.github/actions/compilers', name: 'GC_PROFILE_DETAIL_MEMORY', with: { cppflags: '-DGC_PROFILE_DETAIL_MEMORY' } }
@@ -278,7 +279,7 @@ jobs:
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
with: { sparse-checkout-cone-mode: false, sparse-checkout: /.github }
- - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true } }
+ - { uses: './.github/actions/setup/directories', with: { srcdir: 'src', builddir: 'build', makeup: true, fetch-depth: 10 } }
- { uses: './.github/actions/compilers', name: 'VM_DEBUG_BP_CHECK', with: { cppflags: '-DVM_DEBUG_BP_CHECK' } }
- { uses: './.github/actions/compilers', name: 'VM_DEBUG_VERIFY_METHOD_CACHE', with: { cppflags: '-DVM_DEBUG_VERIFY_METHOD_CACHE' } }
- { uses: './.github/actions/compilers', name: 'enable-yjit', with: { append_configure: '--enable-yjit --disable-rjit' } }
diff --git a/bootstraptest/runner.rb b/bootstraptest/runner.rb
index 24324fa51f..03e4a46968 100755
--- a/bootstraptest/runner.rb
+++ b/bootstraptest/runner.rb
@@ -236,7 +236,19 @@ End
return true
end
- require_relative '../tool/lib/launchable'
+ begin
+ require_relative '../tool/lib/launchable'
+ rescue LoadError
+ # The following error sometimes happens, so we're going to skip writing Launchable report files in this case.
+ #
+ # ```
+ # /tmp/tmp.bISss9CtXZ/.ext/common/json/ext.rb:15:in 'Kernel#require':
+ # /tmp/tmp.bISss9CtXZ/.ext/x86_64-linux/json/ext/parser.so:
+ # undefined symbol: ruby_abi_version - ruby_abi_version (LoadError)
+ # ```
+ #
+ return true
+ end
BT.launchable_test_reports = writer = Launchable::JsonStreamWriter.new($1)
writer.write_array('testCases')
at_exit {