Files
kube-forge/.gitlab-ci.yml

75 lines
2.0 KiB
YAML

variables:
DOCKER_IMAGE: harbor.kvazaric.ru/kube-forge/kube-forge
KANIKO_IMAGE: harbor.kvazaric.ru/postgres-tasks/kaniko_executor:debug
KANIKO_CONTEXT: ${CI_PROJECT_DIR}
RELEASE_CLI_IMAGE: harbor.kvazaric.ru/kube-forge/release-cli:v0.18.0
PREPARE_RELEASE:
options:
- "No"
- "Yes"
value: "No"
description: Create release from this build?
stages:
- build
- release
build-docker:
variables:
DOCKERFILE_PATH: Dockerfile
IMAGE_DESTINATION: image
stage: build
image:
name: ${KANIKO_IMAGE}
entrypoint: [""]
allow_failure: true
tags:
- build
- docker
before_script:
- mkdir -p /kaniko/.docker
- echo "${DOCKER_AUTH_CONFIG}" > /kaniko/.docker/config.json
- VERSION=$(cat ${CI_PROJECT_DIR}/build/version.txt)
script:
- |
/kaniko/executor --context "${KANIKO_CONTEXT}" \
--dockerfile ${CI_PROJECT_DIR}/build/docker/Dockerfile \
--destination "${DOCKER_IMAGE}:${VERSION}-${CI_COMMIT_SHORT_SHA}"
dependencies: []
rules:
- changes:
- build/docker/**/*
- cmd/**/*
- internal/**/*
- kubespray/**/*
- go.sum
- go.mod
- requirements.txt
- ansible.cfg
if: $CI_COMMIT_REF_NAME =~ /^(master)$/
when: always
make-release:
stage: release
image: ${RELEASE_CLI_IMAGE}
tags:
- build
- docker
rules:
- if: $PREPARE_RELEASE == "Yes"
script:
- VERSION=$(cat ${CI_PROJECT_DIR}/build/version.txt)
- echo "Preparing release for version ${VERSION}-${CI_COMMIT_SHORT_SHA}"
release: # See https://docs.gitlab.com/ee/ci/yaml/#release for available properties
name: kube-forge:${VERSION}-${CI_COMMIT_SHORT_SHA}
tag_name: "${VERSION}-${CI_COMMIT_SHORT_SHA}"
description: "${VERSION}-${CI_COMMIT_SHORT_SHA}"
assets:
links:
- name: "Docker image"
url: "harbor.kvazaric.ru/kube-forge/kube-forge:${VERSION}-${CI_COMMIT_SHORT_SHA}"
link_type: "image"
when: on_success