46 lines
1.2 KiB
YAML
46 lines
1.2 KiB
YAML
# Шаблон: Docker Build + Push
|
|
#
|
|
# Использование:
|
|
# include:
|
|
# - project: 'dot-dot/ci-templates'
|
|
# file: '/docker-build.yml'
|
|
#
|
|
# Переменные (можно переопределить):
|
|
# IMAGE_NAME: ${REGISTRY}/custom-name
|
|
# DOCKERFILE: path/to/Dockerfile
|
|
# DOCKER_CONTEXT: ./subdir
|
|
|
|
stages:
|
|
- build
|
|
|
|
variables:
|
|
REGISTRY: registry.dot-dot.ru
|
|
IMAGE_NAME: ${REGISTRY}/${CI_PROJECT_NAME}
|
|
DOCKERFILE: Dockerfile
|
|
DOCKER_CONTEXT: .
|
|
|
|
.docker-build:
|
|
image: docker:24
|
|
before_script:
|
|
- echo "${REGISTRY_PASSWORD}" | docker login ${REGISTRY} -u ${REGISTRY_USER} --password-stdin
|
|
|
|
# Сборка веток
|
|
build:branch:
|
|
extends: .docker-build
|
|
stage: build
|
|
script:
|
|
- docker build --pull -f ${DOCKERFILE} -t ${IMAGE_NAME}:${CI_COMMIT_REF_SLUG} ${DOCKER_CONTEXT}
|
|
- docker push ${IMAGE_NAME}:${CI_COMMIT_REF_SLUG}
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH
|
|
|
|
# Сборка тегов (v0.0.1 → registry/app:v0.0.1)
|
|
build:tag:
|
|
extends: .docker-build
|
|
stage: build
|
|
script:
|
|
- docker build --pull -f ${DOCKERFILE} -t ${IMAGE_NAME}:${CI_COMMIT_TAG} ${DOCKER_CONTEXT}
|
|
- docker push ${IMAGE_NAME}:${CI_COMMIT_TAG}
|
|
rules:
|
|
- if: $CI_COMMIT_TAG
|