Newer
Older
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
workflow:
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: always
- if: >-
$CI_PIPELINE_SOURCE == "push"
&& ($CI_COMMIT_BRANCH == "staging" || $CI_COMMIT_BRANCH == "master")
when: always
- when: never
variables:
DOCKER_VERSION: '20.10.12'
K8S_NAMESPACE: 'devops-s22-deployable'
CONTAINER_TAG: '${CI_REGISTRY_IMAGE}:${CI_PIPELINE_IID}-${CI_COMMIT_SHORT_SHA}'
stages:
- test
- build
- deploy
job_test-image:
stage: test
tags:
- docker-priviliged
image: docker:$DOCKER_VERSION
services:
- name: docker:$DOCKER_VERSION-dind
script:
- docker build
--tag "${CONTAINER_TAG}-test"
--target=test
"./"
after_script:
- docker image rm --force "${CI_REGISTRY_IMAGE}:${CI_PIPELINE_IID}-${CI_COMMIT_SHORT_SHA}"
job_build-image:
stage: build
needs:
- 'job_test-image'
rules:
- if: $CI_COMMIT_BRANCH != "staging" && $CI_COMMIT_BRANCH != "master"
when: 'never'
tags:
- docker-priviliged
image: docker:$DOCKER_VERSION
services:
- name: docker:$DOCKER_VERSION-dind
script:
- SERVER_PUBLIC_URL=""
- DB_HOST=""
- docker build
--tag "${CONTAINER_TAG}"
--build-arg JWT_SECRET=${JWT_SECRET}
--build-arg SERVER_PUBLIC_URL=${SERVER_PUBLIC_URL}
--build-arg DB_HOST=${DB_HOST}
"./"
- docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
- docker push "${CI_REGISTRY_IMAGE}:${CI_PIPELINE_IID}-${CI_COMMIT_SHORT_SHA}"
after_script:
- docker image rm --force "${CI_REGISTRY_IMAGE}:${CI_PIPELINE_IID}-${CI_COMMIT_SHORT_SHA}"
job_deploy-image:
stage: deploy
needs:
- 'job_build-image'
rules:
- if: $CI_COMMIT_REF_NAME =~ /staging/
when: 'always'
variables:
ENVIRONMENT_NAME: 'staging'
- if: $CI_COMMIT_REF_NAME !~ /staging/
when: 'always'
variables:
ENVIRONMENT_NAME: 'prod'
tags:
- docker
image:
name: k8s-image
entrypoint: ['']
script:
# - IMAGE="${CI_REGISTRY_IMAGE}:${VERSION}"
- kubectl apply
--kubeconfig ${SECRET_KUBECONFIG_PATH}
--namespace "${ENVIRONMENT_NAME}-${K8S_NAMESPACE}"
--kustomize -