@@ -47,32 +47,83 @@ COPY . .
47
47
# and not `cmd`.
48
48
RUN GOPATH=/artifacts go install -ldflags="-s -w -X 'main.Version=${VERSION}'" ./tools/...
49
49
50
-
51
- FROM nvidia/cuda:12.6.0-base-ubi8
52
-
53
- ENV NVIDIA_DISABLE_REQUIRE="true"
54
- ENV NVIDIA_VISIBLE_DEVICES=void
55
- ENV NVIDIA_DRIVER_CAPABILITIES=utility
50
+ FROM nvidia/cuda:12.5.0-base-ubi8 AS packaging
56
51
57
52
ARG ARTIFACTS_ROOT
58
- ARG PACKAGE_DIST
59
- COPY ${ARTIFACTS_ROOT}/${PACKAGE_DIST} /artifacts/packages/${PACKAGE_DIST}
53
+ COPY ${ARTIFACTS_ROOT} /artifacts/packages/
60
54
61
55
WORKDIR /artifacts/packages
62
56
57
+ # build-args are added to the manifest.txt file below.
58
+ ARG PACKAGE_DIST
63
59
ARG PACKAGE_VERSION
60
+ ARG GIT_BRANCH
61
+ ARG GIT_COMMIT
62
+ ARG GIT_COMMIT_SHORT
63
+ ARG SOURCE_DATE_EPOCH
64
+ ARG VERSION
65
+
66
+ # Create a manifest.txt file with the absolute paths of all deb and rpm packages in the container
67
+ RUN echo "#IMAGE_EPOCH=$(date '+%s')" > /artifacts/manifest.txt && \
68
+ env | sed 's/^/#/g' >> /artifacts/manifest.txt && \
69
+ find /artifacts/packages -iname '*.deb' -o -iname '*.rpm' >> /artifacts/manifest.txt
70
+
71
+ RUN mkdir /licenses && mv /NGC-DL-CONTAINER-LICENSE /licenses/NGC-DL-CONTAINER-LICENSE
72
+
73
+ FROM nvidia/cuda:12.5.0-base-ubi8 AS rpmpackages
74
+ RUN dnf install -y cpio
75
+
64
76
ARG TARGETARCH
65
- ENV PACKAGE_ARCH ${TARGETARCH}
66
- RUN PACKAGE_ARCH=${PACKAGE_ARCH/amd64/x86_64} && PACKAGE_ARCH=${PACKAGE_ARCH/arm64/aarch64} && \
67
- yum localinstall -y \
68
- ${PACKAGE_DIST}/${PACKAGE_ARCH}/libnvidia-container1-1.*.rpm \
69
- ${PACKAGE_DIST}/${PACKAGE_ARCH}/libnvidia-container-tools-1.*.rpm \
70
- ${PACKAGE_DIST}/${PACKAGE_ARCH}/nvidia-container-toolkit*-${PACKAGE_VERSION}*.rpm
77
+ ARG PACKAGE_DIST_RPM=centos7
71
78
72
- WORKDIR /work
79
+ COPY --from=packaging /artifacts/packages/${PACKAGE_DIST_RPM} /rpm-packages
80
+
81
+ RUN mkdir -p /artifacts/rpm
82
+ RUN set -eux; \
83
+ \
84
+ case "${TARGETARCH}" in \
85
+ x86_64 | amd64) ARCH='x86_64' ;; \
86
+ ppc64el | ppc64le) ARCH='ppc64le' ;; \
87
+ aarch64 | arm64) ARCH='aarch64' ;; \
88
+ *) echo "unsupported architecture" ; exit 1 ;; \
89
+ esac; \
90
+ for p in $(ls /rpm-packages/${ARCH}/*.rpm); do rpm2cpio $p | cpio -idmv -D /artifacts/rpm; done
73
91
74
- COPY --from=build /artifacts/bin /work
92
+ FROM nvidia/cuda:12.5.0-base-ubuntu20.04 AS debpackages
75
93
94
+ ARG TARGETARCH
95
+ ARG PACKAGE_DIST_DEB=ubuntu18.04
96
+
97
+ COPY --from=packaging /artifacts/packages/${PACKAGE_DIST_DEB} /deb-packages
98
+
99
+ RUN mkdir -p /artifacts/deb
100
+ RUN set -eux; \
101
+ \
102
+ case "${TARGETARCH}" in \
103
+ x86_64 | amd64) ARCH='amd64' ;; \
104
+ ppc64el | ppc64le) ARCH='ppc64le' ;; \
105
+ aarch64 | arm64) ARCH='arm64' ;; \
106
+ *) echo "unsupported architecture" ; exit 1 ;; \
107
+ esac; \
108
+ for p in $(ls /deb-packages/${ARCH}/*.deb); do dpkg-deb -xv $p /artifacts/deb/; done
109
+
110
+ FROM nvidia/cuda:12.5.0-base-ubi8 AS artifacts
111
+
112
+ COPY --from=rpmpackages /artifacts/rpm /artifacts/rpm
113
+ COPY --from=debpackages /artifacts/deb /artifacts/deb
114
+ COPY --from=build /artifacts/bin /artifacts/build
115
+
116
+ FROM nvidia/cuda:12.6.0-base-ubi8
117
+
118
+ ENV NVIDIA_DISABLE_REQUIRE="true"
119
+ ENV NVIDIA_VISIBLE_DEVICES=void
120
+ ENV NVIDIA_DRIVER_CAPABILITIES=utility
121
+
122
+ COPY --from=artifacts /artifacts/rpm /artifacts/rpm
123
+ COPY --from=artifacts /artifacts/deb /artifacts/deb
124
+ COPY --from=artifacts /artifacts/build /work
125
+
126
+ WORKDIR /work
76
127
ENV PATH=/work:$PATH
77
128
78
129
LABEL io.k8s.display-name="NVIDIA Container Runtime Config"
0 commit comments