-
Notifications
You must be signed in to change notification settings - Fork 5
/
.gitlab-ci.yml
128 lines (114 loc) · 3.97 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
stages:
- test
- build
- publish
- deploy
default:
interruptible: true
retry:
max: 2
when:
- runner_system_failure
- unknown_failure
- api_failure
tags:
- kubernetes-parity-build
variables:
IMAGE_NAME: "paritytech/testnet-manager"
DOCKERFILE: "Dockerfile"
BUILDAH_IMAGE: "docker.io/paritytech/buildah:1.31"
BUILDAH_COMMAND: "buildah --storage-driver overlay2"
.test-refs: &test-refs
rules:
- if: $CI_COMMIT_REF_NAME =~ /^[0-9]+$/ # PRs
.publish-refs: &publish-refs
rules:
- if: $CI_COMMIT_REF_NAME == "main" # on commits to main branch
- if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # on tags (i.e. v1.0, v2.1rc1)
.release-refs: &release-refs
rules:
- if: $CI_COMMIT_REF_NAME =~ /^v[0-9]+\.[0-9]+.*$/ # on tags (i.e. v1.0, v2.1rc1)
.build-only-docker-image: &build-only-docker-image
image: $BUILDAH_IMAGE
script:
- $BUILDAH_COMMAND build
--format=docker
--build-arg VCS_REF="${CI_COMMIT_SHA}"
--build-arg BUILD_DATE="$(date -u '+%Y-%m-%dT%H:%M:%SZ')"
--build-arg PROJECT_NAME="${CI_PROJECT_NAME}"
--tag "$IMAGE_NAME:latest"
--file "$DOCKERFILE" .
.image_version:
script:
# version is either "main-<short_sha>" or tag
- if [[ $CI_COMMIT_REF_NAME == "main" ]];
then
export VERSION=$CI_COMMIT_REF_NAME-${CI_COMMIT_SHORT_SHA};
else
export VERSION=$CI_COMMIT_REF_NAME;
fi;
echo "VERSION=$VERSION"
.deploy-with-argocd: &deploy-with-argocd
stage: deploy
image: argoproj/argocd:v2.6.7
variables:
ARGOCD_OPTS: --grpc-web --grpc-web-root-path /$DOMAIN
script:
- !reference [.image_version, script]
- argocd app list
- argocd app set $APP --helm-set testnet-manager.image.tag=$VERSION
- argocd app sync $APP --async
#- argocd app wait $APP --timeout 300 --sync
build-docker-bot:
stage: build
<<: *test-refs
<<: *build-only-docker-image
build-push-image:
stage: publish
<<: *publish-refs
image: $BUILDAH_IMAGE
variables:
DOCKER_USER: $Docker_Hub_User_Parity
DOCKER_PASS: $Docker_Hub_Pass_Parity
script:
- !reference [.image_version, script]
- test "$DOCKER_USER" -a "$DOCKER_PASS" ||
( echo "no docker credentials provided"; exit 1 )
- echo "__version__ = '$VERSION'" > app/__init__.py
- $BUILDAH_COMMAND build
--format=docker
--build-arg VCS_REF="${CI_COMMIT_SHA}"
--build-arg BUILD_DATE="$(date -u '+%Y-%m-%dT%H:%M:%SZ')"
--build-arg IMAGE_NAME="${IMAGE_NAME}"
--tag "$IMAGE_NAME:latest"
--tag "$IMAGE_NAME:$VERSION"
--file $DOCKERFILE .
# The job will success only on the protected branch
- echo "$DOCKER_PASS" |
buildah login --username "$DOCKER_USER" --password-stdin docker.io
- $BUILDAH_COMMAND info
- $BUILDAH_COMMAND push --format=v2s2 "$IMAGE_NAME:latest"
- $BUILDAH_COMMAND push --format=v2s2 "$IMAGE_NAME:$VERSION"
after_script:
- buildah logout --all
deploy-to-versi:
<<: *publish-refs
extends: .deploy-with-argocd
environment: parity-versi
variables:
DOMAIN: parity-versi
APP: testnet-manager
deploy-to-rococo:
<<: *release-refs
extends: .deploy-with-argocd
environment: parity-testnet-rococo
variables:
DOMAIN: parity-testnet
APP: testnet-manager-rococo
deploy-to-westend:
<<: *release-refs
extends: .deploy-with-argocd
environment: parity-testnet-westend
variables:
DOMAIN: parity-testnet
APP: testnet-manager-westend