|
image: docker:latest |
|
services: |
|
- docker:dind |
|
stages: |
|
- Dev |
|
- Dev-publish |
|
- Prod-Tag |
|
- Prod-publish |
|
variables: |
|
REGISTRY: [Your Registry] |
|
REPOSITORY: [Your Repository] |
|
|
|
before_script: |
|
# check for VERSION file |
|
- if [ ! -f VERSION ]; then echo "VERSION file not found!"; exit 1; else export VERSION=$(cat VERSION); fi |
|
- 'echo "Running Pipeline for: $REGISTRY/$REPOSITORY:${VERSION}"' |
|
|
|
build: |
|
stage: Dev |
|
script: |
|
- docker build -t $REGISTRY/$REPOSITORY . |
|
- docker save $REGISTRY/$REPOSITORY > image.tar |
|
- docker image ls |
|
artifacts: |
|
paths: |
|
- image.tar |
|
only: |
|
- master |
|
|
|
dev-publish: |
|
stage: Dev-publish |
|
dependencies: |
|
- build |
|
script: |
|
# check for $REGISTRY_USER and $REGISTRY_PW file |
|
- if [ -z ${REGISTRY_USER+x} ]; then echo "REGISTRY_USER is not set!"; exit 1; fi |
|
- if [ -z ${REGISTRY_PW+x} ]; then echo "REGISTRY_PW is not set!"; exit 1; fi |
|
# login into docker registry |
|
- docker login -u $REGISTRY_USER -p $REGISTRY_PW $REGISTRY |
|
# load previously generated docker image |
|
- docker load -i image.tar |
|
# push to docker registry |
|
- docker tag $REGISTRY/$REPOSITORY:latest $REGISTRY/$REPOSITORY:latest-dev |
|
- docker push $REGISTRY/$REPOSITORY:latest-dev |
|
only: |
|
- master |
|
|
|
publish: |
|
stage: Prod-publish |
|
dependencies: |
|
- build |
|
- tag |
|
script: |
|
# check for $REGISTRY_USER and $REGISTRY_PW file |
|
- if [ -z ${REGISTRY_USER+x} ]; then echo "REGISTRY_USER is not set!"; exit 1; fi |
|
- if [ -z ${REGISTRY_PW+x} ]; then echo "REGISTRY_PW is not set!"; exit 1; fi |
|
# login into docker registry |
|
- docker login -u $REGISTRY_USER -p $REGISTRY_PW $REGISTRY |
|
# load previously generated docker image |
|
- docker load -i image.tar |
|
# push to docker registry |
|
- docker tag $REGISTRY/$REPOSITORY:latest $REGISTRY/$REPOSITORY:$VERSION |
|
- docker push $REGISTRY/$REPOSITORY:$VERSION |
|
only: |
|
- master |
|
|
|
tag: |
|
image: python:3.7-stretch |
|
stage: Prod-Tag |
|
script: |
|
- mkdir -p ~/.ssh && chmod 700 ~/.ssh |
|
- ssh-keyscan gitlab.com >> ~/.ssh/known_hosts && chmod 644 ~/.ssh/known_hosts |
|
- eval $(ssh-agent -s) |
|
- echo -n "$SSH_DEPLOY_KEY" | tr -d '\r' | ssh-add - > /dev/null |
|
- chmod +x tag.py |
|
- ./tag.py |
|
when: manual |
|
allow_failure: false |
|
only: |
|
- master |