-
Notifications
You must be signed in to change notification settings - Fork 47
130 lines (124 loc) · 5.7 KB
/
push.yaml
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
129
130
name: Push
on:
push:
branches: [ prod, dev, staging, v2 ]
jobs:
release:
runs-on: ubuntu-latest
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
FONTAWESOME_NPM_AUTH_TOKEN: ${{ secrets.FONTAWESOME_NPM_AUTH_TOKEN }}
steps:
- uses: pnpm/action-setup@v2
with:
version: 8.6.0
- uses: actions/checkout@v2
- name: Get changed files
id: get_file_changes
uses: trilom/file-changes-action@v1.2.4
with:
output: ' '
- uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-central-1
- name: Release changed client
if: contains(steps.get_file_changes.outputs.files, 'app/client-v2') || contains(github.event.head_commit.message, 'trigger build')
run: make release-client-docker-image -e COMPONENT=goat && make release-client-docker-image -e COMPONENT=storybook && make release-keycloak-theme
- name: Release changed docs
if: contains(steps.get_file_changes.outputs.files, 'docs') || contains(github.event.head_commit.message, 'trigger build')
run: make release-docs-docker-image -e COMPONENT=docs
- name: Release changed api
if: contains(steps.get_file_changes.outputs.files, 'app/api') || contains(github.event.head_commit.message, 'trigger build')
run: make release-docker-image -e COMPONENT=api
- name: Some check on branch
id: branch_check
run: |
echo "Running on branch ${{ github.ref }}"
if [ "${{ github.ref }}" = "refs/heads/prod" ]; then
echo "::set-output name=env_name::main"
elif [ "${{ github.ref }}" = "refs/heads/staging" ]; then
echo "::set-output name=env_name::staging"
elif [ "${{ github.ref }}" = "refs/heads/v2" ]; then
echo "::set-output name=env_name::v2"
else
echo "::set-output name=env_name::dev"
fi
- name: Use variable setup in previous step
run: echo "I'm using variable ${{ steps.branch_check.outputs.env_name }}"
outputs:
env_name: ${{ steps.branch_check.outputs.env_name }}
deploy:
runs-on: ubuntu-latest
environment:
name: ${{ needs.release.outputs.env_name }}
needs: [release]
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }}
POSTGRES_DB: ${{ secrets.POSTGRES_DB }}
POSTGRES_USER: ${{ secrets.POSTGRES_USER }}
POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }}
POSTGRES_HOST: ${{ secrets.POSTGRES_HOST }}
R5_HOST: ${{ secrets.R5_HOST }}
R5_AUTHORIZATION: ${{ secrets.R5_AUTHORIZATION }}
API_SECRET_KEY: ${{ secrets.API_SECRET_KEY }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
EMAILS_FROM_EMAIL: ${{ secrets.EMAILS_FROM_EMAIL }}
FIRST_ORGANIZATION: ${{ secrets.FIRST_ORGANIZATION }}
FIRST_SUPERUSER_EMAIL: ${{ secrets.FIRST_SUPERUSER_EMAIL }}
FIRST_SUPERUSER_PASSWORD: ${{ secrets.FIRST_SUPERUSER_PASSWORD }}
FIRST_SUPERUSER_NAME: ${{ secrets.FIRST_SUPERUSER_NAME }}
FIRST_SUPERUSER_SURNAME: ${{ secrets.FIRST_SUPERUSER_SURNAME }}
SMTP_PASSWORD: ${{ secrets.SMTP_PASSWORD }}
BACKEND_CORS_ORIGIN: ${{ secrets.BACKEND_CORS_ORIGIN }}
RABBITMQ_DEFAULT_USER: ${{ secrets.RABBITMQ_DEFAULT_USER }}
RABBITMQ_DEFAULT_PASS: ${{ secrets.RABBITMQ_DEFAULT_PASS }}
CELERY_RESULT_EXPIRES: ${{ vars.CELERY_RESULT_EXPIRES }}
CELERY_TASK_TIME_LIMIT: ${{ vars.CELERY_TASK_TIME_LIMIT }}
API_REPLICAS: ${{ vars.API_REPLICAS }}
WORKER_REPLICAS: ${{ vars.WORKER_REPLICAS }}
WORKER_MEMORY_LIMIT: ${{ vars.WORKER_MEMORY_LIMIT }}
steps:
- uses: pnpm/action-setup@v2
with:
version: 8.6.1
- uses: actions/checkout@v2
- uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: eu-central-1
- uses: azure/setup-kubectl@v2.0
with:
version: 'v1.23.6' # default is latest stable
id: install
- name: Get changed files
id: get_file_changes
uses: trilom/file-changes-action@v1.2.4
with:
output: ' '
- name: Deploy postgres-service
run: make deploy -e COMPONENT=postgres
- name: Deploy rabbitmq
run: make deploy -e COMPONENT=rabbitmq
- name: Deploy redis
run: make deploy -e COMPONENT=redis
- name: Deploy celery-flower
run: make deploy -e COMPONENT=celery-flower
- name: Deploy changed client
if: contains(steps.get_file_changes.outputs.files, 'app/client-v2') || contains(github.event.head_commit.message, 'trigger build')
run: make deploy -e COMPONENT=goat && make deploy -e COMPONENT=storybook
- name: Deploy changed docs
if: contains(steps.get_file_changes.outputs.files, 'docs') || contains(github.event.head_commit.message, 'trigger build')
run: make deploy -e COMPONENT=docs
- name: Deploy changed api
if: contains(steps.get_file_changes.outputs.files, 'app/api') || contains(github.event.head_commit.message, 'trigger build')
run: make deploy -e COMPONENT=api
- name: Deploy changed ingress
run : make deploy -e COMPONENT=ingress