.BuildImageWithKaniko: &BuildImageWithKaniko image: name: gcr.io/kaniko-project/executor:debug entrypoint: [ "" ] variables: KANIKO_ARGS: "" TAG_COMMIT_ENABLE: "true" TAG_COMMIT_PREFIX: "commit-" TAG_REF_SLUG_ENABLE: "false" TAG_REF_NORMALIZED_ENABLE: "true" DOCKERFILE: "$CI_PROJECT_DIR/Dockerfile" CONTEXT_DIR: "$CI_PROJECT_DIR" ADDITIONAL_REGISTRY_DESTINATIONS: "" ADD_GITLAB_REGISTRY_AUTH: "true" script: # add gitlab registry auth - | if [[ "$ADD_GITLAB_REGISTRY_AUTH" == "true" ]]; then mkdir -p /kaniko/.docker echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$(echo -n ${CI_REGISTRY_USER}:${CI_REGISTRY_PASSWORD} | base64)\"}}}" > /kaniko/.docker/config.json fi - IMAGE_DESTS="" # default tag based on commit - | if [[ "$TAG_COMMIT_ENABLE" == "true" ]]; then IMAGE_DESTS="$IMAGE_DESTS --destination $CI_REGISTRY_IMAGE:${TAG_COMMIT_PREFIX}${CI_COMMIT_SHA}" fi # add tag for reference if available using slug - | if [[ "$TAG_REF_SLUG_ENABLE" == "true" ]] && [[ ! -z $CI_COMMIT_REF_NAME ]]; then IMAGE_DESTS="$IMAGE_DESTS --destination $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" fi # add tag for reference if available using normalization - | if [[ "$TAG_REF_NORMALIZED_ENABLE" == "true" ]] && [[ ! -z $CI_COMMIT_REF_NAME ]]; then REF_TAG_NORMALIZED=$(echo $CI_COMMIT_REF_NAME | sed s:/:-:g) IMAGE_DESTS="$IMAGE_DESTS --destination $CI_REGISTRY_IMAGE:$REF_TAG_NORMALIZED" fi - | if [[ -z "$KANIKO_ARGS" ]]; then KANIKO_ARGS="" fi KANIKO_ARGS="$KANIKO_ARGS --context $CONTEXT_DIR --dockerfile $DOCKERFILE" if [[ "KANIKO_SINGLE_SNAPSHOT" ]]; then KANIKO_ARGS="$KANIKO_ARGS --single-snapshot" fi # build image - | echo "kaniko args: $KANIKO_ARGS" echo "pushing to destinations: $IMAGE_DESTS" echo "pushing to additional destinations: $ADDITIONAL_REGISTRY_DESTINATIONS" /kaniko/executor $KANIKO_ARGS $IMAGE_DESTS $ADDITIONAL_REGISTRY_DESTINATIONS