[premerge] Route macOS build through a monolithic script to enable Job Summary (#211565)
The macOS premerge job built inline instead of via a `monolithic-*.sh` script, so it never emitted a GitHub Job Summary or JUnit XML like Linux/Windows do on failure
This commit is contained in:
parent
b360754895
commit
e73371acbc
2 changed files with 57 additions and 23 deletions
50
.ci/monolithic-macos.sh
Executable file
50
.ci/monolithic-macos.sh
Executable file
|
|
@ -0,0 +1,50 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
#===----------------------------------------------------------------------===##
|
||||||
|
#
|
||||||
|
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||||
|
# See https://llvm.org/LICENSE.txt for license information.
|
||||||
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||||
|
#
|
||||||
|
#===----------------------------------------------------------------------===##
|
||||||
|
|
||||||
|
#
|
||||||
|
# This script performs a monolithic build of the monorepo and runs the tests of
|
||||||
|
# most projects on macOS.
|
||||||
|
#
|
||||||
|
|
||||||
|
source .ci/utils.sh
|
||||||
|
|
||||||
|
projects="${1}"
|
||||||
|
targets="${2}"
|
||||||
|
runtimes="${3}"
|
||||||
|
runtime_targets="${4}"
|
||||||
|
|
||||||
|
start-group "CMake"
|
||||||
|
|
||||||
|
xcrun cmake -G Ninja \
|
||||||
|
-B "${BUILD_DIR}" \
|
||||||
|
-S "${MONOREPO_ROOT}"/llvm \
|
||||||
|
-D LLVM_ENABLE_PROJECTS="${projects}" \
|
||||||
|
-D LLVM_ENABLE_RUNTIMES="${runtimes}" \
|
||||||
|
-D LLVM_DISABLE_ASSEMBLY_FILES=ON \
|
||||||
|
-D CMAKE_BUILD_TYPE=Release \
|
||||||
|
-D LLDB_INCLUDE_TESTS=OFF \
|
||||||
|
-D LLVM_ENABLE_ASSERTIONS=ON \
|
||||||
|
-D Python3_EXECUTABLE="${RUNNER_TEMP}/venv/bin/python3" \
|
||||||
|
-D LLVM_LIT_ARGS="-v --xunit-xml-output ${BUILD_DIR}/test-results.xml --use-unique-output-file-name --timeout=1200 --time-tests --succinct" \
|
||||||
|
-D CMAKE_C_COMPILER_LAUNCHER=sccache \
|
||||||
|
-D CMAKE_CXX_COMPILER_LAUNCHER=sccache
|
||||||
|
|
||||||
|
start-group "ninja"
|
||||||
|
|
||||||
|
if [[ -n "${targets}" ]]; then
|
||||||
|
ninja -C "${BUILD_DIR}" ${targets} 2>&1 | tee ninja.log
|
||||||
|
cp ${BUILD_DIR}/.ninja_log ninja.ninja_log
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n "${runtime_targets}" ]]; then
|
||||||
|
start-group "ninja Runtimes"
|
||||||
|
|
||||||
|
ninja -C "${BUILD_DIR}" ${runtime_targets} 2>&1 | tee ninja_runtimes.log
|
||||||
|
cp ${BUILD_DIR}/.ninja_log ninja_runtimes.ninja_log
|
||||||
|
fi
|
||||||
30
.github/workflows/premerge.yaml
vendored
30
.github/workflows/premerge.yaml
vendored
|
|
@ -286,6 +286,10 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
brew install ninja cmake
|
brew install ninja cmake
|
||||||
command -v sccache >/dev/null || brew install sccache
|
command -v sccache >/dev/null || brew install sccache
|
||||||
|
- name: Set up Python venv
|
||||||
|
run: |
|
||||||
|
"$(brew --prefix python@3.14)/bin/python3.14" -m venv "${RUNNER_TEMP}/venv"
|
||||||
|
echo "${RUNNER_TEMP}/venv/bin" >> "$GITHUB_PATH"
|
||||||
- name: Build and Test
|
- name: Build and Test
|
||||||
timeout-minutes: 240
|
timeout-minutes: 240
|
||||||
env:
|
env:
|
||||||
|
|
@ -296,34 +300,14 @@ jobs:
|
||||||
RUNTIMES: ${{ needs.premerge-compute-macos.outputs.macos-runtimes }}
|
RUNTIMES: ${{ needs.premerge-compute-macos.outputs.macos-runtimes }}
|
||||||
RUNTIMES_CHECK_TARGETS: ${{ needs.premerge-compute-macos.outputs.macos-runtimes-check-targets }}
|
RUNTIMES_CHECK_TARGETS: ${{ needs.premerge-compute-macos.outputs.macos-runtimes-check-targets }}
|
||||||
CLANG_TOOLCHAIN_PROGRAM_TIMEOUT: 120
|
CLANG_TOOLCHAIN_PROGRAM_TIMEOUT: 120
|
||||||
|
GITHUB_TOKEN: ${{ github.token }}
|
||||||
|
GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }}
|
||||||
run: |
|
run: |
|
||||||
export SCCACHE_IDLE_TIMEOUT=0
|
export SCCACHE_IDLE_TIMEOUT=0
|
||||||
mkdir -p artifacts
|
mkdir -p artifacts
|
||||||
SCCACHE_LOG=info SCCACHE_ERROR_LOG=$(pwd)/artifacts/sccache.log sccache --start-server
|
SCCACHE_LOG=info SCCACHE_ERROR_LOG=$(pwd)/artifacts/sccache.log sccache --start-server
|
||||||
|
|
||||||
xcrun cmake -G Ninja \
|
./.ci/monolithic-macos.sh "${PROJECTS}" "${CHECK_TARGETS}" "${RUNTIMES}" "${RUNTIMES_CHECK_TARGETS}"
|
||||||
-B build \
|
|
||||||
-S llvm \
|
|
||||||
-DLLVM_ENABLE_PROJECTS="${PROJECTS}" \
|
|
||||||
-DLLVM_ENABLE_RUNTIMES="${RUNTIMES}" \
|
|
||||||
-DLLVM_DISABLE_ASSEMBLY_FILES=ON \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DLLDB_INCLUDE_TESTS=OFF \
|
|
||||||
-DLLVM_ENABLE_ASSERTIONS=ON \
|
|
||||||
-DCMAKE_C_COMPILER_LAUNCHER=sccache \
|
|
||||||
-DCMAKE_CXX_COMPILER_LAUNCHER=sccache
|
|
||||||
|
|
||||||
ninja -C build ${CHECK_TARGETS}
|
|
||||||
|
|
||||||
if [[ -n "${RUNTIMES_CHECK_TARGETS}" ]]; then
|
|
||||||
ninja -C build ${RUNTIMES_CHECK_TARGETS}
|
|
||||||
fi
|
|
||||||
- name: Show sccache stats
|
|
||||||
if: always()
|
|
||||||
run: |
|
|
||||||
mkdir -p artifacts
|
|
||||||
sccache --show-stats
|
|
||||||
sccache --show-stats >> artifacts/sccache_stats.txt
|
|
||||||
- name: Upload Artifacts
|
- name: Upload Artifacts
|
||||||
# In some cases, Github will fail to upload the artifact. We want to
|
# In some cases, Github will fail to upload the artifact. We want to
|
||||||
# continue anyways as a failed artifact upload is an infra failure, not
|
# continue anyways as a failed artifact upload is an infra failure, not
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue