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