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" )
4758 dist_json=$(printf '%s\n' "${DIST[@]}" | jq -R . | jq -cs .)
4859 echo "dist=$dist_json" >> $GITHUB_OUTPUT
4960
@@ -55,11 +66,16 @@ jobs:
5566 driver_branch : ${{ fromJson(needs.set-driver-version-matrix.outputs.driver_branch) }}
5667 flavor : ${{ fromJson(needs.set-driver-version-matrix.outputs.kernel_flavors) }}
5768 dist : ${{ fromJson(needs.set-driver-version-matrix.outputs.dist) }}
69+ exclude :
70+ - dist : ubuntu24.04
71+ driver_branch : 535
5872 steps :
5973 - uses : actions/checkout@v4
6074 name : Check out code
6175 - name : Calculate build vars
6276 id : vars
77+ env :
78+ DIST : ${{ matrix.dist }}
6379 run : |
6480 echo "COMMIT_SHORT_SHA=${GITHUB_SHA:0:8}" >> $GITHUB_ENV
6581 echo "LOWERCASE_REPO_OWNER=$(echo "${GITHUB_REPOSITORY_OWNER}" | awk '{print tolower($0)}')" >> $GITHUB_ENV
7086 echo "PUSH_ON_BUILD=${GENERATE_ARTIFACTS}" >> $GITHUB_ENV
7187 echo "BUILD_MULTI_ARCH_IMAGES=${GENERATE_ARTIFACTS}" >> $GITHUB_ENV
7288
89+ if [ "$DIST" == "ubuntu22.04" ]; then
90+ echo "BASE_TARGET=jammy" >> $GITHUB_OUTPUT
91+ echo "LTS_KERNEL=5.15" >> $GITHUB_OUTPUT
92+ elif [ "$DIST" == "ubuntu24.04" ]; then
93+ echo "BASE_TARGET=noble" >> $GITHUB_OUTPUT
94+ echo "LTS_KERNEL=6.8" >> $GITHUB_OUTPUT
95+ fi
96+
7397 - name : Set up QEMU
7498 uses : docker/setup-qemu-action@v3
7599 - name : Set up Docker Buildx
@@ -84,9 +108,10 @@ jobs:
84108 env :
85109 IMAGE_NAME : ghcr.io/nvidia/driver
86110 VERSION : ${COMMIT_SHORT_SHA}
87- BASE_TARGET : jammy
111+ BASE_TARGET : ${{ steps.vars.outputs.BASE_TARGET }}
112+ LTS_KERNEL : ${{ steps.vars.outputs.LTS_KERNEL }}
88113 run : |
89- make DRIVER_BRANCH=${{ matrix.driver_branch }} KERNEL_FLAVOR=${{ matrix.flavor }} build-base-${BASE_TARGET}
114+ make DRIVER_BRANCH=${{ matrix.driver_branch }} KERNEL_FLAVOR=${{ matrix.flavor }} LTS_KERNEL=${LTS_KERNEL} build-base-${BASE_TARGET}
90115
91116 trap "docker rm -f base-${BASE_TARGET}-${{ matrix.flavor }}" EXIT
92117 docker run -d --name base-${BASE_TARGET}-${{ matrix.flavor }} ghcr.io/nvidia/driver:base-${BASE_TARGET}-${{ matrix.flavor }}-${{ matrix.driver_branch }}
@@ -105,12 +130,13 @@ jobs:
105130 source kernel_version.txt && \
106131 make DRIVER_VERSIONS=${DRIVER_VERSIONS} DRIVER_BRANCH=${{ matrix.driver_branch }} build-${DIST}-${DRIVER_VERSION}
107132
108- - name : Save build image as a tar
133+ - name : Save build image and kernel version file
109134 env :
110135 DIST : ${{ matrix.dist }}
111136 PRIVATE_REGISTRY : " ghcr.io"
112137 run : |
113138 source kernel_version.txt
139+ tar -cvf kernel-version-${{ matrix.driver_branch }}-${KERNEL_VERSION}-${DIST}.tar kernel_version.txt
114140 docker save "${PRIVATE_REGISTRY}/nvidia/driver:${{ matrix.driver_branch }}-${KERNEL_VERSION}-${DIST}" \
115141 -o ./driver-images-${{ matrix.driver_branch }}-${KERNEL_VERSION}-${DIST}.tar
116142 # set env for artifacts upload
@@ -123,12 +149,21 @@ jobs:
123149 name : driver-images-${{ matrix.driver_branch }}-${{ env.KERNEL_VERSION }}-${{ env.DIST }}
124150 path : ./driver-images-${{ matrix.driver_branch }}-${{ env.KERNEL_VERSION }}-${{ env.DIST }}.tar
125151 retention-days : 1
126-
152+
153+ - name : Upload kernel version as an artifact
154+ uses : actions/upload-artifact@v4
155+ with :
156+ name : kernel-version-${{ matrix.driver_branch }}-${{ env.KERNEL_VERSION }}-${{ env.DIST }}
157+ path : ./kernel-version-${{ matrix.driver_branch }}-${{ env.KERNEL_VERSION }}-${{ env.DIST }}.tar
158+ retention-days : 1
159+
127160 determine-e2e-test-matrix :
128161 runs-on : linux-amd64-cpu4
129162 strategy :
130163 matrix :
131164 dist : ${{ fromJson(needs.set-driver-version-matrix.outputs.dist) }}
165+ ispr :
166+ - ${{github.event_name == 'pull_request'}}
132167 needs :
133168 - precompiled-build-image
134169 - set-driver-version-matrix
@@ -149,16 +184,30 @@ jobs:
149184 - name : Set kernel version
150185 id : set_kernel_version
151186 env :
152- BASE_TARGET : " jammy"
153187 DIST : ${{ matrix.dist }}
188+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
154189 run : |
155190 echo "matrix_values_not_empty=0" >> $GITHUB_OUTPUT
156191
192+ if [ "$DIST" == "ubuntu22.04" ]; then
193+ export BASE_TARGET="jammy"
194+ export LTS_KERNEL="5.15"
195+ elif [ "$DIST" == "ubuntu24.04" ]; then
196+ export BASE_TARGET="noble"
197+ export LTS_KERNEL="6.8"
198+ fi
199+
157200 kernel_flavors_json='${{ needs.set-driver-version-matrix.outputs.kernel_flavors }}'
158201 KERNEL_FLAVORS=($(echo "$kernel_flavors_json" | jq -r '.[]'))
159202 driver_branch_json='${{ needs.set-driver-version-matrix.outputs.driver_branch }}'
160203 DRIVER_BRANCHES=($(echo "$driver_branch_json" | jq -r '.[]'))
161204
205+ # remove 535 driver branch for ubuntu24.04
206+ if [ "$DIST" == "ubuntu24.04" ]; then
207+ DRIVER_BRANCHES=($(for branch in "${DRIVER_BRANCHES[@]}"; do
208+ [[ $branch != "535" ]] && echo "$branch"
209+ done))
210+ fi
162211 source ./tests/scripts/ci-precompiled-helpers.sh
163212 KERNEL_VERSIONS=($(get_kernel_versions_to_test $BASE_TARGET KERNEL_FLAVORS[@] DRIVER_BRANCHES[@] $DIST))
164213 if [ -z "$KERNEL_VERSIONS" ]; then
@@ -201,7 +250,7 @@ jobs:
201250 aws_access_key_id : ${{ secrets.AWS_ACCESS_KEY_ID }}
202251 aws_secret_access_key : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
203252 aws_ssh_key : ${{ secrets.AWS_SSH_KEY }}
204- holodeck_config : " tests/holodeck .yaml"
253+ holodeck_config : " tests/holodeck_${{ matrix.dist }} .yaml"
205254
206255 - name : Get public dns name
207256 id : get_public_dns_name
@@ -222,6 +271,15 @@ jobs:
222271 DRIVER_BRANCHES=($(echo "$driver_branch_json" | jq -r '.[]'))
223272 echo "DRIVER_BRANCHES=${DRIVER_BRANCHES[*]}" >> $GITHUB_ENV
224273
274+ # step added to skip azure e2e tests and publish the image
275+ # FIXME -- remove step once azure kernel upgrade starts working
276+ - name : Skip azure e2e
277+ run : |
278+ if [[ "${KERNEL_VERSION}" == *-azure ]]; then
279+ echo "e2e test for azure flavor skipped, as kernel upgrade AWS => azure is not supported"
280+ exit 0
281+ fi
282+
225283 - name : Install GitHub CLI
226284 run : |
227285 sudo apt-get update
@@ -258,6 +316,12 @@ jobs:
258316 rc=0
259317 # for precompiled driver we are setting driver branch as driver version
260318 DRIVER_BRANCHES=(${{ env.DRIVER_BRANCHES }})
319+ # remove 535 driver branch for ubuntu24.04
320+ if [ "$DIST" == "ubuntu24.04" ]; then
321+ DRIVER_BRANCHES=($(for branch in "${DRIVER_BRANCHES[@]}"; do
322+ [[ $branch != "535" ]] && echo "$branch"
323+ done))
324+ fi
261325 for DRIVER_VERSION in "${DRIVER_BRANCHES[@]}"; do
262326 echo "Running e2e for DRIVER_VERSION=$DRIVER_VERSION"
263327 image="driver-images-${DRIVER_VERSION}-${KERNEL_VERSION}-${DIST}"
@@ -296,7 +360,12 @@ jobs:
296360 matrix :
297361 driver_branch : ${{ fromJson(needs.set-driver-version-matrix.outputs.driver_branch) }}
298362 kernel_version : ${{ fromJson(needs.determine-e2e-test-matrix.outputs.matrix_values) }}
299- dist : ${{ fromJson(needs.set-driver-version-matrix.outputs.dist) }}
363+ dist : ${{ fromJson(needs.set-driver-version-matrix.outputs.dist) }}
364+ ispr :
365+ - ${{github.event_name == 'pull_request'}}
366+ exclude :
367+ - dist : ubuntu24.04
368+ driver_branch : 535
300369 steps :
301370 - name : Check out code
302371 uses : actions/checkout@v4
0 commit comments