Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .common-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,14 @@ trigger-pipeline:
KERNEL_FLAVOR: [aws, azure, azure-fde, generic, nvidia, oracle]
LTS_KERNEL: ["6.8"]

# Define the matrix of precompiled jobs that can be run in parallel for ubuntu26.04
.driver-versions-precompiled-ubuntu26.04:
parallel:
matrix:
- DRIVER_BRANCH: [580]
KERNEL_FLAVOR: [aws, azure, azure-fde, generic, nvidia, oracle]
LTS_KERNEL: ["6.14"]

.dist-ubuntu22.04:
variables:
DIST: ubuntu22.04
Expand Down Expand Up @@ -411,3 +419,14 @@ release:staging-precompiled-ubuntu24.04:
- .release:staging-precompiled
needs:
- image-precompiled-ubuntu24.04

# Precompiled Ubuntu26.04 release
release:staging-precompiled-ubuntu26.04:
variables:
DIST: signed_ubuntu26.04
BASE_TARGET: questing
extends:
- .driver-versions-precompiled-ubuntu26.04
- .release:staging-precompiled
needs:
- image-precompiled-ubuntu26.04
42 changes: 30 additions & 12 deletions .github/workflows/precompiled.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
id: extract_driver_branch
run: |
# get driver_branch
DRIVER_BRANCH=("535" "580")
DRIVER_BRANCH=("535" "580" "595")
driver_branch_json=$(printf '%s\n' "${DRIVER_BRANCH[@]}" | jq -R . | jq -cs .)
echo "driver_branch=$driver_branch_json" >> $GITHUB_OUTPUT

Expand All @@ -49,12 +49,12 @@ jobs:
echo "kernel_flavors=$kernel_flavors_json" >> $GITHUB_OUTPUT

# get ubuntu distributions
DIST=("ubuntu22.04" "ubuntu24.04")
DIST=("ubuntu22.04" "ubuntu24.04" "ubuntu26.04")
dist_json=$(printf '%s\n' "${DIST[@]}" | jq -R . | jq -cs .)
echo "dist=$dist_json" >> $GITHUB_OUTPUT

# LTS_KERNEL setup
LTS_KERNEL=("5.15" "6.8")
LTS_KERNEL=("5.15" "6.8" "6.14")
lts_kernel_json=$(printf '%s\n' "${LTS_KERNEL[@]}" | jq -R . | jq -cs .)
echo "lts_kernel=$lts_kernel_json" >> $GITHUB_OUTPUT

Expand All @@ -70,8 +70,16 @@ jobs:
exclude:
- dist: ubuntu24.04
driver_branch: 535
- dist: ubuntu26.04
driver_branch: 535
- dist: ubuntu26.04
driver_branch: 580
- lts_kernel: 5.15
dist: ubuntu24.04
- lts_kernel: 5.15
dist: ubuntu26.04
- lts_kernel: 6.8
dist: ubuntu26.04
- flavor: azure-fde
dist: ubuntu22.04
steps:
Expand Down Expand Up @@ -113,6 +121,8 @@ jobs:
BASE_TARGET="jammy"
elif [[ "${{ matrix.dist }}" == "ubuntu24.04" ]]; then
BASE_TARGET="noble"
elif [[ "${{ matrix.dist }}" == "ubuntu26.04" ]]; then
BASE_TARGET="questing"
fi
make DRIVER_BRANCH=${{ matrix.driver_branch }} KERNEL_FLAVOR=${{ matrix.flavor }} LTS_KERNEL=${LTS_KERNEL} build-base-${BASE_TARGET}

Expand Down Expand Up @@ -143,6 +153,8 @@ jobs:
BASE_TARGET="jammy"
elif [[ "${{ matrix.dist }}" == "ubuntu24.04" ]]; then
BASE_TARGET="noble"
elif [[ "${{ matrix.dist }}" == "ubuntu26.04" ]]; then
BASE_TARGET="questing"
fi
tar -cvf kernel-version-${{ matrix.driver_branch }}-${KERNEL_VERSION}-${DIST}.tar kernel_version.txt
docker save "${PRIVATE_REGISTRY}/nvidia/driver:base-${BASE_TARGET}-${LTS_KERNEL}-${{ matrix.flavor }}-${{ matrix.driver_branch }}" \
Expand Down Expand Up @@ -183,6 +195,10 @@ jobs:
exclude:
- lts_kernel: 5.15
dist: ubuntu24.04
- lts_kernel: 5.15
dist: ubuntu26.04
- lts_kernel: 6.8
dist: ubuntu26.04
needs:
- precompiled-build-image
- set-driver-version-matrix
Expand Down Expand Up @@ -214,8 +230,8 @@ jobs:
driver_branch_json='${{ needs.set-driver-version-matrix.outputs.driver_branch }}'
DRIVER_BRANCHES=($(echo "$driver_branch_json" | jq -r '.[]'))

# remove 535 driver branch for ubuntu24.04
if [ "$DIST" == "ubuntu24.04" ]; then
# remove 535 driver branch for newer Ubuntu precompiled distros
if [[ "$DIST" == "ubuntu24.04" || "$DIST" == "ubuntu26.04" ]]; then
DRIVER_BRANCHES=($(for branch in "${DRIVER_BRANCHES[@]}"; do
[[ $branch != "535" ]] && echo "$branch"
done))
Expand Down Expand Up @@ -401,8 +417,8 @@ jobs:
rc=0
# for precompiled driver we are setting driver branch as driver version
DRIVER_BRANCHES=(${{ env.DRIVER_BRANCHES }})
# remove 535 driver branch for ubuntu24.04
if [ "$DIST" == "ubuntu24.04" ]; then
# remove 535 driver branch for newer Ubuntu precompiled distros
if [[ "$DIST" == "ubuntu24.04" || "$DIST" == "ubuntu26.04" ]]; then
DRIVER_BRANCHES=($(for branch in "${DRIVER_BRANCHES[@]}"; do
[[ $branch != "535" ]] && echo "$branch"
done))
Expand Down Expand Up @@ -457,14 +473,14 @@ jobs:
echo "PRIVATE_REGISTRY=ghcr.io" >> $GITHUB_ENV

- name: Download base image artifact
if: ${{ ! (matrix.driver_branch == 535 && contains(matrix.kernel_version, 'ubuntu24.04')) }}
if: ${{ ! (matrix.driver_branch == 535 && (contains(matrix.kernel_version, 'ubuntu24.04') || contains(matrix.kernel_version, 'ubuntu26.04'))) }}
uses: actions/download-artifact@v8
with:
name: base-images-${{ matrix.driver_branch }}-${{ matrix.kernel_version }}
path: ./

- name: Publish base image
if: ${{ ! (matrix.driver_branch == 535 && contains(matrix.kernel_version, 'ubuntu24.04')) }}
if: ${{ ! (matrix.driver_branch == 535 && (contains(matrix.kernel_version, 'ubuntu24.04') || contains(matrix.kernel_version, 'ubuntu26.04'))) }}
run: |
LTS_KERNEL=$(echo "${{ matrix.kernel_version }}" | sed -E 's/^([0-9]+\.[0-9]+)\..*/\1/')
KERNEL_FLAVOR=$(echo "${{ matrix.kernel_version }}" | sed -E 's/^[0-9]+\.[0-9]+\.[0-9]+-[0-9]+-(.*)-ubuntu[0-9]+\.[0-9]+$/\1/')
Expand All @@ -473,6 +489,8 @@ jobs:
BASE_TARGET="jammy"
elif [[ "${DIST}" == "ubuntu24.04" ]]; then
BASE_TARGET="noble"
elif [[ "${DIST}" == "ubuntu26.04" ]]; then
BASE_TARGET="questing"
fi
image_path="./base-images-${{ matrix.driver_branch }}-${{ matrix.kernel_version }}.tar"
echo "uploading $image_path"
Expand All @@ -484,14 +502,14 @@ jobs:
fi

- name: Download built image artifact
if: ${{ ! (matrix.driver_branch == 535 && contains(matrix.kernel_version, 'ubuntu24.04')) }}
if: ${{ ! (matrix.driver_branch == 535 && (contains(matrix.kernel_version, 'ubuntu24.04') || contains(matrix.kernel_version, 'ubuntu26.04'))) }}
uses: actions/download-artifact@v8
with:
name: driver-images-${{ matrix.driver_branch }}-${{ matrix.kernel_version }}
path: ./

- name: Publish image
if: ${{ ! (matrix.driver_branch == 535 && contains(matrix.kernel_version, 'ubuntu24.04')) }}
if: ${{ ! (matrix.driver_branch == 535 && (contains(matrix.kernel_version, 'ubuntu24.04') || contains(matrix.kernel_version, 'ubuntu26.04'))) }}
run: |
image_path="./driver-images-${{ matrix.driver_branch }}-${{ matrix.kernel_version }}.tar"
echo "uploading $image_path"
Expand All @@ -503,7 +521,7 @@ jobs:
fi

- name: Slack notification
if: ${{ ! (matrix.driver_branch == 535 && contains(matrix.kernel_version, 'ubuntu24.04')) && github.ref == 'refs/heads/main' }}
if: ${{ ! (matrix.driver_branch == 535 && (contains(matrix.kernel_version, 'ubuntu24.04') || contains(matrix.kernel_version, 'ubuntu26.04'))) && github.ref == 'refs/heads/main' }}
uses: slackapi/slack-github-action@v3.0.3
with:
token: ${{ secrets.SLACK_BOT_TOKEN }}
Expand Down
9 changes: 9 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -137,3 +137,12 @@ image-precompiled-ubuntu24.04:
extends:
- .driver-versions-precompiled-ubuntu24.04
- .image-build-precompiled

image-precompiled-ubuntu26.04:
variables:
DIST: signed_ubuntu26.04
BASE_TARGET: questing
CVE_UPDATES: "curl libc6"
extends:
- .driver-versions-precompiled-ubuntu26.04
- .image-build-precompiled
47 changes: 47 additions & 0 deletions .nvidia-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,20 @@ image-precompiled-ubuntu24.04:
- .driver-versions-precompiled-ubuntu24.04
- .image-pull-generic

image-precompiled-ubuntu26.04:
variables:
DIST: signed_ubuntu26.04
BASE_TARGET: questing
PRECOMPILED: "true"
CVE_UPDATES: "curl libc6"
rules:
- if: $CI_PIPELINE_SOURCE == "schedule"
when: delayed
start_in: 30 minutes
extends:
- .driver-versions-precompiled-ubuntu26.04
- .image-pull-generic

.image-pull-ubuntu22.04:
# Perform for each DRIVER_VERSION
extends:
Expand Down Expand Up @@ -271,6 +285,18 @@ image-rocky9:
- !reference [.scan-rules-common, rules]
- !reference [.precompiled-rules, rules]

.scan-precompiled-ubuntu26.04:
variables:
DIST: signed_ubuntu26.04
BASE_TARGET: questing
PRECOMPILED: "true"
extends:
- .driver-versions-precompiled-ubuntu26.04
- .scan-generic
rules:
- !reference [.scan-rules-common, rules]
- !reference [.precompiled-rules, rules]

.scan-precompiled-ubuntu22.04:
variables:
DIST: signed_ubuntu22.04
Expand Down Expand Up @@ -324,6 +350,15 @@ scan-precompiled-ubuntu24.04-amd64:
needs:
- image-precompiled-ubuntu24.04

scan-precompiled-ubuntu26.04-amd64:
variables:
PLATFORM: linux/amd64
extends:
- .scan-precompiled-ubuntu26.04
- .platform-amd64
needs:
- image-precompiled-ubuntu26.04

scan-precompiled-ubuntu22.04-amd64:
variables:
PLATFORM: linux/amd64
Expand Down Expand Up @@ -434,6 +469,18 @@ release:ngc-precompiled-ubuntu24.04:
rules:
- !reference [.precompiled-rules, rules]

release:ngc-precompiled-ubuntu26.04:
variables:
DIST: signed_ubuntu26.04
BASE_TARGET: questing
PRECOMPILED: "true"
extends:
- .driver-versions-precompiled-ubuntu26.04
- .release-generic
- .release:ngc-variables
rules:
- !reference [.precompiled-rules, rules]

release:ngc-precompiled-ubuntu22.04:
variables:
DIST: signed_ubuntu22.04
Expand Down
25 changes: 23 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,10 @@ OUT_IMAGE_TAG = $(OUT_IMAGE_VERSION)-$(OUT_DIST)
OUT_IMAGE = $(OUT_IMAGE_NAME):$(OUT_IMAGE_TAG)

##### Public rules #####
DISTRIBUTIONS := ubuntu22.04 ubuntu24.04 signed_ubuntu22.04 signed_ubuntu24.04 rhel8 rhel9 rhel10 rocky9 precompiled_rhcos
DISTRIBUTIONS := ubuntu22.04 ubuntu24.04 signed_ubuntu22.04 signed_ubuntu24.04 signed_ubuntu26.04 rhel8 rhel9 rhel10 rocky9 precompiled_rhcos
RHCOS_VERSIONS := rhcos4.14 rhcos4.15 rhcos4.16 rhcos4.17 rhcos4.18 rhel9.6
PUSH_TARGETS := $(patsubst %, push-%, $(DISTRIBUTIONS))
BASE_FROM := noble jammy focal
BASE_FROM := questing noble jammy focal
PUSH_TARGETS := $(patsubst %, push-%, $(DISTRIBUTIONS))
VGPU_GUEST_DRIVER_PUSH_TARGETS := $(patsubst %, push-vgpuguest-%, $(DISTRIBUTIONS) $(RHCOS_VERSIONS))
VGPU_HOST_DRIVER_PUSH_TARGETS := $(patsubst %, push-vgpuhost-%, $(DISTRIBUTIONS) $(RHCOS_VERSIONS))
Expand Down Expand Up @@ -98,6 +98,10 @@ pull-signed_ubuntu24.04%: DIST = ubuntu24.04
pull-signed_ubuntu24.04%: DRIVER_TAG = $(DRIVER_BRANCH)
pull-signed_ubuntu24.04%: IMAGE_TAG = $(DRIVER_BRANCH)-$(KERNEL_VERSION)-$(DIST)

pull-signed_ubuntu26.04%: DIST = ubuntu26.04
pull-signed_ubuntu26.04%: DRIVER_TAG = $(DRIVER_BRANCH)
pull-signed_ubuntu26.04%: IMAGE_TAG = $(DRIVER_BRANCH)-$(KERNEL_VERSION)-$(DIST)

PLATFORM ?= linux/amd64
$(DRIVER_PULL_TARGETS): pull-%:
$(DOCKER) pull "--platform=$(PLATFORM)" "$(IMAGE)"
Expand All @@ -116,6 +120,10 @@ archive-signed_ubuntu24.04%: DIST = ubuntu24.04
archive-signed_ubuntu24.04%: DRIVER_TAG = $(DRIVER_BRANCH)
archive-signed_ubuntu24.04%: IMAGE_TAG = $(if $(VERSION),$(VERSION)-)$(DRIVER_BRANCH)-$(KERNEL_VERSION)-$(DIST)

archive-signed_ubuntu26.04%: DIST = ubuntu26.04
archive-signed_ubuntu26.04%: DRIVER_TAG = $(DRIVER_BRANCH)
archive-signed_ubuntu26.04%: IMAGE_TAG = $(if $(VERSION),$(VERSION)-)$(DRIVER_BRANCH)-$(KERNEL_VERSION)-$(DIST)

$(DRIVER_ARCHIVE_TARGETS): archive-%:
$(DOCKER) save "$(IMAGE)" -o "archive.tar"

Expand All @@ -139,6 +147,11 @@ push-signed_ubuntu24.04%: DRIVER_TAG = $(DRIVER_BRANCH)
push-signed_ubuntu24.04%: IMAGE_TAG = $(if $(VERSION),$(VERSION)-)$(DRIVER_BRANCH)-$(KERNEL_VERSION)-$(DIST)
push-signed_ubuntu24.04%: OUT_IMAGE_TAG = $(if $(VERSION),$(VERSION)-)$(DRIVER_BRANCH)-$(KERNEL_VERSION)-$(DIST)

push-signed_ubuntu26.04%: DIST = ubuntu26.04
push-signed_ubuntu26.04%: DRIVER_TAG = $(DRIVER_BRANCH)
push-signed_ubuntu26.04%: IMAGE_TAG = $(if $(VERSION),$(VERSION)-)$(DRIVER_BRANCH)-$(KERNEL_VERSION)-$(DIST)
push-signed_ubuntu26.04%: OUT_IMAGE_TAG = $(if $(VERSION),$(VERSION)-)$(DRIVER_BRANCH)-$(KERNEL_VERSION)-$(DIST)

# $(DRIVER_BUILD_TARGETS) is in the form of build-$(DIST)-$(DRIVER_VERSION)
# Parse the target to set the required variables.
build-%: DIST = $(word 2,$(subst -, ,$@))
Expand Down Expand Up @@ -185,6 +198,14 @@ build-signed_ubuntu24.04%: DRIVER_TAG = $(DRIVER_BRANCH)
build-signed_ubuntu24.04%: IMAGE_TAG = $(if $(VERSION),$(VERSION)-)$(DRIVER_BRANCH)-$(KERNEL_VERSION)-$(DIST)
build-signed_ubuntu24.04%: DOCKER_BUILD_ARGS = --build-arg KERNEL_VERSION="$(KERNEL_VERSION)"

# ubuntu26.04 Precompiled Driver
build-signed_ubuntu26.04%: DIST = ubuntu26.04
build-signed_ubuntu26.04%: SUBDIR = .
build-signed_ubuntu26.04%: DOCKERFILE = $(CURDIR)/ubuntu26.04/precompiled/Dockerfile
build-signed_ubuntu26.04%: DRIVER_TAG = $(DRIVER_BRANCH)
build-signed_ubuntu26.04%: IMAGE_TAG = $(if $(VERSION),$(VERSION)-)$(DRIVER_BRANCH)-$(KERNEL_VERSION)-$(DIST)
build-signed_ubuntu26.04%: DOCKER_BUILD_ARGS = --build-arg KERNEL_VERSION="$(KERNEL_VERSION)"

# base is an image used to poll Canonical for the latest kernel version
# LTS_KERNEL must be defined in the environment when invoking this target.
LTS_KERNEL ?= ""
Expand Down
36 changes: 36 additions & 0 deletions base/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,3 +1,39 @@
# Ubuntu 26.04
FROM ubuntu:questing-20260410 AS questing
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not released:
FROM nvcr.io/nvidia/cuda:13.2.1-base-ubuntu26.04 AS questing

https://docs.nvidia.com/deeplearning/frameworks/cuda-dl-release-notes/rel-26-04.html


SHELL ["/bin/bash", "-c"]

ARG DRIVER_BRANCH
ARG KERNEL_FLAVOR
ARG LTS_KERNEL
ENV DRIVER_BRANCH=${DRIVER_BRANCH}
ENV KERNEL_FLAVOR=${KERNEL_FLAVOR}
ENV LTS_KERNEL=${LTS_KERNEL}

RUN rm -f /etc/apt/sources.list.d/cuda*

RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections

ENV NVIDIA_VISIBLE_DEVICES=void

RUN apt-get update && apt-get install -y --no-install-recommends \
apt-utils git curl && \
rm -rf /var/lib/apt/lists/*

RUN echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ questing main universe" > /etc/apt/sources.list && \
echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ questing-updates main universe" >> /etc/apt/sources.list && \
echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu/ questing-security main universe" >> /etc/apt/sources.list && \
echo "deb [arch=amd64] http://us.archive.ubuntu.com/ubuntu questing-updates main restricted" >> /etc/apt/sources.list && \
echo "deb [arch=amd64] http://us.archive.ubuntu.com/ubuntu questing-security main restricted" >> /etc/apt/sources.list && \
usermod -o -u 0 -g 0 _apt

COPY generate-ci-config /usr/local/bin/generate-ci-config

RUN chmod +x /usr/local/bin/generate-ci-config && \
generate-ci-config

ENTRYPOINT ["/usr/bin/sleep","1000"]

# Ubuntu 24.04
FROM nvcr.io/nvidia/cuda:13.2.1-base-ubuntu24.04 AS noble

Expand Down
1 change: 1 addition & 0 deletions multi-arch.mk
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,4 @@ $(DRIVER_PUSH_TARGETS): push-%:
# No multi-arch support for the following distributions
build-signed_ubuntu22.04%: DOCKER_BUILD_PLATFORM_OPTIONS = --platform=linux/amd64
build-signed_ubuntu24.04%: DOCKER_BUILD_PLATFORM_OPTIONS = --platform=linux/amd64
build-signed_ubuntu26.04%: DOCKER_BUILD_PLATFORM_OPTIONS = --platform=linux/amd64
Loading
Loading