-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.gitlab-ci.yml
More file actions
73 lines (69 loc) · 2.94 KB
/
Copy path.gitlab-ci.yml
File metadata and controls
73 lines (69 loc) · 2.94 KB
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
stages:
- build
- deploy-bucket
- deploy-cloudfare
variables:
CLOUDFARE_HEADERMAIL: 'X-Auth-Email: '
CLOUDFARE_HEADERKEY: 'X-Auth-Key: '
CLOUDFARE_APPLICATION: 'Content-Type: application/json'
build:
image: node:22-alpine
stage: build
script:
- export PATH=$PATH:/usr/bin/npm
- echo $ENV_CONFIG | base64 -d > .env
- cat .env
- npm install
- CI=false npm run build
artifacts:
paths:
- dist/
expire_in: 1 hour
environment: $CI_COMMIT_REF_NAME
tags:
- microservice
deploy-bucket:
stage: deploy-bucket
image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest
script:
- echo "${SUBDOMAIN_PROJECT}.${DOMAIN_PROJECT}"
- NAME_DNS=$(echo "${SUBDOMAIN_PROJECT}.${DOMAIN_PROJECT}")
- echo "$NAME_DNS"
- >
if [[ ! -z $(aws s3api list-buckets --query 'Buckets[?Name==`'${NAME_DNS}'`]' --output text) ]]; then
aws s3 sync dist/ s3://${NAME_DNS} --region eu-west-1;
else
aws s3 mb s3://${NAME_DNS} --region eu-west-1;
aws s3 cp dist/ s3://${NAME_DNS} --recursive --region eu-west-1;
aws s3 website s3://${NAME_DNS} --index-document index.html --error-document index.html --region eu-west-1;
aws s3api put-public-access-block --bucket ${NAME_DNS} --public-access-block-configuration BlockPublicAcls=false,IgnorePublicAcls=false,BlockPublicPolicy=false,RestrictPublicBuckets=false
sed -i "s|NOMBRE-BUCKET|${NAME_DNS}|g;" policy-s3.json;
aws s3api put-bucket-policy --bucket ${NAME_DNS} --policy file://policy-s3.json --region eu-west-1;
fi;
environment: $CI_COMMIT_REF_NAME
tags:
- microservice
deploy-cloudfare:
stage: deploy-cloudfare
variables:
URL_S3: "${SUBDOMAIN_PROJECT}.${DOMAIN_PROJECT}.s3-website-eu-west-1.amazonaws.com"
NAME_DNS: "$SUBDOMAIN_PROJECT.$DOMAIN_PROJECT"
before_script:
- apk add --update curl && rm -rf /var/cache/apk/*
- apk add --no-cache curl jq
script:
- echo "${CLOUDFARE_HEADERKEY} ${CLOUDFARE_APIKEY}"
- echo "${CLOUDFARE_HEADERMAIL} ${CLOUDFARE_EMAIL}"
- echo "${URL_S3}"
- curl -X GET ${CLOUDFARE_BASEAPI}/${CLOUDFARE_ZONE}/dns_records --header "${CLOUDFARE_HEADERMAIL} ${CLOUDFARE_EMAIL}" --header "${CLOUDFARE_HEADERKEY} ${CLOUDFARE_APIKEY}" --header "${CLOUDFARE_APPLICATION}" >> response_dns_list.json
- DNS_VALUE=$(cat response_dns_list.json | jq -r '.result[] | select( .name=="'${NAME_DNS}'") | .name')
- echo "$DNS_VALUE"
- >
if [ "${DNS_VALUE}" == "" ]; then
curl -X POST ${CLOUDFARE_BASEAPI}/${CLOUDFARE_ZONE}/dns_records --header "${CLOUDFARE_HEADERMAIL} ${CLOUDFARE_EMAIL}" --header "${CLOUDFARE_HEADERKEY} ${CLOUDFARE_APIKEY}" --header "${CLOUDFARE_APPLICATION}" --data-raw '{"type":"CNAME","name":"'${NAME_DNS}'","content":"'${URL_S3}'","ttl":3600,"proxied":true}';
else
echo "DNS already exists";
fi;
environment: $CI_COMMIT_REF_NAME
tags:
- microservice