diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2cf07b5..985ea05 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,21 +1,77 @@ -image: egon0/docker-with-buildx-and-git:latest +# This is a GitLab CI configuration to build the project as a docker image +# The file is generic enough to be dropped in a project containing a working Dockerfile +# Author: Florent CHAUVEAU +# Mentioned here: https://blog.callr.tech/building-docker-images-with-gitlab-ci-best-practices/ + +# do not use "latest" here, if you want this to work in the future +image: docker:19 variables: - DOCKER_HOST: tcp://docker:2375/ - DOCKER_DRIVER: overlay2 + DOCKER_DRIVER: overlay DOCKER_TLS_CERTDIR: "" -services: - - docker:dind +stages: + - build + - push -build: +# Use this if your GitLab runner does not use socket binding +services: + - docker:19-dind + +before_script: + # docker login asks for the password to be passed through stdin for security + # we use $CI_JOB_TOKEN here which is a special token provided by GitLab + - echo -n $CI_JOB_TOKEN | docker login -u gitlab-ci-token --password-stdin $CI_REGISTRY + +Build: stage: build - variables: - IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG - D_IMAGE_TAG: egon0/prosody-alpine-ldap-multiarch:$CI_COMMIT_REF_SLUG - D_LATEST_TAG: egon0/prosody-alpine-ldap-multiarch:latest script: - - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - - docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD - - docker buildx create --use --name A$CI_COMMIT_SHORT_SHA - - docker buildx build --platform $BUILD_PLATFORMS --push -t $IMAGE_TAG -t $CI_REGISTRY_IMAGE:latest -t $D_IMAGE_TAG -t $D_LATEST_TAG . + # fetches the latest image (not failing if image is not found) + - docker pull $CI_REGISTRY_IMAGE:latest || true + # builds the project, passing proxy variables, and vcs vars for LABEL + # notice the cache-from, which is going to use the image we just pulled locally + # the built image is tagged locally with the commit SHA, and then pushed to + # the GitLab registry + - > + docker build + --pull + --build-arg VCS_REF=$CI_COMMIT_SHA + --build-arg VCS_URL=$CI_PROJECT_URL + --cache-from $CI_REGISTRY_IMAGE:latest + --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME + . + - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME + +# Here, the goal is to tag the "main" branch as "latest" +Push latest: + variables: + # We are just playing with Docker here. + # We do not need GitLab to clone the source code. + GIT_STRATEGY: none + stage: push + only: + # Only "main" should be tagged "latest" + - main + script: + # Because we have no guarantee that this job will be picked up by the same runner + # that built the image in the previous step, we pull it again locally + - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME + # Then we tag it "latest" + - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME $CI_REGISTRY_IMAGE:latest + # Annnd we push it. + - docker push $CI_REGISTRY_IMAGE:latest + +# Finally, the goal here is to Docker tag any Git tag +# GitLab will start a new pipeline everytime a Git tag is created, which is pretty awesome +Push tag: + variables: + # Again, we do not need the source code here. Just playing with Docker. + GIT_STRATEGY: none + stage: push + only: + # We want this job to be run on tags only. + - tags + script: + - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME + - docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME + - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME diff --git a/Dockerfile b/Dockerfile index e9dea06..5a55b0b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,7 @@ -FROM alpine:3.16 -MAINTAINER Micha Gläß-Stöcker +FROM alpine:3.7 +MAINTAINER Jochen Schalanda + +ENV PROSODY_VERSION 0.10.0-r2 # Build-time metadata as defined at http://label-schema.org ARG BUILD_DATE @@ -11,12 +13,13 @@ LABEL org.label-schema.build-date=$BUILD_DATE \ org.label-schema.description="Prosody IM Docker image based on Alpine Linux" \ org.label-schema.url="https://prosody.im/" \ org.label-schema.vcs-ref=$VCS_REF \ + org.label-schema.vcs-url="https://github.com/joschi/docker-prosody-alpine" \ org.label-schema.version=$VERSION \ org.label-schema.schema-version="1.0" \ com.microscaling.docker.dockerfile="/Dockerfile" \ com.microscaling.license="MIT" -RUN apk add --no-cache bash "prosody" lua5.2-ldap +RUN apk add --no-cache bash "prosody=${PROSODY_VERSION}" RUN mkdir -p /etc/prosody/conf.d /usr/local/lib/prosody/modules COPY prosody.cfg.lua /etc/prosody/prosody.cfg.lua diff --git a/renovate.json b/renovate.json deleted file mode 100644 index 7190a60..0000000 --- a/renovate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "$schema": "https://docs.renovatebot.com/renovate-schema.json" -}