mirror of
https://github.com/NVIDIA/nvidia-container-toolkit
synced 2024-11-25 05:21:33 +00:00
ef1fe3ab41
Signed-off-by: Evan Lezar <elezar@nvidia.com>
315 lines
6.7 KiB
YAML
315 lines
6.7 KiB
YAML
# Copyright (c) 2019-2022, 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.
|
|
|
|
include:
|
|
- .common-ci.yml
|
|
|
|
build-dev-image:
|
|
stage: image
|
|
script:
|
|
- apk --no-cache add make bash
|
|
- make .build-image
|
|
- docker login -u "${CI_REGISTRY_USER}" -p "${CI_REGISTRY_PASSWORD}" "${CI_REGISTRY}"
|
|
- make .push-build-image
|
|
|
|
.requires-build-image:
|
|
image: "${BUILDIMAGE}"
|
|
|
|
.go-check:
|
|
extends:
|
|
- .requires-build-image
|
|
stage: go-checks
|
|
|
|
fmt:
|
|
extends:
|
|
- .go-check
|
|
script:
|
|
- make assert-fmt
|
|
|
|
vet:
|
|
extends:
|
|
- .go-check
|
|
script:
|
|
- make vet
|
|
|
|
lint:
|
|
extends:
|
|
- .go-check
|
|
script:
|
|
- make lint
|
|
allow_failure: true
|
|
|
|
ineffassign:
|
|
extends:
|
|
- .go-check
|
|
script:
|
|
- make ineffassign
|
|
allow_failure: true
|
|
|
|
misspell:
|
|
extends:
|
|
- .go-check
|
|
script:
|
|
- make misspell
|
|
|
|
go-build:
|
|
extends:
|
|
- .requires-build-image
|
|
stage: go-build
|
|
script:
|
|
- make build
|
|
|
|
unit-tests:
|
|
extends:
|
|
- .requires-build-image
|
|
stage: unit-tests
|
|
script:
|
|
- make coverage
|
|
|
|
# Define the package build helpers
|
|
.multi-arch-build:
|
|
before_script:
|
|
- apk add --no-cache coreutils build-base sed git bash make
|
|
- '[[ -n "${SKIP_QEMU_SETUP}" ]] || docker run --rm --privileged multiarch/qemu-user-static --reset -p yes -c yes'
|
|
|
|
.package-artifacts:
|
|
variables:
|
|
ARTIFACTS_NAME: "toolkit-container-${CI_PIPELINE_ID}"
|
|
ARTIFACTS_ROOT: "toolkit-container-${CI_PIPELINE_ID}"
|
|
DIST_DIR: ${CI_PROJECT_DIR}/${ARTIFACTS_ROOT}
|
|
|
|
.package-build:
|
|
extends:
|
|
- .multi-arch-build
|
|
- .package-artifacts
|
|
stage: package-build
|
|
timeout: 3h
|
|
script:
|
|
- ./scripts/build-packages.sh ${DIST}-${ARCH}
|
|
|
|
artifacts:
|
|
name: ${ARTIFACTS_NAME}
|
|
paths:
|
|
- ${ARTIFACTS_ROOT}
|
|
|
|
# Define the package build targets
|
|
package-amazonlinux2-aarch64:
|
|
extends:
|
|
- .package-build
|
|
- .dist-amazonlinux2
|
|
- .arch-aarch64
|
|
|
|
package-amazonlinux2-x86_64:
|
|
extends:
|
|
- .package-build
|
|
- .dist-amazonlinux2
|
|
- .arch-x86_64
|
|
|
|
package-centos7-x86_64:
|
|
extends:
|
|
- .package-build
|
|
- .dist-centos7
|
|
- .arch-x86_64
|
|
|
|
package-centos8-aarch64:
|
|
extends:
|
|
- .package-build
|
|
- .dist-centos8
|
|
- .arch-aarch64
|
|
|
|
package-centos8-ppc64le:
|
|
extends:
|
|
- .package-build
|
|
- .dist-centos8
|
|
- .arch-ppc64le
|
|
|
|
package-centos8-x86_64:
|
|
extends:
|
|
- .package-build
|
|
- .dist-centos8
|
|
- .arch-x86_64
|
|
|
|
package-debian10-amd64:
|
|
extends:
|
|
- .package-build
|
|
- .dist-debian10
|
|
- .arch-amd64
|
|
|
|
package-opensuse-leap15.1-x86_64:
|
|
extends:
|
|
- .package-build
|
|
- .dist-opensuse-leap15.1
|
|
- .arch-x86_64
|
|
|
|
package-ubuntu18.04-amd64:
|
|
extends:
|
|
- .package-build
|
|
- .dist-ubuntu18.04
|
|
- .arch-amd64
|
|
|
|
package-ubuntu18.04-arm64:
|
|
extends:
|
|
- .package-build
|
|
- .dist-ubuntu18.04
|
|
- .arch-arm64
|
|
|
|
package-ubuntu18.04-ppc64le:
|
|
extends:
|
|
- .package-build
|
|
- .dist-ubuntu18.04
|
|
- .arch-ppc64le
|
|
|
|
.buildx-setup:
|
|
before_script:
|
|
- export BUILDX_VERSION=v0.6.3
|
|
- apk add --no-cache curl
|
|
- mkdir -p ~/.docker/cli-plugins
|
|
- curl -sSLo ~/.docker/cli-plugins/docker-buildx "https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/buildx-${BUILDX_VERSION}.linux-amd64"
|
|
- chmod a+x ~/.docker/cli-plugins/docker-buildx
|
|
|
|
- docker buildx create --use --platform=linux/amd64,linux/arm64
|
|
|
|
- '[[ -n "${SKIP_QEMU_SETUP}" ]] || docker run --rm --privileged multiarch/qemu-user-static --reset -p yes'
|
|
|
|
# Define the image build targets
|
|
.image-build:
|
|
stage: image-build
|
|
variables:
|
|
IMAGE_NAME: "${CI_REGISTRY_IMAGE}/container-toolkit"
|
|
VERSION: "${CI_COMMIT_SHORT_SHA}"
|
|
PUSH_ON_BUILD: "true"
|
|
before_script:
|
|
- !reference [.buildx-setup, before_script]
|
|
|
|
- apk add --no-cache bash make git
|
|
- 'echo "Logging in to CI registry ${CI_REGISTRY}"'
|
|
- docker login -u "${CI_REGISTRY_USER}" -p "${CI_REGISTRY_PASSWORD}" "${CI_REGISTRY}"
|
|
script:
|
|
- make -f build/container/Makefile build-${DIST}
|
|
|
|
image-centos7:
|
|
extends:
|
|
- .image-build
|
|
- .package-artifacts
|
|
- .dist-centos7
|
|
needs:
|
|
- package-centos7-x86_64
|
|
|
|
image-ubi8:
|
|
extends:
|
|
- .image-build
|
|
- .package-artifacts
|
|
- .dist-ubi8
|
|
needs:
|
|
# Note: The ubi8 image uses the centos8 packages
|
|
- package-centos8-aarch64
|
|
- package-centos8-x86_64
|
|
- package-centos8-ppc64le
|
|
|
|
image-ubuntu20.04:
|
|
extends:
|
|
- .image-build
|
|
- .package-artifacts
|
|
- .dist-ubuntu20.04
|
|
needs:
|
|
- package-ubuntu18.04-amd64
|
|
- package-ubuntu18.04-arm64
|
|
- job: package-ubuntu18.04-ppc64le
|
|
optional: true
|
|
|
|
# The DIST=packaging target creates an image containing all built packages
|
|
image-packaging:
|
|
extends:
|
|
- .image-build
|
|
- .package-artifacts
|
|
- .dist-packaging
|
|
needs:
|
|
- job: package-centos8-aarch64
|
|
- job: package-centos8-x86_64
|
|
- job: package-ubuntu18.04-amd64
|
|
- job: package-ubuntu18.04-arm64
|
|
- job: package-amazonlinux2-aarch64
|
|
optional: true
|
|
- job: package-amazonlinux2-x86_64
|
|
optional: true
|
|
- job: package-centos7-x86_64
|
|
optional: true
|
|
- job: package-centos8-ppc64le
|
|
optional: true
|
|
- job: package-debian10-amd64
|
|
optional: true
|
|
- job: package-opensuse-leap15.1-x86_64
|
|
optional: true
|
|
- job: package-ubuntu18.04-ppc64le
|
|
optional: true
|
|
|
|
# Define publish test helpers
|
|
.test:toolkit:
|
|
extends:
|
|
- .integration
|
|
variables:
|
|
TEST_CASES: "toolkit"
|
|
|
|
.test:docker:
|
|
extends:
|
|
- .integration
|
|
variables:
|
|
TEST_CASES: "docker"
|
|
|
|
.test:containerd:
|
|
# TODO: The containerd tests fail due to issues with SIGHUP.
|
|
# Until this is resolved with retry up to twice and allow failure here.
|
|
retry: 2
|
|
allow_failure: true
|
|
extends:
|
|
- .integration
|
|
variables:
|
|
TEST_CASES: "containerd"
|
|
|
|
.test:crio:
|
|
extends:
|
|
- .integration
|
|
variables:
|
|
TEST_CASES: "crio"
|
|
|
|
# Define the test targets
|
|
test-toolkit-ubuntu20.04:
|
|
extends:
|
|
- .test:toolkit
|
|
- .dist-ubuntu20.04
|
|
needs:
|
|
- image-ubuntu20.04
|
|
|
|
test-containerd-ubuntu20.04:
|
|
extends:
|
|
- .test:containerd
|
|
- .dist-ubuntu20.04
|
|
needs:
|
|
- image-ubuntu20.04
|
|
|
|
test-crio-ubuntu20.04:
|
|
extends:
|
|
- .test:crio
|
|
- .dist-ubuntu20.04
|
|
needs:
|
|
- image-ubuntu20.04
|
|
|
|
test-docker-ubuntu20.04:
|
|
extends:
|
|
- .test:docker
|
|
- .dist-ubuntu20.04
|
|
needs:
|
|
- image-ubuntu20.04
|
|
|