-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.gitlab-ci.yml
68 lines (62 loc) · 2.08 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
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
DOCKER_TAG: $CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA
DOCKER_IMAGE_NAME: $CI_REGISTRY_IMAGE:$DOCKER_TAG
DOCKER_PULL_SECRET: docker-registry-secret
K8S_NAMESPACE_PREFIX: microbe
# take from variable or read from kubectl
K8S_CLUSTER_URL: http://hx-rke-wp-webadmin-17-worker-1.caas.ebi.ac.uk
APP_NAME: $CI_PROJECT_NAME
stages:
- build
- deploy
build_docker_image:
stage: build
image: docker:27
tags: ["dind"]
services:
- docker:27-dind
script:
- docker --version
- echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY"
- docker build -t $DOCKER_IMAGE_NAME .
- docker push --quiet $DOCKER_IMAGE_NAME
after_script:
- docker logout ${CI_REGISTRY}
deploy_dev:
variables:
ENVIRONMENT_NAME: dev
environment:
name: dev
url: https://wwwint.ebi.ac.uk/microbe
only:
- main
extends: .kube_deploy_script
.kube_deploy_script:
stage: deploy
image: dtzar/helm-kubectl:3.16
tags: ["dind"]
services:
- docker:27-dind
variables:
K8S_NAMESPACE: ${K8S_NAMESPACE_PREFIX}-${ENVIRONMENT_NAME}
script:
- kubectl create namespace ${K8S_NAMESPACE} || true
- kubectl config set-context --current --namespace=${K8S_NAMESPACE}
- kubectl delete secret $DOCKER_PULL_SECRET || true
- |
kubectl create secret docker-registry $DOCKER_PULL_SECRET \
--docker-server=$CI_REGISTRY \
--docker-username=$CI_REGISTRY_USER \
--docker-password=$CI_REGISTRY_PASSWORD
- |
helm upgrade \
--install $APP_NAME ./chart \
--values ./chart/values-${ENVIRONMENT_NAME}.yaml \
--set image.repository=$CI_REGISTRY_IMAGE \
--set image.tag=$DOCKER_TAG \
--set "imagePullSecrets[0].name=$DOCKER_PULL_SECRET"
- kubectl rollout restart deployment ${APP_NAME}
- kubectl rollout status deployment ${APP_NAME} --timeout=90s
- kubectl wait --for=condition=Ready deployment/${APP_NAME} --timeout=60s