Build normal and extended versions for the registry images

Closes pages/hugo#29
This commit is contained in:
YAEGASHI Takeshi 2019-05-03 01:50:31 +09:00 committed by YAEGASHI Takeshi
parent 17fb5d5ad4
commit 9b028b48b5
3 changed files with 42 additions and 20 deletions

View File

@ -4,8 +4,9 @@ image: docker:latest
# improved performance. # improved performance.
variables: variables:
DOCKER_DRIVER: overlay2 DOCKER_DRIVER: overlay2
IMAGE_NAME: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME IMAGE_NAME: $CI_REGISTRY_IMAGE
IMAGE_LATEST: $CI_REGISTRY_IMAGE:latest IMAGE_NAME_HUGO: $CI_REGISTRY_IMAGE/hugo
IMAGE_NAME_HUGO_EXTENDED: $CI_REGISTRY_IMAGE/hugo_extended
services: services:
- docker:dind - docker:dind
@ -21,17 +22,29 @@ before_script:
test: test:
stage: test stage: test
script: script:
- docker build -t $IMAGE_NAME . - TESTS="wget -qO- https://fedoraproject.org/static/hotspot.txt | grep OK && cd /git && hugo"
- docker run -v `pwd`:/git $IMAGE_NAME /bin/sh -c "wget -qO- https://fedoraproject.org/static/hotspot.txt | grep OK && cd /git && hugo" - docker build --build-arg HUGO=hugo -t $IMAGE_NAME_HUGO .
- docker build --build-arg HUGO=hugo_extended -t $IMAGE_NAME_HUGO_EXTENDED .
- docker run -v `pwd`:/git $IMAGE_NAME_HUGO /bin/sh -c "$TESTS"
- docker run -v `pwd`:/git $IMAGE_NAME_HUGO_EXTENDED /bin/sh -c "$TESTS"
except: except:
- schedules - schedules
deploy: deploy:
stage: deploy stage: deploy
script: script:
- docker build -t $IMAGE_NAME -t $IMAGE_LATEST . - docker build --build-arg HUGO=hugo -t $IMAGE_NAME_HUGO .
- docker build --build-arg HUGO=hugo_extended -t $IMAGE_NAME_HUGO_EXTENDED .
- docker tag $IMAGE_NAME_HUGO $IMAGE_NAME
- docker tag $IMAGE_NAME_HUGO $IMAGE_NAME:$CI_COMMIT_REF_NAME
- docker tag $IMAGE_NAME_HUGO $IMAGE_NAME_HUGO:$CI_COMMIT_REF_NAME
- docker tag $IMAGE_NAME_HUGO_EXTENDED $IMAGE_NAME_HUGO_EXTENDED:$CI_COMMIT_REF_NAME
- docker push $IMAGE_NAME - docker push $IMAGE_NAME
- docker push $IMAGE_LATEST - docker push $IMAGE_NAME:$CI_COMMIT_REF_NAME
- docker push $IMAGE_NAME_HUGO
- docker push $IMAGE_NAME_HUGO:$CI_COMMIT_REF_NAME
- docker push $IMAGE_NAME_HUGO_EXTENDED
- docker push $IMAGE_NAME_HUGO_EXTENDED:$CI_COMMIT_REF_NAME
only: only:
- tags - tags

View File

@ -1,15 +1,21 @@
FROM alpine:latest FROM alpine:latest
ENV HUGO_VERSION 0.55.6 ARG HUGO=hugo
ENV HUGO_SHA 39d3119cdb9ba5d6f1f1b43693e707937ce851791a2ea8d28003f49927c428f4 ARG HUGO_VERSION=0.55.6
ARG HUGO_APK="ca-certificates openssl git"
ARG HUGO_SHA=39d3119cdb9ba5d6f1f1b43693e707937ce851791a2ea8d28003f49927c428f4
ARG HUGO_EXTENDED_APK="libc6-compat libstdc++"
ARG HUGO_EXTENDED_SHA=8962b8cdc0ca220da97293cea0bb1b31718cb4d99d0766be6865cb976b1c1805
# Install HUGO # Install HUGO
RUN set -eux && \ RUN set -eux && \
apk add --update --no-cache \ case ${HUGO} in \
ca-certificates \ *_extended) \
openssl \ HUGO_APK="${HUGO_APK} ${HUGO_EXTENDED_APK}" \
git && \ HUGO_SHA="${HUGO_EXTENDED_SHA}" ;; \
wget -O ${HUGO_VERSION}.tar.gz https://github.com/spf13/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_Linux-64bit.tar.gz && \ esac && \
apk add --update --no-cache ${HUGO_APK} && \
wget -O ${HUGO_VERSION}.tar.gz https://github.com/spf13/hugo/releases/download/v${HUGO_VERSION}/${HUGO}_${HUGO_VERSION}_Linux-64bit.tar.gz && \
echo "${HUGO_SHA} ${HUGO_VERSION}.tar.gz" | sha256sum -c && \ echo "${HUGO_SHA} ${HUGO_VERSION}.tar.gz" | sha256sum -c && \
tar xf ${HUGO_VERSION}.tar.gz && mv hugo* /usr/bin/hugo && \ tar xf ${HUGO_VERSION}.tar.gz && mv hugo* /usr/bin/hugo && \
rm -rf ${HUGO_VERSION}.tar.gz && \ rm -rf ${HUGO_VERSION}.tar.gz && \
@ -18,4 +24,4 @@ RUN set -eux && \
EXPOSE 1313 EXPOSE 1313
CMD ["/usr/local/bin/hugo"] CMD ["/usr/bin/hugo"]

View File

@ -62,8 +62,9 @@ for asset in release['assets']:
exit(1) exit(1)
for line in rchecksums.text.split("\n"): for line in rchecksums.text.split("\n"):
if 'hugo_%s_Linux-64bit.tar.gz'%(release['name'][1:]) in line: if 'hugo_%s_Linux-64bit.tar.gz'%(release['name'][1:]) in line:
checksum = line[:64] hugo_checksum = line[:64]
break if 'hugo_extended_%s_Linux-64bit.tar.gz'%(release['name'][1:]) in line:
hugo_extended_checksum = line[:64]
# Get Dockerfile from repository # Get Dockerfile from repository
rdockerfile = requests.get('%s/projects/%s/repository/files/Dockerfile/raw?ref=registry'%(GITLAB_URL, GITLAB_PROJECT)) rdockerfile = requests.get('%s/projects/%s/repository/files/Dockerfile/raw?ref=registry'%(GITLAB_URL, GITLAB_PROJECT))
@ -75,10 +76,12 @@ dockerfile = rdockerfile.text.split("\n")
# Replace env variables # Replace env variables
for index, line in enumerate(dockerfile): for index, line in enumerate(dockerfile):
if "ENV HUGO_VERSION" in line: if "ARG HUGO_VERSION" in line:
dockerfile[index] = "ENV HUGO_VERSION %s"%release['name'][1:] dockerfile[index] = "ARG HUGO_VERSION=%s"%release['name'][1:]
if "ENV HUGO_SHA" in line: if "ARG HUGO_SHA" in line:
dockerfile[index] = "ENV HUGO_SHA %s"%checksum dockerfile[index] = "ARG HUGO_SHA=%s"%hugo_checksum
if "ARG HUGO_EXTENDED_SHA" in line:
dockerfile[index] = "ARG HUGO_EXTENDED_SHA=%s"%hugo_extended_checksum
# Update Dockerfile on repository # Update Dockerfile on repository
requestData = { requestData = {