From ca34d502c8c586cb28f3f163b52a034e86a34224 Mon Sep 17 00:00:00 2001 From: evazion Date: Sun, 2 May 2021 16:59:49 -0500 Subject: [PATCH] docker: include git hash in Docker image. Put the Git hash of the current commit inside the Docker image built by Docker Hub. The hash is stored in the REVISION file in the root directory. --- config/docker/Dockerfile.danbooru | 3 +++ hooks/README.md | 27 +++++++++++++++++++++++++++ hooks/build | 13 +++++++++++++ 3 files changed, 43 insertions(+) create mode 100644 hooks/README.md create mode 100755 hooks/build diff --git a/config/docker/Dockerfile.danbooru b/config/docker/Dockerfile.danbooru index ecb71bfeb..6ed90d067 100644 --- a/config/docker/Dockerfile.danbooru +++ b/config/docker/Dockerfile.danbooru @@ -47,6 +47,9 @@ RUN yarn install COPY . . +ARG SOURCE_COMMIT +RUN echo "$SOURCE_COMMIT" > REVISION + FROM development AS assets diff --git a/hooks/README.md b/hooks/README.md new file mode 100644 index 000000000..e95c20bd6 --- /dev/null +++ b/hooks/README.md @@ -0,0 +1,27 @@ +The directory contains hooks used by Docker Hub when building images: + + Docker Hub allows you to override and customize the `build`, `test` and `push` + commands during automated build and test processes using hooks. For + example, you might use a build hook to set build arguments used only during + the build process. (You can also set up custom build phase hooks to perform + actions in between these commands.) + + Use these hooks with caution. The contents of these hook files replace the + basic `docker` commands, so you must include a similar build, test or push + command in the hook or your automated process does not complete. + + To override these phases, create a folder called `hooks` in your source code + repository at the same directory level as your Dockerfile. Create a file + called `hooks/build`, `hooks/test`, or `hooks/push` and include commands that the + builder process can execute, such as `docker` and `bash` commands (prefixed + appropriately with `#!/bin/bash`). + + These hooks will be running on an instance of Amazon Linux 2, a distro + based on Ubuntu, which includes interpreters such as Perl and Python and + utilities such as git or curl. Please check the link above for the full + list. + +# See also + +* https://docs.docker.com/docker-hub/builds/advanced +* https://stackoverflow.com/questions/59057978/passing-source-commit-to-dockerfile-commands-on-docker-hub diff --git a/hooks/build b/hooks/build new file mode 100755 index 000000000..6a848ba81 --- /dev/null +++ b/hooks/build @@ -0,0 +1,13 @@ +#!/bin/bash + +# This file is used to add the Git commit hash to the Docker image when the +# image is built by Docker Hub. +# +# https://docs.docker.com/docker-hub/builds/advanced/ +# https://stackoverflow.com/questions/59057978/passing-source-commit-to-dockerfile-commands-on-docker-hub +# +# SOURCE_COMMIT: the SHA1 hash of the commit being tested. +# DOCKERFILE_PATH: the dockerfile currently being built. +# IMAGE_NAME: the name and tag of the Docker repository being built. (This variable is a combination of DOCKER_REPO:DOCKER_TAG.) + +docker build --build-arg SOURCE_COMMIT=$SOURCE_COMMIT -f $DOCKERFILE_PATH -t $IMAGE_NAME .