-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.gitlab-ci.yml
96 lines (88 loc) · 3.17 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
---
image: docker:18.01.0-ce-git
services:
- docker:18.01.0-ce-dind
stages:
- build_assets
- create_pack
- deploy
variables:
KUBECONFIG: /etc/k8s-config
THEME_NAME: midia-ninja-theme
NAMESPACE_DEV: base-theme-site-dev
NAMESPACE_PROD: base-theme-site-prod
AUTH: JOB-TOKEN:$CI_JOB_TOKEN
cache:
key: base-theme-key
paths:
- themes/${THEME_NAME}/dist
########################DEVELOP E PROD################
build_assets:
stage: build_assets
only:
- /main/
- tags
tags:
- docker
image: node:12
script:
- rm -rf themes/${THEME_NAME}/dist
- npm --prefix themes/${THEME_NAME}/ install
- npm --prefix themes/${THEME_NAME}/ run production
- rm -rf themes/${THEME_NAME}/node_modules
########################DEVELOP#######################
create_pack_develop:
stage: create_pack
only:
- /main/
tags:
- docker
image: hacklab/alpine-3.14.2-zip:1.1.0
script:
- cd themes/
- mkdir -p /deploy-zips/
- zip -r /deploy-zips/${THEME_NAME}.zip ${THEME_NAME}
#create theme pack
- curl --header "$AUTH" --upload-file /deploy-zips/${THEME_NAME}.zip "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${THEME_NAME}/${CI_COMMIT_SHORT_SHA}/${THEME_NAME}.zip"
deploy_to_develop:
stage: deploy
image: hacklab/kubectl:latest
script:
- echo ${kubeconfig} | base64 -d > ${KUBECONFIG}
- POD=$(kubectl get pods -n ${NAMESPACE_DEV} | grep wordpress | cut -d ' ' -f 1)
- echo $POD
#deploy zips to production
- kubectl exec -n ${NAMESPACE_DEV} -it $POD -- sh -c "cd /tmp/ && curl --create-dirs --location --output /tmp/deploy-zips/${THEME_NAME}.zip --header $AUTH ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${THEME_NAME}/${CI_COMMIT_SHORT_SHA}/${THEME_NAME}.zip && cd /var/www/html/ && wp theme install --force /tmp/deploy-zips/${THEME_NAME}.zip && chown -R www-data /var/www/html/wp-content/themes/ && chgrp -R www-data /var/www/html/wp-content/themes/"
environment: develop
only:
- /main/
tags:
- docker
########################PROD#######################
create_pack_production:
stage: create_pack
only:
- tags
tags:
- docker
image: hacklab/alpine-3.14.2-zip:1.1.0
script:
- cd themes/
- mkdir -p /deploy-zips/
- zip -r /deploy-zips/${THEME_NAME}.zip ${THEME_NAME}
#create theme pack
- curl --header "$AUTH" --upload-file /deploy-zips/${THEME_NAME}.zip "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${THEME_NAME}/${CI_BUILD_REF_NAME}/${THEME_NAME}.zip"
deploy_to_production:
stage: deploy
image: hacklab/kubectl:latest
script:
- echo ${kubeconfig} | base64 -d > ${KUBECONFIG}
- POD=$(kubectl get pods -n ${NAMESPACE_PROD} | grep wordpress | cut -d ' ' -f 1)
- echo $POD
#deploy zips to production
- kubectl exec -n ${NAMESPACE_PROD} -it $POD -- sh -c "cd /tmp/ && curl --create-dirs --location --output /tmp/deploy-zips/${THEME_NAME}.zip --header $AUTH ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${THEME_NAME}/${CI_BUILD_REF_NAME}/${THEME_NAME}.zip && cd /var/www/html/ && wp theme install --force /tmp/deploy-zips/${THEME_NAME}.zip"
environment: develop
only:
- tags
tags:
- docker