-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathrelease_semantic_versions.sh
More file actions
executable file
·48 lines (39 loc) · 1.63 KB
/
release_semantic_versions.sh
File metadata and controls
executable file
·48 lines (39 loc) · 1.63 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
#!/usr/bin/env bash
IMAGE=${IMAGE:-quay.io/hypernode/deploy}
INPUT_VERSION=${GITHUB_REF_NAME}
TAG_SPECS="php${PHP_VERSION}-node${NODE_VERSION}"
if [ -z "${INPUT_VERSION}" ]; then
echo "No input version provided, stopping".
exit 1
fi
if echo "${INPUT_VERSION}" | grep -E -q "(dev|rc|alpha|beta)"; then
echo "Not publishing short semantic versions for dev, rc, alpha or beta tag"
exit 0
fi
function tag_and_publish () {
SOURCE_TAG=$1
TARGET_TAG=$2
docker tag "${SOURCE_TAG}" "${TARGET_TAG}"
docker push "${TARGET_TAG}"
}
LOCAL_IMAGE_TAG="$IMAGE:$INPUT_VERSION-$TAG_SPECS"
if echo "${INPUT_VERSION}" | grep -F "."; then
MAJOR_VERSION=$(echo "${INPUT_VERSION}" | cut -d. -f1)
MINOR_VERSION=$(echo "${INPUT_VERSION}" | cut -d. -f2)
PATCH_VERSION=$(echo "${INPUT_VERSION}" | cut -d. -f3)
if [ -n "${MINOR_VERSION}" ] && [ -n "${PATCH_VERSION}" ]; then
if echo "${PATCH_VERSION}" | grep -q "-"; then
#PATCH_SUFFIX=$(echo "${PATCH_VERSION}" | cut -d- -f2-)
PATCH_VERSION=$(echo "${PATCH_VERSION}" | cut -d- -f1)
fi
tag_and_publish "$LOCAL_IMAGE_TAG" "$IMAGE:$MAJOR_VERSION.$MINOR_VERSION.$PATCH_VERSION-$TAG_SPECS"
fi
if [ -n "$MINOR_VERSION" ]; then
tag_and_publish "$LOCAL_IMAGE_TAG" "$IMAGE:$MAJOR_VERSION.$MINOR_VERSION-$TAG_SPECS"
fi
tag_and_publish "$LOCAL_IMAGE_TAG" "$IMAGE:$MAJOR_VERSION-$TAG_SPECS"
tag_and_publish "$LOCAL_IMAGE_TAG" "$IMAGE:latest-$TAG_SPECS"
fi
if [[ "${PHP_VERSION}" == "${LATEST_PHP_VERSION}" ]] && [[ "${NODE_VERSION}" == "${LATEST_NODE_VERSION}" ]]; then
tag_and_publish "$LOCAL_IMAGE_TAG" "$IMAGE:latest"
fi