@@ -24,17 +24,45 @@ concurrency:
24
24
25
25
jobs :
26
26
premerge-checks-linux :
27
- name : Build and Test Linux
27
+ name : Build and Test Linux${{ (startsWith(matrix.runs-on, 'depot-ubuntu-24.04-arm') && ' AArch64') || '' }}
28
28
if : >-
29
29
github.repository_owner == 'llvm' &&
30
30
(github.event_name != 'pull_request' || github.event.action != 'closed')
31
- runs-on : llvm-premerge-linux-runners
31
+ strategy :
32
+ fail-fast : false
33
+ matrix :
34
+ runs-on :
35
+ - depot-ubuntu-24.04-arm-16
36
+ - llvm-premerge-linux-runners
37
+ runs-on : ${{ matrix.runs-on }}
38
+ container :
39
+ # The llvm-premerge agents are already containers and running the
40
+ # this same image, so we can't use a container for the github action
41
+ # job. The depot containers are running on VMs, so we can use a
42
+ # container. This helps ensure the build environment is as close
43
+ # as possible on both the depot runners and the llvm-premerge runners.
44
+ image : ${{ (startsWith(matrix.runs-on, 'depot-ubuntu-24.04-arm') && format('ghcr.io/{0}/arm64v8/ci-ubuntu-24.04',github.repository_owner) ) || null }}
45
+ # --privileged is needed to run the lldb tests that disable aslr.
46
+ # The SCCACHE environment variables are need to be copied from the host
47
+ # to the container to make sure it is configured correctly to use the
48
+ # depot cache.
49
+ options : >-
50
+ --privileged
51
+ --env SCCACHE_WEBDAV_ENDPOINT
52
+ --env SCCACHE_WEBDAV_TOKEN
53
+ defaults :
54
+ run :
55
+ # The run step defaults to using sh as the shell when running in a
56
+ # container, so make bash the default to ensure consistency between
57
+ # container and non-container jobs.
58
+ shell : bash
32
59
steps :
33
60
- name : Checkout LLVM
34
61
uses : actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
35
62
with :
36
63
fetch-depth : 2
37
64
- name : Build and Test
65
+ continue-on-error : ${{ runner.arch == 'ARM64' }}
38
66
run : |
39
67
git config --global --add safe.directory '*'
40
68
@@ -54,11 +82,16 @@ jobs:
54
82
export CC=/opt/llvm/bin/clang
55
83
export CXX=/opt/llvm/bin/clang++
56
84
57
- # This environment variable is passes into the container through the
58
- # runner pod definition. This differs between our two clusters which
59
- # why we do not hardcode it.
60
- export SCCACHE_GCS_BUCKET=$CACHE_GCS_BUCKET
61
- export SCCACHE_GCS_RW_MODE=READ_WRITE
85
+ # The linux-premerge runners are hosted on GCP and have a different
86
+ # cache setup than the depot runners.
87
+ if [[ "${{ matrix.runs-on }}" = "llvm-premerge-linux-runners" ]]; then
88
+ # This environment variable is passes into the container through the
89
+ # runner pod definition. This differs between our two clusters which
90
+ # why we do not hardcode it.
91
+ export SCCACHE_GCS_BUCKET=$CACHE_GCS_BUCKET
92
+ export SCCACHE_GCS_RW_MODE=READ_WRITE
93
+ fi
94
+ env
62
95
63
96
# Set the idle timeout to zero to ensure sccache runs for the
64
97
# entire duration of the job. Otherwise it might stop if we run
78
111
if : ' !cancelled()'
79
112
uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
80
113
with :
81
- name : Premerge Artifacts (Linux)
114
+ name : Premerge Artifacts (Linux ${{ runner.arch }} )
82
115
path : artifacts/
83
116
retention-days : 5
84
117
include-hidden-files : ' true'
0 commit comments