Files
Docker_Grav/.gitlab-ci.yml

88 lines
2.5 KiB
YAML

image: docker:latest
services:
- name: docker:dind
entrypoint: ["env", "-u", "DOCKER_HOST"]
command: ["dockerd-entrypoint.sh"]
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
stages:
- Build Base
- Build Variants
- Push Images
build-base:
stage: Build Base
artifacts:
expire_in: 1 week
paths:
- ./images/
except:
- pushes
tags:
- docker
before_script:
- mkdir ./images
script:
- docker build --pull --build-arg "GRAV_VERSION=$GRAV_VERSION" -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" .
- docker save --output "./images/$CI_COMMIT_SHORT_SHA.tar" "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA"
build-git:
stage: Build Variants
artifacts:
expire_in: 1 week
paths:
- ./images/
dependencies:
- build-base
except:
- pushes
tags:
- docker
before_script:
- docker load --input "./images/$CI_COMMIT_SHORT_SHA.tar"
script:
- docker build --build-arg "CI_COMMIT_SHORT_SHA=$CI_COMMIT_SHORT_SHA" -f ./variants/Dockerfile-git -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA-git" .
- docker save --output "./images/$CI_COMMIT_SHORT_SHA-git.tar" "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA-git"
push-version:
stage: Push Images
dependencies:
- build-base
- build-git
except:
- pushes
tags:
- docker
before_script:
- docker load --input "./images/$CI_COMMIT_SHORT_SHA.tar"
- docker load --input "./images/$CI_COMMIT_SHORT_SHA-git.tar"
- echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin
script:
- docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" "$CI_REGISTRY_IMAGE:$GRAV_VERSION"
- docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA-git" "$CI_REGISTRY_IMAGE:$GRAV_VERSION-git"
- docker push "$CI_REGISTRY_IMAGE:$GRAV_VERSION"
- docker push "$CI_REGISTRY_IMAGE:$GRAV_VERSION-git"
push-latest:
stage: Push Images
dependencies:
- build-base
- build-git
except:
- pushes
tags:
- docker
when: manual
before_script:
- docker load --input "./images/$CI_COMMIT_SHORT_SHA.tar"
- docker load --input "./images/$CI_COMMIT_SHORT_SHA-git.tar"
- echo "$CI_REGISTRY_PASSWORD" | docker login -u "$CI_REGISTRY_USER" --password-stdin
script:
- docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" "$CI_REGISTRY_IMAGE:latest"
- docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA-git" "$CI_REGISTRY_IMAGE:latest-git"
- docker push "$CI_REGISTRY_IMAGE:latest"
- docker push "$CI_REGISTRY_IMAGE:latest-git"