mmornati / docker-ghostblog

Ghost Blog Docker Container
MIT License
10 stars 6 forks source link

Better tag to test builds #39

Closed pascalandy closed 6 years ago

pascalandy commented 6 years ago

Right now, I build the containers on my end to test stuff. Would be nice to tag every builds with the PR's name. I just don't know how to do it with Travis.

Here is own I do it within my functions:

function fct_builder {

fct_Intro

echo -e "$PIK_GREEN i.e golang-fire"
echo -e "$PIK_GREEN Which DIR under (./_dockerfile/DIR) do you want to build? "
read BUILD_DIR
echo -e "$PIK_BLUE Confirmation | You typed: $BUILD_DIR"
fct_count1 && echo

fct_AppDockerBuilder;

fct_End;
}
          #
         # #
        #   #
function fct_AppDockerBuilder {
## DO NOT insert fct_Intro. Mess with the path.

# Loading dynamic ENV_VAR
fct_source-DockerHub

cd "$MNT_DEPLOY_SETUP"/_dockerfile/$BUILD_DIR
source "$MNT_DEPLOY_SETUP"/_dockerfile/$BUILD_DIR/build-config.sh .
echo;

# Get the hash from the last git commit
ENV_GIT_HASH=$(git log -1 | head -1 | awk '{print $2}');

echo -e "$PIK_BLUE Launch fct_AppDockerBuilder"

echo && echo -e "$PIK_BLUE Generate tags: edge "
   ENV_IMG_BUILD_EDGE_DATE="devmtl"/"$ENV_IMG_NAME":"edge_$ENV_DATE_MIN"
        ENV_IMG_BUILD_EDGE="devmtl"/"$ENV_IMG_NAME":"edge"
   ENV_IMG_BUILD_EDGE_HASH="devmtl"/"$ENV_IMG_NAME":"edge_$ENV_GIT_HASH"

echo; echo;
echo -e "$PIK_BLUE Confirmation: NEW BUILD values are:"
echo -e "$PIK_STD $ENV_IMG_BUILD_EDGE_DATE < ENV_IMG_BUILD_EDGE_DATE"
echo -e "$PIK_STD $ENV_IMG_BUILD_EDGE < ENV_IMG_BUILD_EDGE"
echo -e "$PIK_STD $ENV_IMG_BUILD_EDGE_HASH < ENV_IMG_BUILD_EDGE_HASH"
echo
echo -e "$PIK_BLUE Confirmation: Logic behind env-var:"
echo -e "$PIK_STD $ENV_SOFT_VER < ENV_SOFT_VER"
echo -e "$PIK_STD $ENV_IMG_NAME < ENV_IMG_NAME"

echo; echo;
echo -e "$PIK_BLUE Ready to push:"
echo
echo "ENV_IMG_BUILD_EDGE_DATE=$ENV_IMG_BUILD_EDGE_DATE"
echo "ENV_IMG_BUILD_EDGE=$ENV_IMG_BUILD_EDGE"
echo "ENV_IMG_BUILD_EDGE_HASH=$ENV_IMG_BUILD_EDGE_HASH"
echo "# $ENV_IMG_BUILD_EDGE_DATE | tags: edge=yes stable=no | $ENV_DATE_MIN"
echo "# $ENV_IMG_BUILD_EDGE | tags: edge=yes stable=no | $ENV_DATE_MIN"
echo "# $ENV_IMG_BUILD_EDGE_HASH | tags: edge=yes stable=no | $ENV_DATE_MIN"
echo

# docker hub login
cat "$MNT_DEPLOY_SETUP"/config/docker-io/string.txt | docker login --username "$ENV_DKR_HUB_USER" --password-stdin
echo -e "$PIK_BLUE Logged in into dockerhub"; echo

# Core build / # Use to tag 'edge+date'
# no cache
docker build --no-cache -t $ENV_IMG_BUILD_EDGE_DATE .
docker push "$ENV_IMG_BUILD_EDGE_DATE"
echo -e "$PIK_BLUE Pushed into dockerhub - $ENV_IMG_BUILD_EDGE_DATE"; echo;

# build / Use to tag 'edge'
# cache is ok
docker build -t $ENV_IMG_BUILD_EDGE .
docker push "$ENV_IMG_BUILD_EDGE"
echo -e "$PIK_BLUE Pushed into dockerhub - $ENV_IMG_BUILD_EDGE"; echo;

# build / # Use to tag 'edge+hash'
# cache is ok
docker build -t $ENV_IMG_BUILD_EDGE_HASH .
docker push "$ENV_IMG_BUILD_EDGE_HASH"
echo -e "$PIK_BLUE Pushed into dockerhub - $ENV_IMG_BUILD_EDGE_HASH"; echo;

# Show the tags
echo; echo;
echo -e "$PIK_BLUE Freshly pushed:"
echo
echo "ENV_IMG_BUILD_EDGE_DATE=$ENV_IMG_BUILD_EDGE_DATE"
echo "ENV_IMG_BUILD_EDGE=$ENV_IMG_BUILD_EDGE"
echo "ENV_IMG_BUILD_EDGE_HASH=$ENV_IMG_BUILD_EDGE_HASH"
echo "# $ENV_IMG_BUILD_EDGE_DATE | tags: edge=yes stable=no | $ENV_DATE_MIN"
echo "# $ENV_IMG_BUILD_EDGE | tags: edge=yes stable=no | $ENV_DATE_MIN"
echo "# $ENV_IMG_BUILD_EDGE_HASH | tags: edge=yes stable=no | $ENV_DATE_MIN"

# Unit test process = ENV_IMG_BUILD_TEST_UAT
echo; echo;
if [ ! -f "$MNT_DEPLOY_SETUP"/_dockerfile/$BUILD_DIR/unit-test.sh ]; then
    echo -e "$PIK_BLUE There is no unit-test.sh for this build. (Please create one.)"
    else
    echo -e "$PIK_BLUE Start UAT | $ENV_IMG_BUILD_EDGE_DATE";
    export ENV_IMG_BUILD_TEST_UAT=$ENV_IMG_BUILD_EDGE_DATE;
    source "$MNT_DEPLOY_SETUP"/_dockerfile/$BUILD_DIR/unit-test.sh || true;
fi

# Show the tags
echo; echo;
echo -e "$PIK_BLUE Freshly pushed:"
echo
echo "ENV_IMG_BUILD_EDGE_DATE=$ENV_IMG_BUILD_EDGE_DATE"
echo "ENV_IMG_BUILD_EDGE=$ENV_IMG_BUILD_EDGE"
echo "ENV_IMG_BUILD_EDGE_HASH=$ENV_IMG_BUILD_EDGE_HASH"
echo "# $ENV_IMG_BUILD_EDGE_DATE | tags: edge=yes stable=no | $ENV_DATE_MIN"
echo "# $ENV_IMG_BUILD_EDGE | tags: edge=yes stable=no | $ENV_DATE_MIN"
echo "# $ENV_IMG_BUILD_EDGE_HASH | tags: edge=yes stable=no | $ENV_DATE_MIN"
echo

# DO NOT insert fct_End!
}

output looks like

devmtl/ghostfire:edge_2018-01-10_17H29 | tags: edge=yes stable=no | 2018-01-10_17H29
devmtl/ghostfire:edge | tags: edge=yes stable=no | 2018-01-10_17H29
devmtl/ghostfire:edge_ee91a0a8783f946381bb3854ccbec6b0913f01bf | tags: edge=yes stable=no | 2018-01-10_17H29

///

I also have another function for my stable tag.

pascalandy commented 6 years ago

Marco, I'm now using Travis as well. I do few more tests and managed to build 4 tags when building the docker image.

If you are curious: https://github.com/firepress-org/ghostfire/blob/master/.travis.yml#L80

Cheers!