-
Notifications
You must be signed in to change notification settings - Fork 3
/
.gitlab-ci.yml
88 lines (73 loc) · 2.09 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
image: git.tu-berlin.de:5000/mcc-fred/fred/ci:latest
stages:
- analysis
- test
- build
- release
.dependencies: &dependencies
- make dep
golint:
stage: analysis
before_script: *dependencies
script:
- make lint
unit_tests:
stage: test
retry: 2
before_script: *dependencies
script:
- make test
race_detector:
stage: test
retry: 2
before_script: *dependencies
script:
- make race
code_coverage:
stage: test
retry: 2
before_script: *dependencies
script:
- make coverage
coverage: '/total:\s+\(statements\)\s+\d+.\d*\%/'
build:
stage: build
before_script: *dependencies
script:
- make
container:
stage: build
before_script: *dependencies
# do not run this for tags, as we want proper containers released with goreleaser
except:
refs:
- tags
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- export IMAGE_TAG=$(echo $CI_COMMIT_REF_NAME | cut -d '/' -f1)-$CI_COMMIT_SHORT_SHA
- docker buildx build --push -t git.tu-berlin.de:5000/mcc-fred/fred/fred:$IMAGE_TAG .
- docker buildx build --push -t git.tu-berlin.de:5000/mcc-fred/fred/fredproxy:$IMAGE_TAG -f proxy.Dockerfile .
- docker buildx build --push -t git.tu-berlin.de:5000/mcc-fred/fred/alexandra:$IMAGE_TAG -f alexandra.Dockerfile .
# - docker push git.tu-berlin.de:5000/mcc-fred/fred/fred:$IMAGE_TAG
# - docker push git.tu-berlin.de:5000/mcc-fred/fred/fredproxy:$IMAGE_TAG
# - docker push git.tu-berlin.de:5000/mcc-fred/fred/alexandra:$IMAGE_TAG
release:
stage: release
timeout: 20m
image:
name: goreleaser/goreleaser
entrypoint: [""]
variables:
DOCKER_REGISTRY: $CI_REGISTRY
DOCKER_USERNAME: $CI_REGISTRY_USER
DOCKER_PASSWORD: $CI_REGISTRY_PASSWORD
# Disable shallow cloning so that goreleaser can diff between tags to
# generate a changelog.
GIT_DEPTH: 0
# Only run this release job for tags, not every commit (for example).
only:
refs:
- tags
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- goreleaser release --clean