ci: push Docker image to container registry

Update the CI pipeline file and Makefile to
push the Docker image on tagged releases.

Part of dananglin/pleroma-ansible-playbook#14
This commit is contained in:
Dan Anglin 2020-04-23 00:59:53 +01:00
parent 0cedf15ad9
commit ed709517c0
Signed by: dananglin
GPG key ID: 0C1D44CFBEE68638
2 changed files with 27 additions and 11 deletions

View file

@ -1,18 +1,17 @@
---
stages:
- test
- publish
.use-python:
image: python:3.7.6-slim-buster
.docker-dind-service:
.docker-build-setup:
image: docker:19.03.8
services:
- docker:19.03.8-dind
.use-docker:
image: docker:19.03.8
.install-deps: &install-deps
.install-make: &install-make
- apk add --no-cache make
test:dockerfile-lint:
@ -29,11 +28,9 @@ test:dockerfile-lint:
- master
test:docker-image-build:
extends:
- .docker-dind-service
- .use-docker
extends: .docker-build-setup
script:
- *install-deps
- *install-make
- make image
stage: test
only:
@ -61,3 +58,18 @@ test:custom-modules:
except:
refs:
- master
publish:docker-image:
extends: .docker-build-setup
before_script:
- docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
after_script:
- docker logout ${CI_REGISTRY}
script:
- *install-make
- make publish
only:
- /^v[0-9]+(.[0-9]+){2}$/
variables:
IMAGE_NAME: ${CI_REGISTRY}/${CI_PROJECT_PATH}
IMAGE_TAG: ${CI_COMMIT_REF_NAME}

View file

@ -5,8 +5,9 @@ PLAYBOOK_FILE ?= "playbook.yml"
DOCKERFILE = Dockerfile
IMAGE_NAME ?= pleroma-ansible-playbook
IMAGE_TAG ?= latest
DOCKER_IMAGE = $(IMAGE_NAME):$(IMAGE_TAG)
PHONY: secret_key_base signing_salt vapid_private_key vapid_public_key test_modules_unit image pleroma
PHONY: secret_key_base signing_salt vapid_private_key vapid_public_key test_modules_unit image publish pleroma
all: secret_key_base signing_salt vapid_key_pair
@ -35,7 +36,10 @@ test_modules_unit:
@find ./library -mindepth 1 -maxdepth 1 -type f -name test_*.py | xargs python3
image:
@docker build -f $(DOCKERFILE) -t $(IMAGE_NAME):$(IMAGE_TAG) .
@docker build -f $(DOCKERFILE) -t $(DOCKER_IMAGE) .
publish: image
@docker push $(DOCKER_IMAGE)
pleroma:
ansible-playbook --inventory $(INVENTORY) --tags $(PLAYBOOK_TAGS) $(EXTRA_ARGS) $(PLAYBOOK_FILE)