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:
|
.container-publish-common: &container-publish-common
|
||||||
image: $MAVEN_IMAGE
|
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
|
stage: package
|
||||||
rules:
|
rules:
|
||||||
- if: $CI_COMMIT_TAG
|
- 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:
|
variables:
|
||||||
DOCKER_REGISTRY: $CI_REGISTRY_IMAGE
|
<<: *container-publish-common-variables
|
||||||
DOCKER_REGISTRY_USER: $CI_REGISTRY_USER
|
|
||||||
DOCKER_REGISTRY_PASSWORD: $CI_REGISTRY_PASSWORD
|
|
||||||
MVN_VERSION: "true"
|
MVN_VERSION: "true"
|
||||||
script:
|
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
|
if [ "${MVN_VERSION}" == "true" ]; then
|
||||||
mvn versions:set -DnewVersion=$PARSED_VERSION -DgenerateBackupPoms=false
|
mvn versions:set -DnewVersion=$PARSED_VERSION -DgenerateBackupPoms=false
|
||||||
@ -23,21 +33,15 @@
|
|||||||
|
|
||||||
.publish-image-jib-gradle:
|
.publish-image-jib-gradle:
|
||||||
image: $GRADLE_IMAGE
|
image: $GRADLE_IMAGE
|
||||||
stage: package
|
<<: *container-publish-common
|
||||||
rules:
|
|
||||||
- if: $CI_COMMIT_TAG
|
|
||||||
variables:
|
variables:
|
||||||
DOCKER_REGISTRY: $CI_REGISTRY_IMAGE
|
<<: *container-publish-common-variables
|
||||||
DOCKER_REGISTRY_USER: $CI_REGISTRY_USER
|
GRADLE_EXTRA_ARGS: ""
|
||||||
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
|
|
||||||
script:
|
script:
|
||||||
- echo $PARSED_VERSION
|
- echo $PARSED_VERSION
|
||||||
- gradlew jib
|
- ./gradlew assemble jib $GRADLE_EXTRA_ARGS
|
||||||
"-DskipTests"
|
"-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.username=$DOCKER_REGISTRY_USER"
|
||||||
"-Djib.to.auth.password=$DOCKER_REGISTRY_PASSWORD"
|
"-Djib.to.auth.password=$DOCKER_REGISTRY_PASSWORD"
|
||||||
|
|
||||||
@ -45,20 +49,13 @@
|
|||||||
image:
|
image:
|
||||||
name: gcr.io/kaniko-project/executor:v1.7.0-debug
|
name: gcr.io/kaniko-project/executor:v1.7.0-debug
|
||||||
entrypoint: [ "" ]
|
entrypoint: [ "" ]
|
||||||
stage: package
|
<<: *container-publish-common
|
||||||
rules:
|
|
||||||
- if: $CI_COMMIT_TAG
|
|
||||||
variables:
|
variables:
|
||||||
DOCKER_REGISTRY: $CI_REGISTRY_IMAGE
|
<<: *container-publish-common-variables
|
||||||
DOCKER_REGISTRY_USER: $CI_REGISTRY_USER
|
|
||||||
DOCKER_REGISTRY_PASSWORD: $CI_REGISTRY_PASSWORD
|
|
||||||
PROJECT_DIR: $CI_PROJECT_DIR
|
PROJECT_DIR: $CI_PROJECT_DIR
|
||||||
DOCKERFILE_LOCATION: $CI_PROJECT_DIR/Dockerfile
|
DOCKERFILE_LOCATION: $CI_PROJECT_DIR/Dockerfile
|
||||||
CONTEXT_LOCATION: $CI_PROJECT_DIR
|
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:
|
script:
|
||||||
- mkdir -p /kaniko/.docker
|
- mkdir -p /kaniko/.docker
|
||||||
- echo "{\"auths\":{\"$DOCKER_REGISTRY\":{\"username\":\"$DOCKER_REGISTRY_USER\",\"password\":\"$DOCKER_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
|
- 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,16 +4,22 @@
|
|||||||
|
|
||||||
Baut mithilfe von jib oder kaniko ein Docker Image und läd das Image in der Docker Registry des Projekts hoch.
|
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.
|
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
|
.Variables
|
||||||
|===
|
|===
|
||||||
|Name |Description | Default Value
|
|Name |Description | Default Value
|
||||||
|MVN_VERSION | Bestimmt, ob die version von MAVEN gesetzt werden soll.
|
|MVN_VERSION | Bestimmt, ob die version von MAVEN gesetzt werden soll.
|
||||||
Falls das Projekt aus mehreren Poms besteht, kann `before_script:` benutzt werden. | "true"
|
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
|
.sonar-template
|
||||||
[source, yaml]
|
[source,yaml]
|
||||||
----
|
----
|
||||||
include::{sourcedir}/container-publish.gitlab-ci.yml[]
|
include::{sourcedir}/container-publish.gitlab-ci.yml[]
|
||||||
----
|
----
|
||||||
Loading…
Reference in New Issue
Block a user