diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 601d0ee..1091e84 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,8 +4,9 @@ image: docker:latest # improved performance. variables: DOCKER_DRIVER: overlay2 - IMAGE_NAME: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME - IMAGE_LATEST: $CI_REGISTRY_IMAGE:latest + IMAGE_NAME: $CI_REGISTRY_IMAGE + IMAGE_NAME_HUGO: $CI_REGISTRY_IMAGE/hugo + IMAGE_NAME_HUGO_EXTENDED: $CI_REGISTRY_IMAGE/hugo_extended services: - docker:dind @@ -21,17 +22,29 @@ before_script: test: stage: test script: - - docker build -t $IMAGE_NAME . - - docker run -v `pwd`:/git $IMAGE_NAME /bin/sh -c "wget -qO- https://fedoraproject.org/static/hotspot.txt | grep OK && cd /git && hugo" + - TESTS="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: - schedules deploy: stage: deploy 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_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: - tags diff --git a/Dockerfile b/Dockerfile index 0d02f56..07b6062 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,21 @@ FROM alpine:latest -ENV HUGO_VERSION 0.55.6 -ENV HUGO_SHA 39d3119cdb9ba5d6f1f1b43693e707937ce851791a2ea8d28003f49927c428f4 +ARG HUGO=hugo +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 RUN set -eux && \ - apk add --update --no-cache \ - ca-certificates \ - openssl \ - git && \ - wget -O ${HUGO_VERSION}.tar.gz https://github.com/spf13/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_Linux-64bit.tar.gz && \ + case ${HUGO} in \ + *_extended) \ + HUGO_APK="${HUGO_APK} ${HUGO_EXTENDED_APK}" \ + HUGO_SHA="${HUGO_EXTENDED_SHA}" ;; \ + 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 && \ tar xf ${HUGO_VERSION}.tar.gz && mv hugo* /usr/bin/hugo && \ rm -rf ${HUGO_VERSION}.tar.gz && \ @@ -18,4 +24,4 @@ RUN set -eux && \ EXPOSE 1313 -CMD ["/usr/local/bin/hugo"] +CMD ["/usr/bin/hugo"] diff --git a/update.py b/update.py index b5a9f01..c7853ee 100755 --- a/update.py +++ b/update.py @@ -62,8 +62,9 @@ for asset in release['assets']: exit(1) for line in rchecksums.text.split("\n"): if 'hugo_%s_Linux-64bit.tar.gz'%(release['name'][1:]) in line: - checksum = line[:64] - break + hugo_checksum = line[:64] + if 'hugo_extended_%s_Linux-64bit.tar.gz'%(release['name'][1:]) in line: + hugo_extended_checksum = line[:64] # Get Dockerfile from repository 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 for index, line in enumerate(dockerfile): - if "ENV HUGO_VERSION" in line: - dockerfile[index] = "ENV HUGO_VERSION %s"%release['name'][1:] - if "ENV HUGO_SHA" in line: - dockerfile[index] = "ENV HUGO_SHA %s"%checksum + if "ARG HUGO_VERSION" in line: + dockerfile[index] = "ARG HUGO_VERSION=%s"%release['name'][1:] + if "ARG HUGO_SHA" in line: + 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 requestData = {