Merge branch 'update-ci' into 'master'

Update CI to use build image directly

See merge request nvidia/container-toolkit/container-toolkit!53
This commit is contained in:
Evan Lezar 2021-10-12 12:55:48 +00:00
commit 28f6b7c02c
4 changed files with 36 additions and 89 deletions

View File

@ -20,23 +20,29 @@ default:
variables:
IMAGE: "${CI_REGISTRY_IMAGE}"
IMAGE_TAG: "${CI_COMMIT_REF_SLUG}"
BUILDIMAGE: "${CI_REGISTRY_IMAGE}/build:${CI_COMMIT_SHORT_SHA}"
stages:
- image
- lint
- go-checks
- go-build
- unit-tests
- build
- build-long
- scan
- release
build-dev-image:
stage: image
before_script:
- docker login -u "${CI_REGISTRY_USER}" -p "${CI_REGISTRY_PASSWORD}" "${CI_REGISTRY}"
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:
variables:
SKIP_IMAGE_BUILD: "yes"
before_script:
- apk --no-cache add make bash
- docker login -u "${CI_REGISTRY_USER}" -p "${CI_REGISTRY_PASSWORD}" "${CI_REGISTRY}"
- make .pull-build-image
image: "${BUILDIMAGE}"
.go-check:
extends:
@ -47,45 +53,45 @@ fmt:
extends:
- .go-check
script:
- make docker-assert-fmt
- make assert-fmt
vet:
extends:
- .go-check
script:
- make docker-vet
- make vet
lint:
extends:
- .go-check
script:
- make docker-lint
- make lint
allow_failure: true
ineffassign:
extends:
- .go-check
script:
- make docker-ineffassign
- make ineffassign
allow_failure: true
misspell:
extends:
- .go-check
script:
- make docker-misspell
- make misspell
go-build:
extends:
- .requires-build-image
stage: go-build
script:
- make docker-build
- make build
unit-tests:
extends:
- .requires-build-image
stage: unit-tests
script:
- make docker-coverage
- make coverage

View File

@ -15,17 +15,6 @@
include:
- .common-ci.yml
stages:
- image
- go-checks
- go-build
- unit-tests
- test
- scan
- release
- build-one
- build-all
.build-setup:
before_script:
- apk update
@ -42,7 +31,7 @@ stages:
.build-one-setup:
extends:
- .build-setup
stage: build-one
stage: build
rules:
- if: $CI_MERGE_REQUEST_ID
@ -59,7 +48,7 @@ stages:
.build-all-setup:
extends:
- .build-setup
stage: build-all
stage: build-long
timeout: 2h 30m
rules:
- if: $CI_COMMIT_TAG

View File

@ -19,8 +19,7 @@ where `TARGET` is a make target that is valid for each of the sub-components.
These include:
* `ubuntu18.04-amd64`
* `docker-all`
with the later generating for all supported distribution and platform combinations.
* `centos8-x86_64`
The packages are generated in the `dist` folder.
@ -33,62 +32,14 @@ environment variables.
## Testing packages locally
### Ubuntu
Launch a docker container:
```
docker run --rm -it \
-v $(pwd):/work \
-v $(pwd)/dist/ubuntu18.04/amd64:/local-repository \
-w /work \
ubuntu:18.04
```
The [test/release](./test/release/) folder contains documentation on how the installation of local or staged packages can be tested.
```
apt-get update && apt-get install -y apt-utils
```
## Releasing
A utility script [`scripts/release.sh`](./scripts/release.sh) is provided to build
packages required for release. If run without arguments, all supported distribution-architecture combinations are built. A specific distribution-architecture pair can also be provided
```sh
./scripts/release.sh ubuntu18.04-amd64
```
echo "deb [trusted=yes] file:/local-repository/ ./" > /etc/apt/sources.list.d/local.list
```
```
cd /local-repository && apt-ftparchive packages . > Packages
```
```
apt-get update
```
### Centos
```
docker run --rm -it \
-v $(pwd):/work \
-v $(pwd)/dist/centos8/x86_64:/local-repository \
-w /work \
centos:8
```
```
yum install -y createrepo
```
```
createrepo /local-repository
```
```
cat >/etc/yum.repos.d/local.repo <<EOL
[local]
name=NVIDIA Container Toolkit Local Packages
baseurl=file:///local-repository
enabled=1
gpgcheck=0
protect=1
EOL
```
where the `amd64` builds for `ubuntu18.04` are provided as an example.

View File

@ -27,12 +27,13 @@ MODULE := github.com/NVIDIA/nvidia-container-toolkit
docker-native:
include $(CURDIR)/docker/docker.mk
ifeq ($(IMAGE),)
ifeq ($(IMAGE_NAME),)
REGISTRY ?= nvidia
IMAGE=$(REGISTRY)/container-toolkit
IMAGE_NAME = $(REGISTRY)/container-toolkit
endif
IMAGE_TAG ?= $(GOLANG_VERSION)
BUILDIMAGE ?= $(IMAGE):$(IMAGE_TAG)-devel
BUILDIMAGE_TAG ?= golang$(GOLANG_VERSION)
BUILDIMAGE ?= $(IMAGE_NAME)-build:$(BUILDIMAGE_TAG)
EXAMPLES := $(patsubst ./examples/%/,%,$(sort $(dir $(wildcard ./examples/*/))))
EXAMPLE_TARGETS := $(patsubst %,example-%, $(EXAMPLES))