-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitlab-ci.yml
73 lines (67 loc) · 1.88 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
variables:
CONTAINER_IMAGE: $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_REF_SLUG
CONTAINER_IMAGE_FULL: $CI_REGISTRY/$CI_PROJECT_PATH:$CI_COMMIT_REF_SLUG-$CI_PIPELINE_ID
stages:
- build
- test
- deploy
# BUILD STAGES
Push into docker registry:
stage: build
image: docker:stable
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker pull $CONTAINER_IMAGE || true
- docker build --cache-from $CONTAINER_IMAGE -t $CONTAINER_IMAGE .
- docker tag $CONTAINER_IMAGE $CONTAINER_IMAGE_FULL
- docker push $CONTAINER_IMAGE
- docker push $CONTAINER_IMAGE_FULL
# DEPLOY STAGES
# _TEMPLATES
.prepare_for_deploy: &prepare_for_deploy
stage: deploy
image: registry.karlson.dev/individual/pet_gonote/infra:latest
variables:
ANSIBLE_HOST_KEY_CHECKING: "False"
before_script:
- apt update
- apt install openssh-client -y
- mkdir -p -m 700 $HOME/.ssh
- echo "$SSH_IDENTITY" | base64 -d > $HOME/.ssh/id_rsa
- chmod 600 $HOME/.ssh/id_rsa
- cd /root/ansible
- echo "$VAULT_PASS" > ./.vault_pass
when: manual
lint:
image:
name: $CONTAINER_IMAGE_FULL
entrypoint: [ "" ]
variables:
YARN_ENABLE_IMMUTABLE_INSTALLS: "false"
script:
- cd /app
- yarn set version berry
- yarn set version latest
- yarn install
- make lint-check
test:
image:
name: $CONTAINER_IMAGE_FULL
entrypoint: [ "" ]
services:
- name: postgres:15.3
alias: postgres
variables:
POSTGRES_DB: auth_test
POSTGRES_USER: postgres
POSTGRES_PASSWORD: 1234
NODE_ENV: test
DATABASE_HOST: postgres
script:
- cd /app
- make prisma-push-test
- make test
deploy-dev:
<<: *prepare_for_deploy
script:
ansible-playbook -i static_inventory/servers --vault-password-file=.vault_pass app_authservice.yml -e run_hosts=dev -e tag_git=$CI_COMMIT_REF_SLUG-$CI_PIPELINE_ID -t gonote,docker-app