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
6072 name : Check out code
6173 - name : Calculate build vars
6274 id : vars
75+ env :
76+ DIST : ${{ matrix.dist }}
6377 run : |
6478 echo "COMMIT_SHORT_SHA=${GITHUB_SHA:0:8}" >> $GITHUB_ENV
6579 echo "LOWERCASE_REPO_OWNER=$(echo "${GITHUB_REPOSITORY_OWNER}" | awk '{print tolower($0)}')" >> $GITHUB_ENV
7084 echo "PUSH_ON_BUILD=${GENERATE_ARTIFACTS}" >> $GITHUB_ENV
7185 echo "BUILD_MULTI_ARCH_IMAGES=${GENERATE_ARTIFACTS}" >> $GITHUB_ENV
7286
87+ if [ "$DIST" == "ubuntu22.04" ]; then
88+ echo "BASE_TARGET=jammy" >> $GITHUB_OUTPUT
89+ echo "LTS_KERNEL=5.15" >> $GITHUB_OUTPUT
90+ elif [ "$DIST" == "ubuntu24.04" ]; then
91+ echo "BASE_TARGET=noble" >> $GITHUB_OUTPUT
92+ echo "LTS_KERNEL=6.8" >> $GITHUB_OUTPUT
93+ fi
94+
7395 - name : Set up QEMU
7496 uses : docker/setup-qemu-action@v3
7597 - name : Set up Docker Buildx
@@ -84,9 +106,10 @@ jobs:
84106 env :
85107 IMAGE_NAME : ghcr.io/nvidia/driver
86108 VERSION : ${COMMIT_SHORT_SHA}
87- BASE_TARGET : jammy
109+ BASE_TARGET : ${{ steps.vars.outputs.BASE_TARGET }}
110+ LTS_KERNEL : ${{ steps.vars.outputs.LTS_KERNEL }}
88111 run : |
89- make DRIVER_BRANCH=${{ matrix.driver_branch }} KERNEL_FLAVOR=${{ matrix.flavor }} build-base-${BASE_TARGET}
112+ make DRIVER_BRANCH=${{ matrix.driver_branch }} KERNEL_FLAVOR=${{ matrix.flavor }} LTS_KERNEL=${LTS_KERNEL} build-base-${BASE_TARGET}
90113
91114 trap "docker rm -f base-${BASE_TARGET}-${{ matrix.flavor }}" EXIT
92115 docker run -d --name base-${BASE_TARGET}-${{ matrix.flavor }} ghcr.io/nvidia/driver:base-${BASE_TARGET}-${{ matrix.flavor }}-${{ matrix.driver_branch }}
@@ -105,12 +128,13 @@ jobs:
105128 source kernel_version.txt && \
106129 make DRIVER_VERSIONS=${DRIVER_VERSIONS} DRIVER_BRANCH=${{ matrix.driver_branch }} build-${DIST}-${DRIVER_VERSION}
107130
108- - name : Save build image as a tar
131+ - name : Save build image and kernel version file
109132 env :
110133 DIST : ${{ matrix.dist }}
111134 PRIVATE_REGISTRY : " ghcr.io"
112135 run : |
113136 source kernel_version.txt
137+ tar -cvf kernel-version-${{ matrix.driver_branch }}-${KERNEL_VERSION}-${DIST}.tar kernel_version.txt
114138 docker save "${PRIVATE_REGISTRY}/nvidia/driver:${{ matrix.driver_branch }}-${KERNEL_VERSION}-${DIST}" \
115139 -o ./driver-images-${{ matrix.driver_branch }}-${KERNEL_VERSION}-${DIST}.tar
116140 # set env for artifacts upload
@@ -123,7 +147,14 @@ jobs:
123147 name : driver-images-${{ matrix.driver_branch }}-${{ env.KERNEL_VERSION }}-${{ env.DIST }}
124148 path : ./driver-images-${{ matrix.driver_branch }}-${{ env.KERNEL_VERSION }}-${{ env.DIST }}.tar
125149 retention-days : 1
126-
150+
151+ - name : Upload kernel version as an artifact
152+ uses : actions/upload-artifact@v4
153+ with :
154+ name : kernel-version-${{ matrix.driver_branch }}-${{ env.KERNEL_VERSION }}-${{ env.DIST }}
155+ path : ./kernel-version-${{ matrix.driver_branch }}-${{ env.KERNEL_VERSION }}-${{ env.DIST }}.tar
156+ retention-days : 1
157+
127158 determine-e2e-test-matrix :
128159 runs-on : linux-amd64-cpu4
129160 strategy :
@@ -149,11 +180,19 @@ jobs:
149180 - name : Set kernel version
150181 id : set_kernel_version
151182 env :
152- BASE_TARGET : " jammy"
153183 DIST : ${{ matrix.dist }}
184+ GH_TOKEN : ${{ secrets.GITHUB_TOKEN }}
154185 run : |
155186 echo "matrix_values_not_empty=0" >> $GITHUB_OUTPUT
156187
188+ if [ "$DIST" == "ubuntu22.04" ]; then
189+ export BASE_TARGET="jammy"
190+ export LTS_KERNEL="5.15"
191+ elif [ "$DIST" == "ubuntu24.04" ]; then
192+ export BASE_TARGET="noble"
193+ export LTS_KERNEL="6.8"
194+ fi
195+
157196 kernel_flavors_json='${{ needs.set-driver-version-matrix.outputs.kernel_flavors }}'
158197 KERNEL_FLAVORS=($(echo "$kernel_flavors_json" | jq -r '.[]'))
159198 driver_branch_json='${{ needs.set-driver-version-matrix.outputs.driver_branch }}'
@@ -201,7 +240,7 @@ jobs:
201240 aws_access_key_id : ${{ secrets.AWS_ACCESS_KEY_ID }}
202241 aws_secret_access_key : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
203242 aws_ssh_key : ${{ secrets.AWS_SSH_KEY }}
204- holodeck_config : " tests/holodeck .yaml"
243+ holodeck_config : " tests/holodeck_${{ matrix.dist }} .yaml"
205244
206245 - name : Get public dns name
207246 id : get_public_dns_name
@@ -222,6 +261,15 @@ jobs:
222261 DRIVER_BRANCHES=($(echo "$driver_branch_json" | jq -r '.[]'))
223262 echo "DRIVER_BRANCHES=${DRIVER_BRANCHES[*]}" >> $GITHUB_ENV
224263
264+ # step added to skip azure e2e tests and publish the image
265+ # FIXME -- remove step once azure kernel upgrade starts working
266+ - name : Skip azure e2e
267+ run : |
268+ if [[ "${KERNEL_VERSION}" == *-azure ]]; then
269+ echo "e2e test for azure flavor skipped, as kernel upgrade AWS => azure is not supported"
270+ exit 0
271+ fi
272+
225273 - name : Install GitHub CLI
226274 run : |
227275 sudo apt-get update
@@ -296,7 +344,7 @@ jobs:
296344 matrix :
297345 driver_branch : ${{ fromJson(needs.set-driver-version-matrix.outputs.driver_branch) }}
298346 kernel_version : ${{ fromJson(needs.determine-e2e-test-matrix.outputs.matrix_values) }}
299- dist : ${{ fromJson(needs.set-driver-version-matrix.outputs.dist) }}
347+ dist : ${{ fromJson(needs.set-driver-version-matrix.outputs.dist) }}
300348 steps :
301349 - name : Check out code
302350 uses : actions/checkout@v4
0 commit comments