1515# Run this workflow on a schedule
1616name : Precompiled images
1717
18+ # on:
19+ # schedule:
20+ # - cron: '00 09 * * *' # scheduled job
21+
1822on :
19- schedule :
20- - cron : ' 00 09 * * *'
23+ pull_request :
24+ types :
25+ - opened
26+ - synchronize
27+ branches :
28+ - ci-precompile-ubuntu24.04
29+ push :
30+ branches :
31+ - ci-precompile-ubuntu24.04
2132
2233jobs :
2334 set-driver-version-matrix :
4354 echo "kernel_flavors=$kernel_flavors_json" >> $GITHUB_OUTPUT
4455
4556 # get ubuntu distributions
46- DIST=("ubuntu22.04")
57+ # DIST=("ubuntu22.04" "ubuntu24.04")
58+ DIST=("ubuntu24.04")
4759 dist_json=$(printf '%s\n' "${DIST[@]}" | jq -R . | jq -cs .)
4860 echo "dist=$dist_json" >> $GITHUB_OUTPUT
4961
@@ -55,11 +67,16 @@ jobs:
5567 driver_branch : ${{ fromJson(needs.set-driver-version-matrix.outputs.driver_branch) }}
5668 flavor : ${{ fromJson(needs.set-driver-version-matrix.outputs.kernel_flavors) }}
5769 dist : ${{ fromJson(needs.set-driver-version-matrix.outputs.dist) }}
70+ exclude :
71+ - dist : ubuntu24.04
72+ driver_branch : 535
5873 steps :
5974 - uses : actions/checkout@v4
6075 name : Check out code
6176 - name : Calculate build vars
6277 id : vars
78+ env :
79+ DIST : ${{ matrix.dist }}
6380 run : |
6481 echo "COMMIT_SHORT_SHA=${GITHUB_SHA:0:8}" >> $GITHUB_ENV
6582 echo "LOWERCASE_REPO_OWNER=$(echo "${GITHUB_REPOSITORY_OWNER}" | awk '{print tolower($0)}')" >> $GITHUB_ENV
7087 echo "PUSH_ON_BUILD=${GENERATE_ARTIFACTS}" >> $GITHUB_ENV
7188 echo "BUILD_MULTI_ARCH_IMAGES=${GENERATE_ARTIFACTS}" >> $GITHUB_ENV
7289
90+ if [ "$DIST" == "ubuntu22.04" ]; then
91+ echo "BASE_TARGET=jammy" >> $GITHUB_OUTPUT
92+ echo "LTS_KERNEL=5.15" >> $GITHUB_OUTPUT
93+ elif [ "$DIST" == "ubuntu24.04" ]; then
94+ echo "BASE_TARGET=noble" >> $GITHUB_OUTPUT
95+ echo "LTS_KERNEL=6.8" >> $GITHUB_OUTPUT
96+ fi
97+
7398 - name : Set up QEMU
7499 uses : docker/setup-qemu-action@v3
75100 - name : Set up Docker Buildx
@@ -84,9 +109,10 @@ jobs:
84109 env :
85110 IMAGE_NAME : ghcr.io/nvidia/driver
86111 VERSION : ${COMMIT_SHORT_SHA}
87- BASE_TARGET : jammy
112+ BASE_TARGET : ${{ steps.vars.outputs.BASE_TARGET }}
113+ LTS_KERNEL : ${{ steps.vars.outputs.LTS_KERNEL }}
88114 run : |
89- make DRIVER_BRANCH=${{ matrix.driver_branch }} KERNEL_FLAVOR=${{ matrix.flavor }} build-base-${BASE_TARGET}
115+ make DRIVER_BRANCH=${{ matrix.driver_branch }} KERNEL_FLAVOR=${{ matrix.flavor }} LTS_KERNEL=${LTS_KERNEL} build-base-${BASE_TARGET}
90116
91117 trap "docker rm -f base-${BASE_TARGET}-${{ matrix.flavor }}" EXIT
92118 docker run -d --name base-${BASE_TARGET}-${{ matrix.flavor }} ghcr.io/nvidia/driver:base-${BASE_TARGET}-${{ matrix.flavor }}-${{ matrix.driver_branch }}
@@ -105,12 +131,13 @@ jobs:
105131 source kernel_version.txt && \
106132 make DRIVER_VERSIONS=${DRIVER_VERSIONS} DRIVER_BRANCH=${{ matrix.driver_branch }} build-${DIST}-${DRIVER_VERSION}
107133
108- - name : Save build image as a tar
134+ - name : Save build image and kernel version file
109135 env :
110136 DIST : ${{ matrix.dist }}
111137 PRIVATE_REGISTRY : " ghcr.io"
112138 run : |
113139 source kernel_version.txt
140+ tar -cvf kernel-version-${{ matrix.driver_branch }}-${KERNEL_VERSION}-${DIST}.tar kernel_version.txt
114141 docker save "${PRIVATE_REGISTRY}/nvidia/driver:${{ matrix.driver_branch }}-${KERNEL_VERSION}-${DIST}" \
115142 -o ./driver-images-${{ matrix.driver_branch }}-${KERNEL_VERSION}-${DIST}.tar
116143 # set env for artifacts upload
@@ -123,12 +150,21 @@ jobs:
123150 name : driver-images-${{ matrix.driver_branch }}-${{ env.KERNEL_VERSION }}-${{ env.DIST }}
124151 path : ./driver-images-${{ matrix.driver_branch }}-${{ env.KERNEL_VERSION }}-${{ env.DIST }}.tar
125152 retention-days : 1
126-
153+
154+ - name : Upload kernel version as an artifact
155+ uses : actions/upload-artifact@v4
156+ with :
157+ name : kernel-version-${{ matrix.driver_branch }}-${{ env.KERNEL_VERSION }}-${{ env.DIST }}
158+ path : ./kernel-version-${{ matrix.driver_branch }}-${{ env.KERNEL_VERSION }}-${{ env.DIST }}.tar
159+ retention-days : 1
160+
127161 determine-e2e-test-matrix :
128162 runs-on : linux-amd64-cpu4
129163 strategy :
130164 matrix :
131165 dist : ${{ fromJson(needs.set-driver-version-matrix.outputs.dist) }}
166+ ispr :
167+ - ${{github.event_name == 'pull_request'}}
132168 needs :
133169 - precompiled-build-image
134170 - set-driver-version-matrix
@@ -149,16 +185,28 @@ jobs:
149185 - name : Set kernel version
150186 id : set_kernel_version
151187 env :
152- BASE_TARGET : " jammy"
153188 DIST : ${{ matrix.dist }}
189+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
154190 run : |
155191 echo "matrix_values_not_empty=0" >> $GITHUB_OUTPUT
156192
193+ if [ "$DIST" == "ubuntu22.04" ]; then
194+ export BASE_TARGET="jammy"
195+ export LTS_KERNEL="5.15"
196+ elif [ "$DIST" == "ubuntu24.04" ]; then
197+ export BASE_TARGET="noble"
198+ export LTS_KERNEL="6.8"
199+ fi
200+
157201 kernel_flavors_json='${{ needs.set-driver-version-matrix.outputs.kernel_flavors }}'
158202 KERNEL_FLAVORS=($(echo "$kernel_flavors_json" | jq -r '.[]'))
159203 driver_branch_json='${{ needs.set-driver-version-matrix.outputs.driver_branch }}'
160204 DRIVER_BRANCHES=($(echo "$driver_branch_json" | jq -r '.[]'))
161205
206+ if [ "$DIST" == "ubuntu24.04" ]; then
207+ DRIVER_BRANCHES=("${DRIVER_BRANCHES[@]/535}")
208+ DRIVER_BRANCHES=("${DRIVER_BRANCHES[@]}")
209+ fi
162210 source ./tests/scripts/ci-precompiled-helpers.sh
163211 KERNEL_VERSIONS=($(get_kernel_versions_to_test $BASE_TARGET KERNEL_FLAVORS[@] DRIVER_BRANCHES[@] $DIST))
164212 if [ -z "$KERNEL_VERSIONS" ]; then
@@ -201,7 +249,7 @@ jobs:
201249 aws_access_key_id : ${{ secrets.AWS_ACCESS_KEY_ID }}
202250 aws_secret_access_key : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
203251 aws_ssh_key : ${{ secrets.AWS_SSH_KEY }}
204- holodeck_config : " tests/holodeck .yaml"
252+ holodeck_config : " tests/holodeck_${{ matrix.dist }} .yaml"
205253
206254 - name : Get public dns name
207255 id : get_public_dns_name
@@ -222,6 +270,15 @@ jobs:
222270 DRIVER_BRANCHES=($(echo "$driver_branch_json" | jq -r '.[]'))
223271 echo "DRIVER_BRANCHES=${DRIVER_BRANCHES[*]}" >> $GITHUB_ENV
224272
273+ # step added to skip azure e2e tests and publish the image
274+ # FIXME -- remove step once azure kernel upgrade starts working
275+ - name : Skip azure e2e
276+ run : |
277+ if [[ "${KERNEL_VERSION}" == *-azure ]]; then
278+ echo "e2e test for azure flavor skipped, as kernel upgrade AWS => azure is not supported"
279+ exit 0
280+ fi
281+
225282 - name : Install GitHub CLI
226283 run : |
227284 sudo apt-get update
@@ -296,7 +353,12 @@ jobs:
296353 matrix :
297354 driver_branch : ${{ fromJson(needs.set-driver-version-matrix.outputs.driver_branch) }}
298355 kernel_version : ${{ fromJson(needs.determine-e2e-test-matrix.outputs.matrix_values) }}
299- dist : ${{ fromJson(needs.set-driver-version-matrix.outputs.dist) }}
356+ dist : ${{ fromJson(needs.set-driver-version-matrix.outputs.dist) }}
357+ ispr :
358+ - ${{github.event_name == 'pull_request'}}
359+ exclude :
360+ - dist : ubuntu24.04
361+ driver_branch : 535
300362 steps :
301363 - name : Check out code
302364 uses : actions/checkout@v4
0 commit comments