From 378447099bfbed1276874a95369cb6a789512016 Mon Sep 17 00:00:00 2001 From: mfeix Date: Fri, 22 Oct 2021 15:56:18 +0200 Subject: [PATCH 1/3] feat(Container Publish): Cleanup Container Publishing tasks --- container-publish-snapshot.gitlab-ci.yml | 30 ++++++++++++++ container-publish.gitlab-ci.yml | 53 +++++++++++------------- 2 files changed, 55 insertions(+), 28 deletions(-) create mode 100644 container-publish-snapshot.gitlab-ci.yml diff --git a/container-publish-snapshot.gitlab-ci.yml b/container-publish-snapshot.gitlab-ci.yml new file mode 100644 index 0000000..c01fad3 --- /dev/null +++ b/container-publish-snapshot.gitlab-ci.yml @@ -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 \ No newline at end of file diff --git a/container-publish.gitlab-ci.yml b/container-publish.gitlab-ci.yml index 05318b2..d09f9af 100644 --- a/container-publish.gitlab-ci.yml +++ b/container-publish.gitlab-ci.yml @@ -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: - DOCKER_REGISTRY: $CI_REGISTRY_IMAGE - DOCKER_REGISTRY_USER: $CI_REGISTRY_USER - DOCKER_REGISTRY_PASSWORD: $CI_REGISTRY_PASSWORD + <<: *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 From d3250749d31f7d51d750f08258005cda6b668122 Mon Sep 17 00:00:00 2001 From: mfeix Date: Fri, 29 Oct 2021 09:56:33 +0200 Subject: [PATCH 2/3] docs(Container Publish): Add documentation for container-publish-snapshot and container-publish --- .../templates/container-publish-snapshot.adoc | 27 +++++++++++++++++++ .../chapters/templates/container-publish.adoc | 8 +++++- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 documentation/chapters/templates/container-publish-snapshot.adoc diff --git a/documentation/chapters/templates/container-publish-snapshot.adoc b/documentation/chapters/templates/container-publish-snapshot.adoc new file mode 100644 index 0000000..a3b8118 --- /dev/null +++ b/documentation/chapters/templates/container-publish-snapshot.adoc @@ -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[] +---- \ No newline at end of file diff --git a/documentation/chapters/templates/container-publish.adoc b/documentation/chapters/templates/container-publish.adoc index 267d3f5..25e473e 100644 --- a/documentation/chapters/templates/container-publish.adoc +++ b/documentation/chapters/templates/container-publish.adoc @@ -4,16 +4,22 @@ 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, muss das Rules verärbt 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 -[source, yaml] +[source,yaml] ---- include::{sourcedir}/container-publish.gitlab-ci.yml[] ---- \ No newline at end of file From 1baa38a02a2af2080eb4eebba7fc85ec2c90234a Mon Sep 17 00:00:00 2001 From: Wolfram Gulde Date: Wed, 10 Nov 2021 09:08:39 +0100 Subject: [PATCH 3/3] docs(Templates): fixed typo --- documentation/chapters/templates/container-publish.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/chapters/templates/container-publish.adoc b/documentation/chapters/templates/container-publish.adoc index 25e473e..def17fc 100644 --- a/documentation/chapters/templates/container-publish.adoc +++ b/documentation/chapters/templates/container-publish.adoc @@ -4,7 +4,7 @@ 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, muss das Rules verärbt werden. +Wenn das Template ohne Tags benutzt werden soll, müssen die Rules vererbt werden. Ein Snapshot Template bieten wir hier an: <<_container-publish-snapshot>>