Merge branch 'add-multi-arch-package-tests' into 'master'

Allow testing of packages for non-native architectures

See merge request nvidia/container-toolkit/container-toolkit!80
This commit is contained in:
Evan Lezar 2021-11-29 13:57:53 +00:00
commit 995bd0d34a
4 changed files with 39 additions and 15 deletions

View File

@ -13,7 +13,6 @@
# limitations under the License. # limitations under the License.
WORKFLOW ?= nvidia-docker WORKFLOW ?= nvidia-docker
TEST_REPO ?= elezar.github.io
DISTRIBUTIONS := ubuntu18.04 centos8 DISTRIBUTIONS := ubuntu18.04 centos8
@ -22,22 +21,23 @@ RUN_TARGETS := $(patsubst %,run-%, $(DISTRIBUTIONS))
RELEASE_TARGETS := $(patsubst %,release-%, $(DISTRIBUTIONS)) RELEASE_TARGETS := $(patsubst %,release-%, $(DISTRIBUTIONS))
LOCAL_TARGETS := $(patsubst %,local-%, $(DISTRIBUTIONS)) LOCAL_TARGETS := $(patsubst %,local-%, $(DISTRIBUTIONS))
.PHONY: $(IMAGE_TARGETS) .PHONY: $(IMAGE_TARGETS) $(RUN_TARGETS)
image-%: DOCKERFILE = docker/$(*)/Dockerfile image-%: DOCKERFILE = docker/$(*)/Dockerfile
images: $(IMAGE_TARGETS) images: $(IMAGE_TARGETS)
$(IMAGE_TARGETS): image-%: $(IMAGE_TARGETS): image-%: $(DOCKERFILE)
docker build \ docker build ${PLATFORM_ARGS} \
--build-arg WORKFLOW="$(WORKFLOW)" \ --build-arg WORKFLOW="$(WORKFLOW)" \
--build-arg TEST_REPO="$(TEST_REPO)" \
-t nvidia-container-toolkit-repo-test:$(*) \ -t nvidia-container-toolkit-repo-test:$(*) \
-f $(DOCKERFILE) \ -f $(DOCKERFILE) \
$(shell dirname $(DOCKERFILE)) $(shell dirname $(DOCKERFILE))
%-ubuntu18.04: ARCH = amd64 %-ubuntu18.04: ARCH ?= amd64
%-centos8: ARCH = x86_64 %-centos8: ARCH ?= x86_64
PLATFORM_ARGS = --platform=linux/${ARCH}
RELEASE_TEST_DIR := $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST))))) RELEASE_TEST_DIR := $(patsubst %/,%,$(dir $(abspath $(lastword $(MAKEFILE_LIST)))))
PROJECT_ROOT := $(RELEASE_TEST_DIR)/../.. PROJECT_ROOT := $(RELEASE_TEST_DIR)/../..
@ -46,11 +46,11 @@ LOCAL_PACKAGE_ROOT := $(PROJECT_ROOT)/dist
local-%: DIST = $(*) local-%: DIST = $(*)
local-%: LOCAL_REPO_ARGS = -v $(LOCAL_PACKAGE_ROOT)/$(DIST)/$(ARCH):/local-repository local-%: LOCAL_REPO_ARGS = -v $(LOCAL_PACKAGE_ROOT)/$(DIST)/$(ARCH):/local-repository
$(LOCAL_TARGETS): local-%: release-% run-% | release-% $(LOCAL_TARGETS): local-%: run-%
run-%: DIST = $(*) run-%: DIST = $(*)
$(RUN_TARGETS): run-%: $(RUN_TARGETS): run-%: image-%
docker run --rm -ti \ docker run ${PLATFORM_ARGS} --rm -ti \
$(LOCAL_REPO_ARGS) \ $(LOCAL_REPO_ARGS) \
nvidia-container-toolkit-repo-test:$(*) nvidia-container-toolkit-repo-test:$(*)

View File

@ -25,11 +25,10 @@ RUN fpm -s empty \
ARG WORKFLOW=nvidia-docker ARG WORKFLOW=nvidia-docker
ARG TEST_REPO=nvidia.github.io
ENV TEST_REPO ${TEST_REPO}
RUN curl -s -L https://nvidia.github.io/${WORKFLOW}/centos8/nvidia-docker.repo \ RUN curl -s -L https://nvidia.github.io/${WORKFLOW}/centos8/nvidia-docker.repo \
| tee /etc/yum.repos.d/nvidia-docker.repo | tee /etc/yum.repos.d/nvidia-docker.repo
COPY entrypoint.sh / COPY entrypoint.sh /
COPY install_repo.sh /
ENTRYPOINT [ "/entrypoint.sh" ] ENTRYPOINT [ "/entrypoint.sh" ]

View File

@ -33,10 +33,10 @@ gpgcheck=0
protect=1 protect=1
EOL EOL
yum-config-manager --enable local-repository yum-config-manager --enable local-repository
elif [[ -n ${TEST_REPO} ]]; then
./install_repo.sh ${TEST_REPO}
else else
echo "Setting up TEST repo: ${TEST_REPO}" echo "Skipping repo setup"
sed -i -e 's#nvidia\.github\.io/libnvidia-container#${TEST_REPO}/libnvidia-container#g' /etc/yum.repos.d/nvidia-docker.repo
yum-config-manager --enable libnvidia-container-experimental
fi fi
exec bash $@ exec bash $@

View File

@ -0,0 +1,25 @@
#!/usr/bin/env bash
# Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# This script is used to build the packages for the components of the NVIDIA
# Container Stack. These include the nvidia-container-toolkit in this repository
# as well as the components included in the third_party folder.
# All required packages are generated in the specified dist folder.
test_repo=$1
echo "Setting up TEST repo: ${test_repo}"
sed -i -e "s#nvidia\.github\.io/libnvidia-container#${test_repo}/libnvidia-container#g" /etc/yum.repos.d/nvidia-docker.repo
yum-config-manager --enable libnvidia-container-experimental