2022-11-08 16:45:34 +00:00
|
|
|
# Copyright (c) 2019-2022, NVIDIA CORPORATION. All rights reserved.
|
2021-03-17 13:13:04 +00:00
|
|
|
#
|
|
|
|
# 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.
|
|
|
|
|
2021-07-01 14:16:33 +00:00
|
|
|
include:
|
|
|
|
- .common-ci.yml
|
2019-10-22 21:42:41 +00:00
|
|
|
|
2021-11-26 14:49:30 +00:00
|
|
|
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
|
2022-08-11 09:21:18 +00:00
|
|
|
timeout: 3h
|
2021-11-26 14:49:30 +00:00
|
|
|
script:
|
2022-01-28 16:10:46 +00:00
|
|
|
- ./scripts/build-packages.sh ${DIST}-${ARCH}
|
2021-11-26 14:49:30 +00:00
|
|
|
|
|
|
|
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-ppc64le:
|
|
|
|
extends:
|
|
|
|
- .package-build
|
|
|
|
- .dist-centos7
|
|
|
|
- .arch-ppc64le
|
|
|
|
|
|
|
|
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-debian9-amd64:
|
|
|
|
extends:
|
|
|
|
- .package-build
|
|
|
|
- .dist-debian9
|
|
|
|
- .arch-amd64
|
|
|
|
|
2022-08-10 10:02:40 +00:00
|
|
|
package-fedora35-aarch64:
|
|
|
|
extends:
|
|
|
|
- .package-build
|
|
|
|
- .dist-fedora35
|
|
|
|
- .arch-aarch64
|
|
|
|
|
|
|
|
package-fedora35-x86_64:
|
|
|
|
extends:
|
|
|
|
- .package-build
|
|
|
|
- .dist-fedora35
|
|
|
|
- .arch-x86_64
|
|
|
|
|
2021-11-26 14:49:30 +00:00
|
|
|
package-opensuse-leap15.1-x86_64:
|
|
|
|
extends:
|
|
|
|
- .package-build
|
|
|
|
- .dist-opensuse-leap15.1
|
|
|
|
- .arch-x86_64
|
|
|
|
|
|
|
|
package-ubuntu16.04-amd64:
|
|
|
|
extends:
|
|
|
|
- .package-build
|
|
|
|
- .dist-ubuntu16.04
|
|
|
|
- .arch-amd64
|
|
|
|
|
|
|
|
package-ubuntu16.04-ppc64le:
|
|
|
|
extends:
|
|
|
|
- .package-build
|
|
|
|
- .dist-ubuntu16.04
|
|
|
|
- .arch-ppc64le
|
|
|
|
|
|
|
|
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
|
|
|
|
|
2022-02-01 13:17:47 +00:00
|
|
|
.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'
|
|
|
|
|
2021-11-26 14:49:30 +00:00
|
|
|
# Define the image build targets
|
|
|
|
.image-build:
|
|
|
|
stage: image-build
|
|
|
|
variables:
|
|
|
|
IMAGE_NAME: "${CI_REGISTRY_IMAGE}/container-toolkit"
|
|
|
|
VERSION: "${CI_COMMIT_SHORT_SHA}"
|
2022-02-01 13:17:47 +00:00
|
|
|
PUSH_ON_BUILD: "true"
|
2021-11-26 14:49:30 +00:00
|
|
|
before_script:
|
2022-02-01 13:17:47 +00:00
|
|
|
- !reference [.buildx-setup, before_script]
|
|
|
|
|
2021-11-26 14:49:30 +00:00
|
|
|
- apk add --no-cache bash make
|
|
|
|
- '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-ppc64le
|
|
|
|
- package-centos7-x86_64
|
|
|
|
|
|
|
|
image-ubi8:
|
|
|
|
extends:
|
|
|
|
- .image-build
|
|
|
|
- .package-artifacts
|
|
|
|
- .dist-ubi8
|
|
|
|
needs:
|
2022-02-01 13:14:33 +00:00
|
|
|
# Note: The ubi8 image uses the centos8 packages
|
|
|
|
- package-centos8-aarch64
|
|
|
|
- package-centos8-x86_64
|
|
|
|
- package-centos8-ppc64le
|
2021-11-26 14:49:30 +00:00
|
|
|
|
|
|
|
image-ubuntu18.04:
|
|
|
|
extends:
|
|
|
|
- .image-build
|
|
|
|
- .package-artifacts
|
|
|
|
- .dist-ubuntu18.04
|
|
|
|
needs:
|
|
|
|
- package-ubuntu18.04-amd64
|
|
|
|
- package-ubuntu18.04-arm64
|
2022-10-07 13:42:17 +00:00
|
|
|
- job: package-ubuntu18.04-ppc64le
|
|
|
|
optional: true
|
2021-11-26 14:49:30 +00:00
|
|
|
|
2022-03-18 11:50:24 +00:00
|
|
|
image-ubuntu20.04:
|
|
|
|
extends:
|
|
|
|
- .image-build
|
|
|
|
- .package-artifacts
|
|
|
|
- .dist-ubuntu20.04
|
|
|
|
needs:
|
|
|
|
- package-ubuntu18.04-amd64
|
|
|
|
- package-ubuntu18.04-arm64
|
|
|
|
- package-ubuntu18.04-ppc64le
|
|
|
|
|
2021-11-26 14:49:30 +00:00
|
|
|
# The DIST=packaging target creates an image containing all built packages
|
|
|
|
image-packaging:
|
|
|
|
extends:
|
|
|
|
- .image-build
|
|
|
|
- .package-artifacts
|
|
|
|
- .dist-packaging
|
|
|
|
needs:
|
2022-10-07 13:42:17 +00:00
|
|
|
- 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-ppc64le
|
|
|
|
optional: true
|
|
|
|
- job: package-centos7-x86_64
|
|
|
|
optional: true
|
|
|
|
- job: package-centos8-ppc64le
|
|
|
|
optional: true
|
|
|
|
- job: package-debian10-amd64
|
|
|
|
optional: true
|
|
|
|
- job: package-debian9-amd64
|
|
|
|
optional: true
|
|
|
|
- job: package-fedora35-aarch64
|
|
|
|
optional: true
|
|
|
|
- job: package-fedora35-x86_64
|
|
|
|
optional: true
|
|
|
|
- job: package-opensuse-leap15.1-x86_64
|
|
|
|
optional: true
|
|
|
|
- job: package-ubuntu16.04-amd64
|
|
|
|
optional: true
|
|
|
|
- job: package-ubuntu16.04-ppc64le
|
|
|
|
optional: true
|
|
|
|
- job: package-ubuntu18.04-ppc64le
|
|
|
|
optional: true
|
2021-11-26 14:49:30 +00:00
|
|
|
|
|
|
|
# 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-ubuntu18.04:
|
|
|
|
extends:
|
|
|
|
- .test:toolkit
|
|
|
|
- .dist-ubuntu18.04
|
|
|
|
needs:
|
|
|
|
- image-ubuntu18.04
|
|
|
|
|
|
|
|
test-containerd-ubuntu18.04:
|
|
|
|
extends:
|
|
|
|
- .test:containerd
|
|
|
|
- .dist-ubuntu18.04
|
|
|
|
needs:
|
|
|
|
- image-ubuntu18.04
|
|
|
|
|
|
|
|
test-crio-ubuntu18.04:
|
|
|
|
extends:
|
|
|
|
- .test:crio
|
|
|
|
- .dist-ubuntu18.04
|
|
|
|
needs:
|
|
|
|
- image-ubuntu18.04
|
|
|
|
|
|
|
|
test-docker-ubuntu18.04:
|
|
|
|
extends:
|
|
|
|
- .test:docker
|
|
|
|
- .dist-ubuntu18.04
|
|
|
|
needs:
|
|
|
|
- image-ubuntu18.04
|
|
|
|
|