-
Notifications
You must be signed in to change notification settings - Fork 1
/
.gitlab-ci.yml
112 lines (106 loc) · 2.86 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
stages:
- Check-Capacity
- Provisioning
- Release
before_script:
- export CI_COMMIT_SHA_SHORT=$(echo ${CI_COMMIT_SHA} | cut -c -8)
- export BASE_URL=${BASE_URL:-$(echo $CI_PROJECT_URL | cut -d'/' -f1-3)}
- >
if [ "$BASE_URL" == "https://gitlab.cncf.ci" ]; then
export ENVIRONMENT="pd${ENVIRONMENT}"
elif [ "$BASE_URL" == "https://gitlab.staging.cncf.ci" ]; then
export ENVIRONMENT="sg${ENVIRONMENT}"
elif [ "$BASE_URL" == "https://gitlab.dev.cncf.ci" ]; then
export ENVIRONMENT="dv${ENVIRONMENT}"
elif [ "$BASE_URL" == "https://gitlab.cidev.cncf.ci" ]; then
export ENVIRONMENT="ci${ENVIRONMENT}"
else
echo "Environment unknown: $BASE_URL"
exit 1
fi
Check-Capacity:
stage: Check-Capacity
image: debian:stretch
only:
variables:
- $DESTROY == null
script:
# - >
# if [ -z "$DESTROY" ]; then
# apt update && apt -y install jq curl
# else
# echo "Skip for destroy"
# exit 0
# fi
# - >
# if [ $CI_COMMIT_REF_NAME == "production" ]; then
# echo "Checking for reserved servers."
# # export RESERVED=true
# export RESERVED=false
# else
# echo "Checking for on-demand servers."
# export RESERVED=false
# fi
# - source ./capacity.sh
- echo "export TF_VAR_packet_facility=$FACILITY" > facility.env
artifacts:
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
untracked: true
expire_in: 5 weeks
paths:
- facility.env
Provisioning:
stage: Provisioning
image:
name: hashicorp/terraform:0.12.2
entrypoint: [""]
script:
- >
if [ -z "$DESTROY" ]; then
source facility.env
fi
- echo $TF_VAR_packet_facility
- export TF_VAR_name="$NAME-$ENVIRONMENT"
- >
if [ $CI_COMMIT_REF_NAME == "production" ]; then
echo "Write reserved node config"
# mv ./terraform/reserved_override ./terraform/override.tf
else
echo "Skipping reservations"
fi
- cd terraform
- terraform init -backend-config "bucket=${AWS_BUCKET}" -backend-config "key=${TF_VAR_name}" -backend-config "region=${AWS_DEFAULT_REGION}"
- >
if [ -z "$DESTROY" ]; then
terraform apply -auto-approve
else
terraform destroy -force
fi
dependencies:
- Check-Capacity
artifacts:
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
untracked: true
expire_in: 5 weeks
paths:
- .terraform
Release:
stage: Release
only:
variables:
- $DESTROY == null
image:
name: hashicorp/terraform:0.12.2
entrypoint: [""]
script:
- apk update && apk add bash
- cd terraform
- ../create_nodes.sh
dependencies:
- Provisioning
artifacts:
name: "${CI_JOB_NAME}_${CI_COMMIT_REF_NAME}"
untracked: true
expire_in: 5 weeks
paths:
- terraform/nodes.env