.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: "true" DOCKERFILE: "$CI_PROJECT_DIR/Dockerfile" CONTEXT_DIR: "$CI_PROJECT_DIR" ADDITIONAL_REGISTRY_DESTINATIONS: "" ADD_GITLAB_REGISTRY_AUTH: "true" before_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 script: - 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 - | 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 - | 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