kirby/.gitlab-ci.yml

92 lines
3.0 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Mein Default Pipeline File:
#
# Macht einen einfachen Docker Build
# und pusht das Ergebnis in die Container Registry
# wobei bei nicht getaggten Builds das vorherige Image wieder aus der Registry gelöscht wird.
#
# Wir verwenden mein Spezial-Docker-Image mit dem „reg“ Tool zum Löschen aus Registries.
image: hub.fami.ga/root/docker:17
# Einfache 2-Stage Pipeline
stages:
- build
- push
variables:
DOCKER_DRIVER: overlay2
CACHE_IMAGE: /cache
# Login in der Registry, sonst klappts nicht
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
# Der Docker Build …
Build:
stage: build
script:
# fetches the latest image (not failing if image is not found)
- docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG || true
- docker pull $CI_REGISTRY_IMAGE:latest || true
#
- echo "##### my Environment" && env && which curl && which reg && ls -la /usr/local/bin/ && echo "#####"
- >
docker build
--pull
--build-arg VCS_REF=$CI_COMMIT_SHA
--build-arg VCS_URL=$CI_PROJECT_URL
--cache-from $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
--cache-from $CI_REGISTRY_IMAGE:latest
--tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
.
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
- echo "##### Build done..."
Clean previous:
stage: build
script:
- echo "before ... ${CI_COMMIT_BEFORE_SHA} ... trying to remove?"
- docker pull hub.fami.ga/root/docker:empty
- docker tag hub.fami.ga/root/docker:empty $CI_REGISTRY_IMAGE:$CI_COMMIT_BEFORE_SHA
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_BEFORE_SHA
- /usr/local/bin/reg rm -d --auth-url $CI_REGISTRY -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY_IMAGE:$CI_COMMIT_BEFORE_SHA
- echo "##### Cleanup done..."
Push slug:
variables:
GIT_STRATEGY: none
stage: push
except: [tags]
script:
- echo "##### Push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA -> $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
- docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
- docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
Push latest:
variables:
GIT_STRATEGY: none
stage: push
only: [tags]
script:
- echo "##### Push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA -> $CI_REGISTRY_IMAGE:latest"
- docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
- docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:latest
- docker push $CI_REGISTRY_IMAGE:latest
Push tag:
variables:
GIT_STRATEGY: none
stage: push
only: [tags]
script:
- echo "##### Push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA -> $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG"
- docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
- docker tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG