11#! /usr/bin/env bash
22
3- set -e
3+ set -eu
44
5- readonly DOCKER_DIRECTORY =$( realpath $( dirname $( realpath $0 ) ) )
6- readonly VERSION_PATH=$DOCKER_DIRECTORY /../ src/Version.php
5+ readonly ROOT_DIRECTORY =$( realpath $( dirname $( realpath $0 ) ) /.. )
6+ readonly VERSION_PATH=" ${ROOT_DIRECTORY} / src/Version.php"
77readonly IMAGE_NAME=" phpbenchmarks/benchmark-kit"
8-
9- readonly MAJOR_VERSION=$( php -r " require('$VERSION_PATH '); echo App\Version::MAJOR;" )
10- readonly MINOR_VERSION=$( php -r " require('$VERSION_PATH '); echo App\Version::MINOR;" )
11- readonly PATCH_VERSION=$( php -r " require('$VERSION_PATH '); echo App\Version::PATCH;" )
12-
13- readonly IMAGE_PATCH_TAG=$IMAGE_NAME :$MAJOR_VERSION .$MINOR_VERSION .$PATCH_VERSION
14- readonly IMAGE_MINOR_TAG=$IMAGE_NAME :$MAJOR_VERSION .$MINOR_VERSION
15- readonly IMAGE_MAJOR_TAG=$IMAGE_NAME :$MAJOR_VERSION
16-
178readonly LOG_FILE=" /tmp/benchmark-kit_build.log"
9+ readonly DOCKER_COMPOSER_CMD=" docker run -it --user $( id -u) :$( id -g) -v ${ROOT_DIRECTORY} :/app composer:1.10"
10+
11+ echo " Fetch Benchmark kit version."
12+ readonly DOCKER_VERSION_CMD=" docker run --rm -v ${ROOT_DIRECTORY} /src/Version.php:/app/src/Version.php php:7.4-cli-alpine3.10 php -r"
13+ readonly MAJOR_VERSION=$( ${DOCKER_VERSION_CMD} " require('/app/src/Version.php'); echo App\Version::MAJOR;" )
14+ readonly MINOR_VERSION=$( ${DOCKER_VERSION_CMD} " require('/app/src/Version.php'); echo App\Version::MINOR;" )
15+ readonly PATCH_VERSION=$( ${DOCKER_VERSION_CMD} " require('/app/src/Version.php'); echo App\Version::PATCH;" )
16+ readonly IMAGE_PATCH_TAG=" ${IMAGE_NAME} :${MAJOR_VERSION} .${MINOR_VERSION} .${PATCH_VERSION} "
17+ readonly IMAGE_MINOR_TAG=" ${IMAGE_NAME} :${MAJOR_VERSION} .${MINOR_VERSION} "
18+ readonly IMAGE_MAJOR_TAG=" ${IMAGE_NAME} :${MAJOR_VERSION} "
1819
1920function rmLogFile() {
20- if [ -f " $LOG_FILE " ]; then
21- rm $ LOG_FILE;
21+ if [ -f " ${ LOG_FILE} " ]; then
22+ rm " ${ LOG_FILE} " ;
2223 fi
2324}
2425
2526function onError() {
26- if [ -f " $LOG_FILE " ]; then
27- cat $ LOG_FILE
27+ if [ -f " ${ LOG_FILE} " ]; then
28+ cat " ${ LOG_FILE} "
2829 rmLogFile
2930 fi
3031
@@ -34,59 +35,59 @@ function onError() {
3435trap onError ERR
3536rmLogFile
3637
37- echo -n " Image to build: $IMAGE_PATCH_TAG ? [Y/n] "
38+ echo -n " Image to build: ${ IMAGE_PATCH_TAG} ? [Y/n] "
3839read validate
39- if [ " $validate " != " " ] && [ " $validate " != " y" ] && [ " $validate " != " y" ]; then
40+ if [ " ${ validate} " != " " ] && [ " ${ validate} " != " y" ] && [ " ${ validate} " != " y" ]; then
4041 exit 1
4142fi
4243
4344dockerQuiet=" -q"
4445dockerNoCache=" "
4546push=false
4647for param in " $@ " ; do
47- if [ " $param " == " -v" ]; then
48+ if [ " ${ param} " == " -v" ]; then
4849 dockerQuiet=" "
49- elif [ " $param " == " --no-cache" ]; then
50+ elif [ " ${ param} " == " --no-cache" ]; then
5051 dockerNoCache=" --no-cache"
51- elif [ " $param " == " --push" ]; then
52+ elif [ " ${ param} " == " --push" ]; then
5253 push=true
5354 fi
5455done
5556
5657echo " Install Composer prod dependencies."
57- composer install --no-dev > $LOG_FILE 2>&1
58+ ${DOCKER_COMPOSER_CMD} install --no-dev > ${ LOG_FILE} 2>&1
5859rmLogFile
5960
6061echo " Build image."
6162docker \
6263 build \
63- $DOCKER_DIRECTORY /.. \
64+ ${ROOT_DIRECTORY} \
6465 --file=docker/Dockerfile \
65- --tag=$IMAGE_PATCH_TAG \
66- $dockerQuiet \
67- $dockerNoCache
68- docker tag $IMAGE_PATCH_TAG $ IMAGE_MINOR_TAG
69- docker tag $IMAGE_PATCH_TAG $ IMAGE_MAJOR_TAG
66+ --tag=${ IMAGE_PATCH_TAG} \
67+ ${ dockerQuiet} \
68+ ${ dockerNoCache}
69+ docker tag ${ IMAGE_PATCH_TAG} ${ IMAGE_MINOR_TAG}
70+ docker tag ${ IMAGE_PATCH_TAG} ${ IMAGE_MAJOR_TAG}
7071
71- if [ $push == true ]; then
72+ if [ ${ push} == true ]; then
7273 echo " Login to dockerhub."
73- docker logout > $LOG_FILE 2>&1
74+ docker logout > ${ LOG_FILE} 2>&1
7475 rmLogFile
7576 docker login --username=phpbenchmarks
7677
77- echo " Push Docker image $IMAGE_PATCH_TAG ."
78- docker push $IMAGE_PATCH_TAG > $LOG_FILE 2>&1
78+ echo " Push Docker image ${ IMAGE_PATCH_TAG} ."
79+ docker push ${ IMAGE_PATCH_TAG} > ${ LOG_FILE} 2>&1
7980 rmLogFile
8081
81- echo " Push Docker image $IMAGE_MINOR_TAG ."
82- docker push $IMAGE_MINOR_TAG > $LOG_FILE 2>&1
82+ echo " Push Docker image ${ IMAGE_MINOR_TAG} ."
83+ docker push ${ IMAGE_MINOR_TAG} > ${ LOG_FILE} 2>&1
8384 rmLogFile
8485
85- echo " Push Docker image $IMAGE_MAJOR_TAG ."
86- docker push $IMAGE_MAJOR_TAG > $LOG_FILE 2>&1
86+ echo " Push Docker image ${ IMAGE_MAJOR_TAG} ."
87+ docker push ${ IMAGE_MAJOR_TAG} > ${ LOG_FILE} 2>&1
8788 rmLogFile
8889fi
8990
9091echo " Install Composer dev dependencies."
91- composer install > $LOG_FILE 2>&1
92+ ${DOCKER_COMPOSER_CMD} install > ${ LOG_FILE} 2>&1
9293rmLogFile
0 commit comments