Merge branch 'Docker-publish-rework' into 'master'
feat(Container Publish): Cleanup Container Publishing See merge request gilden/ci/gitlab-ci-templates!32
This commit is contained in:
commit
166b015fe5
30
container-publish-snapshot.gitlab-ci.yml
Normal file
30
container-publish-snapshot.gitlab-ci.yml
Normal file
@ -0,0 +1,30 @@
|
||||
include:
|
||||
- local: 'container-publish.gitlab-ci.yml'
|
||||
|
||||
.container-publish-snapshot-rules: &container-publish-snapshot-rules
|
||||
stage: snapshot
|
||||
rules:
|
||||
- if: "$CI_PIPELINE_SOURCE == 'merge_request_event'"
|
||||
when: never
|
||||
- if: '$CI_COMMIT_REF_NAME =~ /^feature/'
|
||||
variables:
|
||||
IMAGE_TAG: $CI_COMMIT_REF_SLUG
|
||||
- if: '$CI_COMMIT_REF_NAME =~ /^refactor/'
|
||||
variables:
|
||||
IMAGE_TAG: $CI_COMMIT_REF_SLUG
|
||||
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
|
||||
variables:
|
||||
IMAGE_TAG: "latest"
|
||||
- when: never
|
||||
|
||||
.publish-image-jib-maven-snapshot:
|
||||
<<: *container-publish-snapshot-rules
|
||||
extends: .publish-image-jib-maven
|
||||
|
||||
.publish-image-jib-gradle-snapshot:
|
||||
<<: *container-publish-snapshot-rules
|
||||
extends: .publish-image-jib-gradle
|
||||
|
||||
.publish-image-kaniko-snapshot:
|
||||
<<: *container-publish-snapshot-rules
|
||||
extends: .publish-image-kaniko
|
||||
@ -1,16 +1,26 @@
|
||||
.publish-image-jib:
|
||||
image: $MAVEN_IMAGE
|
||||
.container-publish-common: &container-publish-common
|
||||
before_script:
|
||||
- export PARSED_VERSION=$(echo $IMAGE_TAG | sed -r 's/\+/_/g') # Replace + sign since this is not valid in a docker tag
|
||||
- echo $PARSED_VERSION
|
||||
stage: package
|
||||
rules:
|
||||
- if: $CI_COMMIT_TAG
|
||||
variables:
|
||||
IMAGE_TAG: $CI_COMMIT_TAG
|
||||
|
||||
|
||||
.container-publish-common-variables: &container-publish-common-variables
|
||||
DOCKER_REGISTRY: $CI_REGISTRY_IMAGE
|
||||
DOCKER_REGISTRY_USER: $CI_REGISTRY_USER
|
||||
DOCKER_REGISTRY_PASSWORD: $CI_REGISTRY_PASSWORD
|
||||
|
||||
.publish-image-jib-maven:
|
||||
image: $MAVEN_IMAGE
|
||||
<<: *container-publish-common
|
||||
variables:
|
||||
<<: *container-publish-common-variables
|
||||
MVN_VERSION: "true"
|
||||
script:
|
||||
- export PARSED_VERSION=$(echo $CI_COMMIT_TAG | sed -r 's/\+/_/g') # Replace + sign since this is not valid in a docker tag
|
||||
- echo $PARSED_VERSION
|
||||
- >
|
||||
if [ "${MVN_VERSION}" == "true" ]; then
|
||||
mvn versions:set -DnewVersion=$PARSED_VERSION -DgenerateBackupPoms=false
|
||||
@ -23,21 +33,15 @@
|
||||
|
||||
.publish-image-jib-gradle:
|
||||
image: $GRADLE_IMAGE
|
||||
stage: package
|
||||
rules:
|
||||
- if: $CI_COMMIT_TAG
|
||||
<<: *container-publish-common
|
||||
variables:
|
||||
DOCKER_REGISTRY: $CI_REGISTRY_IMAGE
|
||||
DOCKER_REGISTRY_USER: $CI_REGISTRY_USER
|
||||
DOCKER_REGISTRY_PASSWORD: $CI_REGISTRY_PASSWORD
|
||||
before_script:
|
||||
- export PARSED_VERSION=$(echo $CI_COMMIT_TAG | sed -r 's/\+/_/g') # Replace + sign since this is not valid in a docker tag
|
||||
- export IMAGE_NAME=$CI_REGISTRY_IMAGE:$PARSED_VERSION
|
||||
<<: *container-publish-common-variables
|
||||
GRADLE_EXTRA_ARGS: ""
|
||||
script:
|
||||
- echo $PARSED_VERSION
|
||||
- gradlew jib
|
||||
- ./gradlew assemble jib $GRADLE_EXTRA_ARGS
|
||||
"-DskipTests"
|
||||
"-Djib.to.image=$DOCKER_REGISTRY:$PARSED_VERSION"
|
||||
"-Djib.to.image=$DOCKER_REGISTRY:$PARSED_VERSION""
|
||||
"-Djib.to.auth.username=$DOCKER_REGISTRY_USER"
|
||||
"-Djib.to.auth.password=$DOCKER_REGISTRY_PASSWORD"
|
||||
|
||||
@ -45,20 +49,13 @@
|
||||
image:
|
||||
name: gcr.io/kaniko-project/executor:v1.7.0-debug
|
||||
entrypoint: [ "" ]
|
||||
stage: package
|
||||
rules:
|
||||
- if: $CI_COMMIT_TAG
|
||||
<<: *container-publish-common
|
||||
variables:
|
||||
DOCKER_REGISTRY: $CI_REGISTRY_IMAGE
|
||||
DOCKER_REGISTRY_USER: $CI_REGISTRY_USER
|
||||
DOCKER_REGISTRY_PASSWORD: $CI_REGISTRY_PASSWORD
|
||||
<<: *container-publish-common-variables
|
||||
PROJECT_DIR: $CI_PROJECT_DIR
|
||||
DOCKERFILE_LOCATION: $CI_PROJECT_DIR/Dockerfile
|
||||
CONTEXT_LOCATION: $CI_PROJECT_DIR
|
||||
before_script:
|
||||
- export PARSED_VERSION=$(echo $CI_COMMIT_TAG | sed -r 's/\+/_/g') # Replace + sign since this is not valid in a docker tag
|
||||
- export IMAGE_NAME=$CI_REGISTRY_IMAGE:$PARSED_VERSION
|
||||
script:
|
||||
- mkdir -p /kaniko/.docker
|
||||
- echo "{\"auths\":{\"$DOCKER_REGISTRY\":{\"username\":\"$DOCKER_REGISTRY_USER\",\"password\":\"$DOCKER_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
|
||||
- /kaniko/executor --context $CONTEXT_LOCATION --dockerfile $DOCKERFILE_LOCATION --destination $IMAGE_NAME --skip-tls-verify
|
||||
- /kaniko/executor --context $CONTEXT_LOCATION --dockerfile $DOCKERFILE_LOCATION --destination $CI_REGISTRY_IMAGE:$PARSED_VERSION --skip-tls-verify
|
||||
|
||||
@ -0,0 +1,27 @@
|
||||
:sourcedir: ../../../
|
||||
|
||||
= Container-Publish-Snapshot
|
||||
|
||||
Dieses Template funktioniert genauso wie das <<_container_publish, Container Publish>> Template.
|
||||
Es wird jedoch in folgenden Branches ausgeführt.
|
||||
Dabei sind die Imagenamen der Container abhängig von den Branchnamen.
|
||||
|
||||
.Ausführung
|
||||
|===
|
||||
|Branch |Container Image name
|
||||
|DEFAULT BRANCH (master/main) |DOCKER_REGISTRY:latest
|
||||
|feature/* |$DOCKER_REGISTRY:feature/(Branch-postfix)
|
||||
|refactor/* |$DOCKER_REGISTRY:refactor/(Branch-postfix)
|
||||
|===
|
||||
|
||||
.Variables
|
||||
|===
|
||||
|Name |Description | Default Value
|
||||
|| Siehe <<_container_publish, Container Publish>> |
|
||||
|===
|
||||
|
||||
.sonar-template
|
||||
[source,yaml]
|
||||
----
|
||||
include::{sourcedir}/container-publish-snapshot.gitlab-ci.yml[]
|
||||
----
|
||||
@ -4,12 +4,18 @@
|
||||
|
||||
Baut mithilfe von jib oder kaniko ein Docker Image und läd das Image in der Docker Registry des Projekts hoch.
|
||||
Dieser Schritt wird nur ausgeführt, wenn ein Tag gesetzt wird.
|
||||
Wenn das Template ohne Tags benutzt werden soll, müssen die Rules vererbt werden.
|
||||
|
||||
Ein Snapshot Template bieten wir hier an: <<_container-publish-snapshot>>
|
||||
|
||||
.Variables
|
||||
|===
|
||||
|Name |Description | Default Value
|
||||
|MVN_VERSION | Bestimmt, ob die version von MAVEN gesetzt werden soll.
|
||||
Falls das Projekt aus mehreren Poms besteht, kann `before_script:` benutzt werden. | "true"
|
||||
|DOCKER_REGISTRY | Definiert die Registry an zu dem das Image veröffentlicht werden soll | $CI_REGISTRY_IMAGE
|
||||
|DOCKER_REGISTRY_USER | Definiert den User der benutzt werden soll | $CI_REGISTRY_USER
|
||||
|DOCKER_REGISTRY_PASSWORD | Definiert das Passwort des Benutzers | $CI_REGISTRY_PASSWORD
|
||||
|===
|
||||
|
||||
.sonar-template
|
||||
|
||||
Loading…
Reference in New Issue
Block a user