-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy path.gitlab-ci.yml
113 lines (107 loc) · 3.19 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
stages:
- build
- precompile
- deploy
variables: # https://docs.gitlab.com/ee/ci/variables/
DOCKER_TLS_CERTDIR: ""
CI_PROJECT_ENV: ${CI_PROJECT_NAME}_${CI_COMMIT_BRANCH}
CI_VERSION_ENV: "latest"
RUNNER_SCRIPT_TIMEOUT: 50m
before_script:
#- echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
#- docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY
#- cp $ENV_FILE .env
base:
stage: build
image: docker
before_script:
- echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
services:
- docker:dind
environment:
name: $CI_COMMIT_BRANCH
tags:
- docker
only:
- master
- develop
script:
## - DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker compose --project-directory . -f docker/docker-compose.yml --env-file .env build
- docker build -f docker/Dockerfile
--build-arg CI_PROJECT_ENV=$CI_PROJECT_ENV
--build-arg CI_VERSION_ENV=$CI_VERSION_ENV
--build-arg CI_COMMIT_SHORT_SHA=$CI_COMMIT_SHORT_SHA
--build-arg RAILS_ENV=$RAILS_ENV
--build-arg SECRET_KEY_BASE=$SECRET_KEY_BASE
--tag $CI_PROJECT_ENV:$CI_VERSION_ENV .
- docker tag $CI_PROJECT_ENV:$CI_VERSION_ENV $CI_REGISTRY_IMAGE/$CI_PROJECT_ENV:$CI_VERSION_ENV
- docker push $CI_REGISTRY_IMAGE/$CI_PROJECT_ENV:$CI_VERSION_ENV
when: manual
precompile:
stage: precompile
image: $CI_REGISTRY_IMAGE/$CI_PROJECT_ENV:$CI_VERSION_ENV
environment:
name: $CI_COMMIT_BRANCH
services:
- docker:dind
tags:
- docker
only:
- master
- develop
script:
- mkdir log
## Assets precompile
- bundle exec rake assets:precompile --trace
- bundle exec rake assets:clean
## Cleanup
- cp public/assets/.sprockets-manifest-*.json .
- bundle exec rake assets:clobber
- mkdir public/assets
- cp .sprockets-manifest-*.json public/assets/
artifacts:
paths:
- public/assets/
when: manual
attach-assets:
stage: precompile
image: docker
before_script:
- echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
services:
- docker:dind
environment:
name: $CI_COMMIT_BRANCH
tags:
- docker
only:
- master
- develop
script:
- docker build -f docker/Dockerfile-gitlab
--build-arg CI_REGISTRY_IMAGE=$CI_REGISTRY_IMAGE
--build-arg CI_PROJECT_ENV=$CI_PROJECT_ENV
--build-arg CI_VERSION_ENV=$CI_VERSION_ENV
--build-arg CI_COMMIT_SHORT_SHA=$CI_COMMIT_SHORT_SHA
--tag $CI_PROJECT_ENV:$CI_VERSION_ENV .
- docker tag $CI_PROJECT_ENV:$CI_VERSION_ENV $CI_REGISTRY_IMAGE/$CI_PROJECT_ENV:$CI_VERSION_ENV
- docker push $CI_REGISTRY_IMAGE/$CI_PROJECT_ENV:$CI_VERSION_ENV
needs:
- job: precompile
artifacts: true
deploy:
timeout: 50m
stage: deploy
environment:
name: $CI_COMMIT_BRANCH
before_script:
- cp $ENV_FILE docker/.env
tags:
- runner-java
only:
- master
- develop
script:
- echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
- docker -H ssh://200.137.218.139 compose -f docker/docker-compose.yml up -d --pull always --force-recreate
when: manual