Skip to content

Commit 20823ea

Browse files
committed
Improve & cleanup build hooks
1 parent e87ce2e commit 20823ea

File tree

3 files changed

+52
-66
lines changed

3 files changed

+52
-66
lines changed

hooks/build

Lines changed: 10 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,16 @@
11
#!/bin/bash
22

33

4-
# grab latest tags
5-
PHP_TAGS=$(curl 'https://registry.hub.docker.com/v2/repositories/library/php/tags?page_size=1024' | grep -Po "[0-9]+\.[0-9]+\.[0-9]+-apache" | sed 's/-apache//' | sort | uniq)
6-
IS_MASTER_BUILD=$([ "$SOURCE_BRANCH" == "master" ] && echo 1 || echo 0)
4+
SCRIPT_DIR="$(dirname "$0")"
5+
source "${SCRIPT_DIR}/common"
76

8-
echo "##### Build default image - ${IMAGE_NAME} #####"
9-
docker build --build-arg PHP_VERSION_TAG=${PHP_VERSION_TAG} -f $DOCKERFILE_PATH -t ${IMAGE_NAME} .
10-
11-
if [ $IS_MASTER_BUILD -eq 1 ]; then
12-
13-
for PHP_MINOR in $(echo "$PHP_TAGS" | grep -Po "^[0-9]+\.[0-9]+" | sort | uniq); do
14-
echo "##### Build ${PHP_MINOR} #####"
15-
docker build --build-arg PHP_VERSION_TAG=${PHP_MINOR}-apache -f ${DOCKERFILE_PATH} -t ${DOCKER_REPO}:${PHP_MINOR} .
16-
done
17-
18-
for PHP_VERSION in $(echo "$PHP_TAGS"); do
19-
echo "##### Build $PHP_VERSION (x.y.z) #####"
20-
docker build --build-arg PHP_VERSION_TAG=${PHP_VERSION}-apache -f ${DOCKERFILE_PATH} -t ${DOCKER_REPO}:${PHP_VERSION} .
21-
done
227

23-
else
24-
25-
CURRENT_RELEASE=$(echo $SOURCE_BRANCH | cut -c2-)
26-
27-
for PHP_MINOR in $(echo "$PHP_TAGS" | grep -Po "^[0-9]+\.[0-9]+" | sort | uniq); do
28-
SHORT_DOCKER_TAG=$(echo $CURRENT_RELEASE | cut -d'.' -f-2)
29-
CUSTOM_IMAGE_NAME="${DOCKER_REPO}:php${PHP_MINOR}-v${SHORT_DOCKER_TAG}"
30-
echo "##### Build $CUSTOM_IMAGE_NAME #####"
31-
docker build --build-arg PHP_VERSION_TAG=${PHP_MINOR}-apache -f ${DOCKERFILE_PATH} -t ${CUSTOM_IMAGE_NAME} .
32-
done
33-
34-
for PHP_VERSION in $(echo "$PHP_TAGS"); do
35-
CUSTOM_IMAGE_NAME="${DOCKER_REPO}:php${PHP_VERSION}-v${CURRENT_RELEASE}"
36-
echo "##### Build $CUSTOM_IMAGE_NAME #####"
37-
docker build --build-arg PHP_VERSION_TAG=${PHP_VERSION}-apache -f ${DOCKERFILE_PATH} -t ${CUSTOM_IMAGE_NAME} .
38-
done
8+
echo "##### Build default tag ${DOCKER_TAG} from ${PHP_VERSION_TAG} #####"
9+
docker build --build-arg PHP_VERSION_TAG=${PHP_VERSION_TAG} -f $DOCKERFILE_PATH -t ${IMAGE_NAME} .
3910

40-
fi
11+
for BUILD_PARAMS in $(getBuildParams $IS_MASTER_BUILD); do
12+
FROM=$(echo $BUILD_PARAMS | cut -d'|' -f1)
13+
TAG=$(echo $BUILD_PARAMS | cut -d'|' -f2)
14+
echo "##### Build tag ${TAG} from ${FROM} #####"
15+
docker build --build-arg PHP_VERSION_TAG=${FROM} -f ${DOCKERFILE_PATH} -t ${DOCKER_REPO}:${TAG} .
16+
done

hooks/common

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#!/bin/bash
2+
3+
4+
IS_MASTER_BUILD=$([ "$SOURCE_BRANCH" == "master" ] && echo 1 || echo 0)
5+
IS_RELEASE_BUILD=$((echo "$SOURCE_BRANCH" | grep -Pq "v[0-9]+\.[0-9]+\.[0-9]+") && echo 1 || echo 0)
6+
7+
# return list of "<phpFromSource>|<targetTag>" depending if we are building against master or a specific release
8+
getBuildParams() {
9+
local RELEASE=$(echo $SOURCE_BRANCH | cut -c2-)
10+
local MAJOR_RELEASE=$(echo $RELEASE | cut -d'.' -f1)
11+
local MINOR_RELEASE=$(echo $RELEASE | cut -d'.' -f-2)
12+
local PHP_MINOR=""
13+
local PHP_TAGS=$(curl 'https://registry.hub.docker.com/v2/repositories/library/php/tags?page_size=1024' | grep -Po "[0-9]+\.[0-9]+\.[0-9]+-apache" | sed 's/-apache//' | sort | uniq)
14+
local PHP_VERSION=""
15+
16+
for PHP_MINOR in $(echo "$PHP_TAGS" | grep -Po "^[0-9]+\.[0-9]+" | sort | uniq); do
17+
if [ $IS_MASTER_BUILD -eq 1 ]; then
18+
echo "${PHP_MINOR}-apache|php${PHP_MINOR}"
19+
elif [ $IS_RELEASE_BUILD -eq 1 ]; then
20+
echo "${PHP_MINOR}-apache|php${PHP_MINOR}-v${MAJOR_RELEASE}"
21+
echo "${PHP_MINOR}-apache|php${PHP_MINOR}-v${MINOR_RELEASE}"
22+
echo "${PHP_MINOR}-apache|php${PHP_MINOR}-v${RELEASE}"
23+
fi
24+
done
25+
26+
for PHP_VERSION in $(echo "$PHP_TAGS"); do
27+
if [ $IS_MASTER_BUILD -eq 1 ]; then
28+
echo "${PHP_VERSION}-apache|php${PHP_VERSION}"
29+
elif [ $IS_RELEASE_BUILD -eq 1 ]; then
30+
echo "${PHP_VERSION}-apache|php${PHP_VERSION}-v${MAJOR_RELEASE}"
31+
echo "${PHP_VERSION}-apache|php${PHP_VERSION}-v${MINOR_RELEASE}"
32+
echo "${PHP_VERSION}-apache|php${PHP_VERSION}-v${RELEASE}"
33+
fi
34+
done
35+
}

hooks/post_push

Lines changed: 7 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,12 @@
11
#!/bin/bash
22

33

4-
# grab latest tags
5-
PHP_TAGS=$(curl 'https://registry.hub.docker.com/v2/repositories/library/php/tags?page_size=1024' | grep -Po "[0-9]+\.[0-9]+\.[0-9]+-apache" | sed 's/-apache//' | sort | uniq)
6-
IS_MASTER_BUILD=$([ "$SOURCE_BRANCH" == "master" ] && echo 1 || echo 0)
4+
SCRIPT_DIR="$(dirname "$0")"
5+
source "${SCRIPT_DIR}/common"
76

8-
if [ $IS_MASTER_BUILD -eq 1 ]; then
97

10-
for PHP_MINOR in $(echo "$PHP_TAGS" | grep -Po "^[0-9]+\.[0-9]+" | sort | uniq); do
11-
echo "##### Push ${PHP_MINOR} #####"
12-
docker push ${DOCKER_REPO}:${PHP_MINOR}
13-
done
14-
15-
for PHP_VERSION in $(echo "$PHP_TAGS"); do
16-
echo "##### Push $PHP_VERSION (x.y.z) #####"
17-
docker push ${DOCKER_REPO}:${PHP_VERSION}
18-
done
19-
20-
else
21-
22-
CURRENT_RELEASE=$(echo $SOURCE_BRANCH | cut -c2-)
23-
24-
for PHP_MINOR in $(echo "$PHP_TAGS" | grep -Po "^[0-9]+\.[0-9]+" | sort | uniq); do
25-
SHORT_DOCKER_TAG=$(echo $CURRENT_RELEASE | cut -d'.' -f-2)
26-
CUSTOM_IMAGE_NAME="${DOCKER_REPO}:php${PHP_MINOR}-v${SHORT_DOCKER_TAG}"
27-
echo "##### Push $CUSTOM_IMAGE_NAME #####"
28-
docker push -t ${CUSTOM_IMAGE_NAME}
29-
done
30-
31-
for PHP_VERSION in $(echo "$PHP_TAGS"); do
32-
CUSTOM_IMAGE_NAME="${DOCKER_REPO}:php${PHP_VERSION}-v${CURRENT_RELEASE}"
33-
echo "##### Push $CUSTOM_IMAGE_NAME #####"
34-
docker push -t ${CUSTOM_IMAGE_NAME}
35-
done
36-
37-
fi
8+
for BUILD_PARAMS in $(getBuildParams); do
9+
TAG=$(echo $BUILD_PARAMS | cut -d'|' -f2)
10+
echo "##### Push tag ${TAG} #####"
11+
echo docker push ${DOCKER_REPO}:${TAG}
12+
done

0 commit comments

Comments
 (0)