forked from AfikDeri/Vue-Laravel-SPA
-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathcloudbuild.yaml
74 lines (65 loc) · 3.15 KB
/
cloudbuild.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
steps:
# slack deployment status
- name: 'gcr.io/cloud-builders/curl'
args: [ '-X', 'POST', '-H', 'Content-type: application/json', '--data',
'{"text":"`$_APP_CONTAINER:$BRANCH_NAME$TAG_NAME` build started!"}', '${_WEBHOOK_URL}' ]
# build docker image
- name: 'gcr.io/cloud-builders/docker'
args: [ 'build',
'--build-arg', 'TOKEN=${_OAUTH_TOKEN}',
'--build-arg', 'MIX_PUSHER_APP_KEY=${_MIX_PUSHER_APP_KEY}',
'--build-arg', 'MIX_PUSHER_APP_CLUSTER=${_MIX_PUSHER_APP_CLUSTER}',
'-t', '$_APP_CONTAINER:$BRANCH_NAME$TAG_NAME', '.' ]
# push docker image to the repository
- name: 'gcr.io/cloud-builders/docker'
args: [ 'push', '$_APP_CONTAINER:$BRANCH_NAME$TAG_NAME' ]
# patch kubernetes deployment to trigger rolling update
- name: 'gcr.io/cloud-builders/kubectl'
args: [ 'patch', 'deployment', '${_DEPLOYMENT}', '-n', '${_NAMESPACE}', '-p',
'{"spec": {"template": {"metadata": {"annotations": {"build":"$BUILD_ID"}}, "spec": {"initContainers": [{"name": "app","image": "$_APP_CONTAINER:$BRANCH_NAME$TAG_NAME"}]}}}}' ]
env:
# required K8s cluster env variables
- 'CLOUDSDK_COMPUTE_ZONE=${_K8S_ZONE}'
- 'CLOUDSDK_CONTAINER_CLUSTER=${_K8S_CLUSTER}'
# check rolling deployment status
- name: 'gcr.io/cloud-builders/kubectl'
args: [ '-n', '${_NAMESPACE}', 'rollout', 'status', 'deploy/${_DEPLOYMENT}' ]
env:
# required K8s cluster env variables
- 'CLOUDSDK_COMPUTE_ZONE=${_K8S_ZONE}'
- 'CLOUDSDK_CONTAINER_CLUSTER=${_K8S_CLUSTER}'
# # patch kubernetes deployment to trigger rolling update
# - name: 'gcr.io/cloud-builders/kubectl'
# args: [ 'patch', 'deployment', '${_DEPLOYMENT}.worker', '-n', '${_NAMESPACE}', '-p',
# '{"spec": {"template": {"metadata": {"annotations": {"build":"$BUILD_ID"}}, "spec": {"initContainers": [{"name": "app","image": "$_APP_CONTAINER:$BRANCH_NAME$TAG_NAME"}]}}}}' ]
# env:
# # required K8s cluster env variables
# - 'CLOUDSDK_COMPUTE_ZONE=${_K8S_ZONE}'
# - 'CLOUDSDK_CONTAINER_CLUSTER=${_K8S_CLUSTER}'
#
# # check rolling deployment status
# - name: 'gcr.io/cloud-builders/kubectl'
# args: [ '-n', '${_NAMESPACE}', 'rollout', 'status', 'deploy/${_DEPLOYMENT}.worker' ]
# env:
# # required K8s cluster env variables
# - 'CLOUDSDK_COMPUTE_ZONE=${_K8S_ZONE}'
# - 'CLOUDSDK_CONTAINER_CLUSTER=${_K8S_CLUSTER}'
# slack deployment status
- name: 'gcr.io/cloud-builders/curl'
args: [ '-X', 'POST', '-H', 'Content-type: application/json', '--data',
'{"text":"${_DEPLOYMENT} deployment completed!"}', '${_WEBHOOK_URL}' ]
# extend timeout to 20 min
timeout: 1200s
# store artifact
images: ['$_APP_CONTAINER:$BRANCH_NAME$TAG_NAME']
# arguments
substitutions:
_K8S_ZONE: us-central1-a # K8s zone
_K8S_CLUSTER: cluster_name # K8s cluster name
_NAMESPACE: default # K8s namespace
_DEPLOYMENT: deployment_name # K8s deployment name
_WEBHOOK_URL: slack_notification_webhook # slack notifications
_OAUTH_TOKEN: composer_github_oauth_token # access to private code repos
_APP_CONTAINER: index.docker.io/crunchgeek/laravel-spa # docker container registry path
_MIX_PUSHER_APP_KEY: none
_MIX_PUSHER_APP_CLUSTER: none