CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
251 lines
10 KiB
YAML
251 lines
10 KiB
YAML
name: CI Checks
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
on:
|
|
pull_request:
|
|
types:
|
|
- opened
|
|
- synchronize
|
|
- reopened
|
|
# When a PR is closed, we still start this workflow, but then skip
|
|
# all the jobs, which makes it effectively a no-op. The reason to
|
|
# do this is that it allows us to take advantage of concurrency groups
|
|
# to cancel in progress CI jobs whenever the PR is closed.
|
|
- closed
|
|
push:
|
|
branches:
|
|
- 'release/**'
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
premerge-checks-linux:
|
|
name: Build and Test Linux${{ (startsWith(matrix.runs-on, 'depot-ubuntu-24.04-arm') && ' AArch64') || '' }}
|
|
if: >-
|
|
github.repository_owner == 'llvm' &&
|
|
(github.event_name != 'pull_request' || github.event.action != 'closed')
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
runs-on:
|
|
- depot-ubuntu-24.04-arm-16
|
|
- llvm-premerge-linux-runners
|
|
runs-on: ${{ matrix.runs-on }}
|
|
container:
|
|
# The llvm-premerge agents are already containers and running the
|
|
# this same image, so we can't use a container for the github action
|
|
# job. The depot containers are running on VMs, so we can use a
|
|
# container. This helps ensure the build environment is as close
|
|
# as possible on both the depot runners and the llvm-premerge runners.
|
|
image: ${{ (startsWith(matrix.runs-on, 'depot-ubuntu-24.04-arm') && format('ghcr.io/{0}/arm64v8/ci-ubuntu-24.04',github.repository_owner) ) || null }}
|
|
# --privileged is needed to run the lldb tests that disable aslr.
|
|
# The SCCACHE environment variables are need to be copied from the host
|
|
# to the container to make sure it is configured correctly to use the
|
|
# depot cache.
|
|
options: >-
|
|
--privileged
|
|
--env SCCACHE_WEBDAV_ENDPOINT
|
|
--env SCCACHE_WEBDAV_TOKEN
|
|
defaults:
|
|
run:
|
|
# The run step defaults to using sh as the shell when running in a
|
|
# container, so make bash the default to ensure consistency between
|
|
# container and non-container jobs.
|
|
shell: bash
|
|
steps:
|
|
- name: Checkout LLVM
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
fetch-depth: 2
|
|
- name: Build and Test
|
|
timeout-minutes: 120
|
|
env:
|
|
GITHUB_TOKEN: ${{ github.token }}
|
|
GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }}
|
|
run: |
|
|
git config --global --add safe.directory '*'
|
|
|
|
source <(git diff --name-only HEAD~1...HEAD | python3 .ci/compute_projects.py)
|
|
|
|
if [[ "${projects_to_build}" == "" ]]; then
|
|
echo "No projects to build"
|
|
exit 0
|
|
fi
|
|
|
|
echo "Building projects: ${projects_to_build}"
|
|
echo "Running project checks targets: ${project_check_targets}"
|
|
echo "Building runtimes: ${runtimes_to_build}"
|
|
echo "Running runtimes checks targets: ${runtimes_check_targets}"
|
|
echo "Running runtimes checks requiring reconfiguring targets: ${runtimes_check_targets_needs_reconfig}"
|
|
|
|
export CC=/opt/llvm/bin/clang
|
|
export CXX=/opt/llvm/bin/clang++
|
|
|
|
# The linux-premerge runners are hosted on GCP and have a different
|
|
# cache setup than the depot runners.
|
|
if [[ "${{ matrix.runs-on }}" = "llvm-premerge-linux-runners" ]]; then
|
|
# This environment variable is passes into the container through the
|
|
# runner pod definition. This differs between our two clusters which
|
|
# why we do not hardcode it.
|
|
export SCCACHE_GCS_BUCKET=$CACHE_GCS_BUCKET
|
|
export SCCACHE_GCS_RW_MODE=READ_WRITE
|
|
fi
|
|
env
|
|
|
|
# Set the idle timeout to zero to ensure sccache runs for the
|
|
# entire duration of the job. Otherwise it might stop if we run
|
|
# several test suites in a row and discard statistics that we want
|
|
# to save in the end.
|
|
export SCCACHE_IDLE_TIMEOUT=0
|
|
mkdir artifacts
|
|
SCCACHE_LOG=info SCCACHE_ERROR_LOG=$(pwd)/artifacts/sccache.log sccache --start-server
|
|
|
|
./.ci/monolithic-linux.sh "${projects_to_build}" "${project_check_targets}" "${runtimes_to_build}" "${runtimes_check_targets}" "${runtimes_check_targets_needs_reconfig}" "${enable_cir}"
|
|
- name: Upload Artifacts
|
|
# 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
|
|
# a checks failure.
|
|
# https://github.com/actions/upload-artifact/issues/569
|
|
continue-on-error: true
|
|
if: '!cancelled()'
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
with:
|
|
name: Premerge Artifacts (Linux ${{ runner.arch }})
|
|
path: artifacts/
|
|
retention-days: 5
|
|
include-hidden-files: 'true'
|
|
- name: Upload Comment
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
if: ${{ always() && !startsWith(matrix.runs-on, 'depot-ubuntu-24.04-arm') }}
|
|
continue-on-error: true
|
|
with:
|
|
name: workflow-args-x86-linux
|
|
path: |
|
|
comments-Linux-x86_64
|
|
|
|
premerge-checks-windows:
|
|
name: Build and Test Windows
|
|
if: >-
|
|
github.repository_owner == 'llvm' &&
|
|
(github.event_name != 'pull_request' || github.event.action != 'closed')
|
|
runs-on: llvm-premerge-windows-2022-runners
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
steps:
|
|
- name: Checkout LLVM
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
fetch-depth: 2
|
|
- name: Compute Projects
|
|
id: vars
|
|
run: |
|
|
source <(git diff --name-only HEAD~1...HEAD | python .ci/compute_projects.py)
|
|
|
|
if [[ "${projects_to_build}" == "" ]]; then
|
|
echo "No projects to build"
|
|
fi
|
|
|
|
echo "Building projects: ${projects_to_build}"
|
|
echo "Running project checks targets: ${project_check_targets}"
|
|
echo "Building runtimes: ${runtimes_to_build}"
|
|
echo "Running runtimes checks targets: ${runtimes_check_targets}"
|
|
|
|
echo "windows-projects=${projects_to_build}" >> $GITHUB_OUTPUT
|
|
echo "windows-check-targets=${project_check_targets}" >> $GITHUB_OUTPUT
|
|
echo "windows-runtimes=${runtimes_to_build}" >> $GITHUB_OUTPUT
|
|
echo "windows-runtimes-check-targets=${runtimes_check_targets}" >> $GITHUB_OUTPUT
|
|
- name: Build and Test
|
|
timeout-minutes: 180
|
|
if: ${{ steps.vars.outputs.windows-projects != '' }}
|
|
shell: cmd
|
|
env:
|
|
GITHUB_TOKEN: ${{ github.token }}
|
|
GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }}
|
|
WINDOWS_PROJECTS: ${{ steps.vars.outputs.windows-projects }}
|
|
WINDOWS_CHECK_TARGETS: ${{ steps.vars.outputs.windows-check-targets }}
|
|
WINDOWS_RUNTIMES: ${{ steps.vars.outputs.windows-runtimes }}
|
|
WINDOWS_RUNTIMES_CHECK_TARGETS: ${{ steps.vars.outputs.windows-runtimes-check-targets }}
|
|
run: |
|
|
call C:\\BuildTools\\Common7\\Tools\\VsDevCmd.bat -arch=amd64 -host_arch=amd64
|
|
# See the comments above in the Linux job for why we define each of
|
|
# these environment variables.
|
|
bash -c "export SCCACHE_GCS_BUCKET=$CACHE_GCS_BUCKET; export SCCACHE_GCS_RW_MODE=READ_WRITE; export SCCACHE_IDLE_TIMEOUT=0; mkdir artifacts; SCCACHE_LOG=info SCCACHE_ERROR_LOG=$(pwd)/artifacts/sccache.log sccache --start-server; .ci/monolithic-windows.sh \"$WINDOWS_PROJECTS\" \"$WINDOWS_CHECK_TARGETS\" \"$WINDOWS_RUNTIMES\" \"$WINDOWS_RUNTIMES_CHECK_TARGETS\""
|
|
- name: Upload Artifacts
|
|
# 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
|
|
# a checks failure.
|
|
# https://github.com/actions/upload-artifact/issues/569
|
|
continue-on-error: true
|
|
if: '!cancelled()'
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
with:
|
|
name: Premerge Artifacts (Windows)
|
|
path: artifacts/
|
|
retention-days: 5
|
|
include-hidden-files: 'true'
|
|
- name: Upload Comment
|
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
if: always()
|
|
continue-on-error: true
|
|
with:
|
|
name: workflow-args-windows
|
|
path: |
|
|
comments-Windows-AMD64
|
|
|
|
premerge-check-macos:
|
|
name: MacOS Premerge Checks
|
|
runs-on: macos-14
|
|
if: >-
|
|
github.repository_owner == 'llvm' &&
|
|
(startswith(github.ref_name, 'release/') ||
|
|
startswith(github.base_ref, 'release/')) &&
|
|
(github.event_name != 'pull_request' || github.event.action != 'closed')
|
|
steps:
|
|
- name: Checkout LLVM
|
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
fetch-depth: 2
|
|
- name: Setup ccache
|
|
uses: hendrikmuhs/ccache-action@33522472633dbd32578e909b315f5ee43ba878ce # v1.2.22
|
|
with:
|
|
max-size: "2000M"
|
|
- name: Install Ninja
|
|
run: |
|
|
brew install ninja
|
|
- name: Build and Test
|
|
run: |
|
|
source <(git diff --name-only HEAD~1...HEAD | python3 .ci/compute_projects.py)
|
|
|
|
if [[ "${projects_to_build}" == "" ]]; then
|
|
echo "No projects to build"
|
|
exit 0
|
|
fi
|
|
|
|
echo "Building projects: ${projects_to_build}"
|
|
echo "Running project checks targets: ${project_check_targets}"
|
|
|
|
# -DLLVM_DISABLE_ASSEMBLY_FILES=ON is for
|
|
# https://github.com/llvm/llvm-project/issues/81967
|
|
# Disable sharding in lit so that the LIT_XFAIL environment var works.
|
|
cmake -G Ninja \
|
|
-B build \
|
|
-S llvm \
|
|
-DLLVM_ENABLE_PROJECTS="${projects_to_build}" \
|
|
-DLLVM_DISABLE_ASSEMBLY_FILES=ON \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DLLDB_INCLUDE_TESTS=OFF \
|
|
-DLLVM_ENABLE_ASSERTIONS=ON \
|
|
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
|
|
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
|
|
|
|
# The libcxx tests fail, so we are skipping the runtime targets.
|
|
ninja -C build ${project_check_targets}
|