-
Notifications
You must be signed in to change notification settings - Fork 201
/
.gitlab-ci.yml
133 lines (133 loc) · 3.85 KB
/
.gitlab-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
stages:
- diff
- lint
- unit-tests
- e2e-tests
variables:
KUBECTL: v1.19.3
KIND: v0.11.1
DOCKER_HOST: tcp://docker:2375
DOCKER_DRIVER: overlay2
diff:
stage: diff
image:
name: $CI_REGISTRY_GO/golang:1.17
entrypoint: [ "" ]
tags:
- go
before_script:
- cd documentation/gen && go run .
script:
- test -z "$(git diff 2> /dev/null)" || exit "Documentation is not generated, issue \`cd documentation/gen && go run .\` and commit the result"
- test -z "$(git ls-files --others --exclude-standard 2> /dev/null)" || exit "Documentation created untracked files, cannot proceed"
only:
- merge_requests
- branches
tidy:
stage: lint
image:
name: $CI_REGISTRY_GO/golang:1.17
entrypoint: [""]
tags:
- go
script:
- go mod tidy
- test -z "$(git diff 2> /dev/null)" || exit 'Go modules not tidied, issue \`go mod tidy\` and commit the result'
only:
- merge_requests
- branches
golangci_lint:
stage: lint
image:
name: $CI_REGISTRY_GO/lint:1.33
entrypoint: [""]
tags:
- go
script:
- golangci-lint run --enable-all --timeout=10m
only:
- merge_requests
- branches
lint-commit-msg:
stage: lint
image:
name: $CI_REGISTRY_GO/check-commit:v2.1.0
entrypoint: [""]
tags:
- go
script:
- /check
only:
- merge_requests
unit-tests:
stage: unit-tests
image:
name: $CI_REGISTRY_GO/haproxy-alpine:2.5-go1.17
entrypoint: [""]
tags:
- go
script:
- go build -v .
- go test -v ./...
only:
- merge_requests
- branches
.kind_deployment:
stage: e2e-tests
image: $CI_REGISTRY_GO/docker:stable-go1.17
services:
- name: $CI_REGISTRY_GO/docker:18.09.7-dind
alias: docker
tags:
- go
before_script:
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY_GO
script:
- go version
- docker pull $CI_REGISTRY_GO/alpine:3
- docker image tag $CI_REGISTRY_GO/alpine:3 alpine:3
- docker pull $CI_REGISTRY_GO/golang:1.17-alpine
- docker image tag $CI_REGISTRY_GO/golang:1.17-alpine golang:1.17-alpine
- wget -q -o /dev/null -O &> /dev/null /usr/local/bin/kind https://github.com/kubernetes-sigs/kind/releases/download/${KIND}/kind-linux-amd64
- chmod +x /usr/local/bin/kind
- wget -q -o /dev/null -O &> /dev/null /usr/local/bin/kubectl https://storage.googleapis.com/kubernetes-release/release/${KUBECTL}/bin/linux/amd64/kubectl
- chmod +x /usr/local/bin/kubectl
- sed -i "s/K8S_VERSION/$K8S_VERSION/g" ".gitlab/kind-config.yaml"
- sed -i "s~CI_REGISTRY_GO~$CI_REGISTRY_GO~g" ".gitlab/kind-config.yaml"
- sed -i "s~FROM golang~FROM $CI_REGISTRY_GO/golang~g" "build/Dockerfile"
- sed -i "s~FROM haproxytech/haproxy-alpine~FROM $CI_REGISTRY_GO/haproxy-alpine~g" "build/Dockerfile"
- kind create cluster --name=dev --config=./.gitlab/kind-config.yaml
- sed -i -E -e "s/localhost|0\.0\.0\.0|127\.0\.0\.1/docker/g" "$HOME/.kube/config"
- sed -i -E -e "s/localhost|0\.0\.0\.0|127\.0\.0\.1/docker/g" "deploy/tests/e2e/client.go"
- until kubectl get nodes -o wide;do sleep 2; done
- kubectl get pods -A
- CI_ENV=gitlab deploy/tests/create.sh
- kubectl get pods -A
- KIND_URL=docker CGO_ENABLED=0 go test -v ./deploy/tests/e2e/... --tags=e2e_parallel
- KIND_URL=docker CGO_ENABLED=0 go test -v -p 1 ./deploy/tests/e2e/... --tags=e2e_sequential
after_script:
- kubectl get pods -A
- kind delete cluster --name=dev
only:
- merge_requests
- branches
.kind_deployment_schedules:
only:
- schedules
extends: .kind_deployment
k8s_18:
variables:
K8S_VERSION: v1.18.19
extends: .kind_deployment_schedules
k8s_19:
variables:
K8S_VERSION: v1.19.11
extends: .kind_deployment_schedules
k8s_20:
variables:
K8S_VERSION: v1.20.7
extends: .kind_deployment_schedules
k8s_21:
variables:
K8S_VERSION: v1.21.1
extends: .kind_deployment