-
Notifications
You must be signed in to change notification settings - Fork 322
/
Copy path.common-ci.yml
141 lines (128 loc) · 3.56 KB
/
.common-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
variables:
DH_PROD_IMAGE: nvidia/gpu-operator
DH_PROD_VALIDATOR_IMAGE: nvidia/gpu-operator-validator
VALIDATOR_IMAGE_NAME: gpu-operator-validator
TF_VAR_FILE: "$CI_PROJECT_DIR/tests/terraform.tfvars"
GIT_SUBMODULE_STRATEGY: recursive
stages:
- versioning
- lint
- build
- tests
- scan
- aws_kube_setup
- e2e_tests
- aws_kube_clean
- release
versioning:
stage: versioning
image:
name: alpine/git
entrypoint: ['/usr/bin/env']
script:
# generate version information, an artifact sourced as a script in other jobs
- VERSION="$(git describe --tags --dirty --always)"
- echo export VERSION=${VERSION} | tee .VERSION_INFO
- echo export LAST_TAG=$(git describe --tags $(git rev-list --tags --max-count=1)) | tee -a .VERSION_INFO
- if [ -z "${CI_COMMIT_TAG}" ]; then echo SUBCHART_DIR="nightly" ; else echo SUBCHART_DIR="stable"; fi | tee -a .VERSION_INFO
# check that index is not dirty - to avoid some annoying to debug CI failures
- "git diff-index --quiet HEAD -- || ( echo ERROR: Unstaged files or dirty index ; exit 1 )"
artifacts:
paths:
- .VERSION_INFO
helm-lint:
stage: lint
allow_failure: true
image:
name: alpine/git
entrypoint: ['/usr/bin/env']
before_script:
- apk add --update curl openssl bash git openssh make
- curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
script:
- helm lint deployments/gpu-operator/
go-lint:
stage: lint
allow_failure: true
image: golang:1.15
services:
- docker:stable-dind
script:
- GO111MODULE=off go get -u golang.org/x/lint/golint
- make lint
go-fmt:
stage: lint
allow_failure: true
image: golang:1.15
services:
- docker:stable-dind
script:
- make fmt
ineffassign:
stage: lint
allow_failure: true
image: golang:1.15
script:
- GO111MODULE=off go get -u github.com/gordonklaus/ineffassign
- make assign
misspell:
stage: lint
allow_failure: true
image: golang:1.15
script:
- GO111MODULE=off go get -u github.com/client9/misspell/cmd/misspell
- make misspell
build-image:
stage: build
image: docker:stable
services:
- docker:stable-dind
script:
- source .VERSION_INFO
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- apk add --update make
- make docker-build IMG=$CI_REGISTRY_IMAGE:$VERSION
- docker push "$CI_REGISTRY_IMAGE:$VERSION"
build-validator:
stage: build
image: docker:stable
services:
- docker:stable-dind
script:
- source .VERSION_INFO
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- apk add --update make
- cd validator && make ubi8 IMAGE=$CI_REGISTRY_IMAGE/$VALIDATOR_IMAGE_NAME VERSION=$VERSION
- docker push "$CI_REGISTRY_IMAGE/$VALIDATOR_IMAGE_NAME:$VERSION"
unit-tests:
stage: tests
image: docker:stable
services:
- docker:stable-dind
except:
variables:
- $SKIP_TESTS =~ /^y/
script:
- apk add --update make
- make devel-image IMG=nvidia/gpu-operator:devel
- docker run -t nvidia/gpu-operator:devel make unit-test
dependencies:
- build-image
.scan:
stage: scan
image: docker:stable
services:
- docker:stable-dind
except:
variables:
- $SKIP_SCANS =~ /^y/
before_script:
- source .VERSION_INFO
- docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
- docker pull ${CI_REGISTRY_IMAGE}:${VERSION}
- docker pull ${CI_REGISTRY_IMAGE}/${VALIDATOR_IMAGE_NAME}:${VERSION}
script:
- 'false'
dependencies:
- build-image
- versioning