Skip to content
Snippets Groups Projects
Commit edfa7b9e authored by Daniel Dehennin's avatar Daniel Dehennin
Browse files

feat(docker): build and tag docker images

parent a2696556
No related branches found
No related tags found
1 merge request!9feat(docker): build and tag docker
......@@ -5,8 +5,58 @@ include:
- local: templates/Rules.yaml
- local: templates/Runners/eole-docker.yaml
- local: templates/Lint/Commitlint.yaml
- local: templates/Docker.yaml
- local: templates/Release/Semantic-release.yaml
stages:
- lint
- build
- release
###############################################################################
# `build` stage: `*-docker-build`
###############################################################################
# Suffix all jobs to avoid conflict with other jobs names
docker-build/commitlint: {extends: '.build-docker-image'}
docker-build/semantic-release-gitlab: {extends: '.build-docker-image'}
###############################################################################
# `release` stage: `semantic-release`, `*-docker-tag`
###############################################################################
# Suffix all jobs to avoid conflict with other jobs names
## dev images
.dev-docker-image:
extends:
- .tag-docker-image
- .on-dev
variables:
IMAGE_TAG: dev
docker-tag-dev/commitlint:
extends: .dev-docker-image
docker-tag-dev/semantic-release-gitlab:
extends: .dev-docker-image
## stable images
.stable-docker-image:
extends: .tag-docker-image
variables:
SOURCE_TAG: dev
docker-tag-release/commitlint:
extends: .stable-docker-image
docker-tag-release/semantic-release-gitlab:
extends: .stable-docker-image
docker-tag-stable/commitlint:
extends: .stable-docker-image
variables:
IMAGE_TAG: stable
docker-tag-stable/semantic-release-gitlab:
extends: .stable-docker-image
variables:
IMAGE_TAG: stable
FROM node:current-alpine
LABEL maintainer="eole@ac-dijon.fr"
ARG COMMITLINT_VERSION=13
ARG COMMITLINT_CONFIG_CONVENTIONAL_VERSION=13
RUN apk add --no-cache git \
ca-certificates
RUN npm install -g commitlint@${COMMITLINT_VERSION} \
@commitlint/config-conventional@${COMMITLINT_CONFIG_CONVENTIONAL_VERSION}
FROM node:current-alpine
LABEL maintainer="eole@ac-dijon.fr"
ARG SEMANTIC_RELEASE_VERSION=18
ARG SEMAINTIC_GITLAB_VERSION=7
ARG SEMAINTIC_CHANGELOG_VERSION=6
ARG SEMAINTIC_EXEC_VERSION=6
ARG SEMAINTIC_GIT_VERSION=10
RUN apk add --no-cache git \
ca-certificates
RUN npm install -g semantic-release@${SEMAINTIC_RELEASE_VERSION} \
@semantic-release/gitlab@${SEMAINTIC_GITLAB_VERSION} \
@semantic-release/changelog@${SEMAINTIC_CHANGELOG_VERSION} \
@semantic-release/exec@${SEMAINTIC_EXEC_VERSION} \
@semantic-release/git@${SEMAINTIC_GIT_VERSION}
# -*- mode: yaml; coding: utf-8 -*-
# vim: ft=yaml
#
# Define `.build-docker-image` template used by `docker-build*/` jobs
# It build the container image and push it to `${CI_REGISTRY}`
#
# USAGE
#
# docker-build/foo:
# extends: .build-docker-image
# variables:
# DOCKERFILE: Some-specific.Dockerfile
# IMAGE_TAG: $CI_COMMIT_REF_SLUG
#
# REQUIREMENTS
#
# - A `build` stage must be present in your pipeline or it must be
# overriden by the extending job to feet your need.
#
# OPTIONAL VARIABLES
#
# - `IMAGE_NAME`: defaults to `${CI_JOB_NAME}` with any prefix `docker-build*/` removed
# - `DOCKERFILE`: defaults, in order
# - to value set by the user
# - to `Dockerfile.${IMAGE_NAME}` if the file exists
# - to `Dockerfile` if the file exists
# - `IMAGE_TAG`: defaults to `git-${CI_COMMIT_SHORT_SHA}`
#
# USED CI VARIABLES
#
# - `CI_REGISTRY`
# - `CI_REGISTRY_USER`
# - `CI_REGISTRY_PASSWORD`
# - `CI_REGISTRY_IMAGE`
#
.build-docker-image:
stage: build
extends: .not-on-prod
image:
name: gcr.io/kaniko-project/executor:v1.7.0-debug
entrypoint: [""]
script:
- export IMAGE_NAME=${IMAGE_NAME:-${CI_JOB_NAME#docker-build*/}}
- test -f Dockerfile.${IMAGE_NAME} && export DOCKERFILE=${DOCKERFILE:-Dockerfile.${IMAGE_NAME}} || true
- test -f Dockerfile && export DOCKERFILE=${DOCKERFILE:-Dockerfile} || true
- export IMAGE_TAG=${IMAGE_TAG:-git-${CI_COMMIT_SHORT_SHA}}
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"${CI_REGISTRY}\":{\"auth\":\"$(echo -n ${CI_REGISTRY_USER}:${CI_REGISTRY_PASSWORD} | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json
- /kaniko/executor --context ${CI_PROJECT_DIR} --dockerfile $CI_PROJECT_DIR/${DOCKERFILE} --destination ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${IMAGE_TAG}
# Define `.tag-docker-image` template used by `docker-tag*/` jobs
# It tag the `${IMAGE_NAME}:${SOURCE_TAG}` with the tag `${IMAGE_TAG}`
#
# USAGE
#
# docker-tag-devel/foo:
# extends: .tag-docker-image
# variables:
# IMAGE_TAG: 'devel'
#
# REQUIREMENTS
#
# - A `release` stage must be present in your pipeline or it must be
# overriden by the extending job to feet your need.
#
# OPTIONAL VARIABLES
#
# - `IMAGE_NAME`: defaults to `${CI_JOB_NAME}` with any prefix `docker-tag*/` removed
# - `SOURCE_TAG`: source image tag to retag, defaults to `git-${CI_COMMIT_SHORT_SHA}`
# - `IMAGE_TAG`: image tag, defaults to `${CI_COMMIT_TAG}` with prefix `RELEASE_PREFIX` removed
# - `RELEASE_PREFIX`: prefix of the `RELEASE`, defaults to `release/`
#
# USED CI VARIABLES
#
# - `CI_REGISTRY`
# - `CI_REGISTRY_USER`
# - `CI_REGISTRY_PASSWORD`
# - `CI_REGISTRY_IMAGE`
#
.tag-docker-image:
stage: release
extends: .on-release-tag
image:
name: gcr.io/go-containerregistry/crane:debug
entrypoint: [""]
variables:
GIT_STRATEGY: none
script:
- export IMAGE_NAME=${IMAGE_NAME:-${CI_JOB_NAME#docker-tag*/}}
- export SOURCE_TAG=${SOURCE_TAG:-git-${CI_COMMIT_SHORT_SHA}}
- export RELEASE_PREFIX=${RELEASE_PREFIX:-release/}
- export IMAGE_TAG=${IMAGE_TAG:-${CI_COMMIT_TAG#${RELEASE_PREFIX}}}
- crane auth login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
- crane tag ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:${SOURCE_TAG} ${IMAGE_TAG}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment