-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathentrypoint.sh
executable file
·52 lines (47 loc) · 1.3 KB
/
entrypoint.sh
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
#!/bin/sh -e
die() {
echo "$@" >&2
exit 1
}
echo '##### Configuration'
ssh='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
if [ -e "/auth/key" ]; then
ssh="${ssh} -i /auth/key"
fi
export GIT_SSH_COMMAND="${ssh}"
export GIT_ASKPASS="/askpass.sh"
echo '##### Retrieve current revision'
if [ -d /work/repo ]; then
GIT_BRANCH=$(git -C /work/repo branch --show-current)
if [ -n "${CONFIG_GIT_BRANCH}" ] && \
[ "${GIT_BRANCH}" != "${CONFIG_GIT_BRANCH}" ]; then
die "Branch mismatch: ${GIT_BRANCH} != ${CONFIG_GIT_BRANCH}"
fi
git -C /work/repo fetch origin "${GIT_BRANCH}"
git -C /work/repo reset --hard FETCH_HEAD
else
git clone --depth 1 \
${CONFIG_GIT_BRANCH:+-b "${CONFIG_GIT_BRANCH}"} \
"${CONFIG_GIT_REPOSITORY}" /work/repo
fi
echo '##### Check for changes'
NEW_GIT_REV=$(git -C /work/repo rev-parse HEAD)
echo "Current state: ${STATE_GIT_REV:-'<none>'}"
echo "New state: ${NEW_GIT_REV}"
if [ -n "${STATE_GIT_REV}" ] && [ "${NEW_GIT_REV}" = "${STATE_GIT_REV}" ]; then
echo "-> No changes"
exit 0
fi
echo '##### Apply changes (helm sync)'
cd "/work/repo/${CONFIG_GIT_DIRECTORY}"
helmfile sync
echo '##### Update state'
exec kubectl apply -f - <<EOF
apiVersion: v1
kind: ConfigMap
metadata:
name: ${STATE_NAME}
namespace: ${NAMESPACE}
data:
GIT_REV: "${NEW_GIT_REV}"
EOF