forked from cloudfoundry/cf-deployment-concourse-tasks
-
Notifications
You must be signed in to change notification settings - Fork 0
/
shared-functions
115 lines (97 loc) · 2.41 KB
/
shared-functions
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
#!/bin/bash -eux
function check_input_params() {
set +x
if [ -z "$MANIFEST_FILE" ]; then
echo "MANIFEST_FILE has not been set"
exit 1
fi
if [ -z "$VARS_STORE_FILE" ]; then
echo "VARS_STORE_FILE has not been set"
exit 1
fi
if [ -z "$SYSTEM_DOMAIN" ]; then
echo "SYSTEM_DOMAIN has not been set"
exit 1
fi
set -x
}
function commit_vars_store {
pushd vars-store
if [[ -n $(git status --porcelain) ]]; then
git config user.name "CI Bot"
git config user.email "cf-release-integration@pivotal.io"
git add "${VARS_STORE_FILE}"
git commit -m "Update vars-store after deploy"
fi
popd
shopt -s dotglob
cp -R vars-store/* updated-vars-store/
}
function setup_bosh_env_vars() {
set +ux
pushd bbl-state/"${BBL_STATE_DIR}"
BOSH_CA_CERT="$(bbl director-ca-cert)"
export BOSH_CA_CERT
BOSH_ENVIRONMENT=$(bbl director-address)
export BOSH_ENVIRONMENT
BOSH_CLIENT=$(bbl director-username)
export BOSH_CLIENT
BOSH_CLIENT_SECRET=$(bbl director-password)
export BOSH_CLIENT_SECRET
popd
set -ux
}
function bosh_interpolate() {
set +u
local root_dir
root_dir="${1}"
local release_name
release_name="${2}"
set -u
local bosh_manifest
bosh_manifest="cf-deployment/${MANIFEST_FILE}"
local arguments
arguments="--vars-store vars-store/${VARS_STORE_FILE} -v system_domain=${SYSTEM_DOMAIN}"
for op in ${OPS_FILES}
do
arguments="${arguments} -o ops-files/${op}"
done
for vf in ${VARS_FILES}
do
arguments="${arguments} -l vars-files/${vf}"
done
if [ -n "${release_name}" ]; then
cat << EOF > create-provided-release.yml
---
- type: replace
path: /releases/name=${release_name}
value:
name: ${release_name}
version: create
url: file://${root_dir}/release
EOF
arguments="${arguments} -o create-provided-release.yml"
fi
INTERPOLATED_MANIFEST=$(mktemp)
export INTERPOLATED_MANIFEST
# We are intentionally passing a series of arguments here:
# shellcheck disable=SC2086
bosh \
-n \
interpolate ${arguments} \
--var-errs \
"${bosh_manifest}" \
> "${INTERPOLATED_MANIFEST}"
}
function bosh_deploy() {
local deployment_name
deployment_name=$(bosh interpolate "${INTERPOLATED_MANIFEST}" --path /name)
bosh \
-n \
-d "${deployment_name}" \
deploy \
"${INTERPOLATED_MANIFEST}"
}
function remove_vars_store() {
rm -f vars-store/"${VARS_STORE_FILE}"
}