diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a8f9347d5954f822023c7e7b4cc558a28d736499..0839c35e4aec674ad601671aaf1115fe187c3b35 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -40,52 +40,77 @@ verify: script: - mvn verify $MAVEN_CLI_OPTS +test-helm: + stage: test + before_script: + - apk add --no-cache helm git + - helm plugin install https://github.com/helm-unittest/helm-unittest.git + script: + - ./run_helm_test.sh + .get-version: before_script: - export PROJECT_VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout $MAVEN_CLI_OPTS) - export PROJECT_ARTIFACTID=$(mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout $MAVEN_CLI_OPTS) - - export SNAPSHOT_TAG="${CI_COMMIT_BRANCH}-${PROJECT_VERSION}-${CI_COMMIT_SHORT_SHA}" - - export MERGE_REQUEST_TAG="MR-${CI_MERGE_REQUEST_IID}-${PROJECT_VERSION}" - export NEXUS_IMAGE_PREFIX="docker.ozg-sh.de/${PROJECT_ARTIFACTID}" + - export MERGE_REQUEST_TAG="MR-${CI_MERGE_REQUEST_IID}-${PROJECT_VERSION}" + - export SNAPSHOT_TAG="${CI_COMMIT_BRANCH}-${PROJECT_VERSION}" .publish-helm-chart: variables: - - HELMCHART_NAME: Intelliform-Adapter - NEXUS_HELM_URL: https://nexus.ozg-sh.de/service/rest/v1/components?repository= + before_script: + - apk add --no-cache helm curl script: - - ./run_helm_test.sh - - cd 'src/main/helm' - - sh "helm package --version=${HELM_CHART_VERSION} ." - - helm package helm-chart - - curl -u ${NEXUS_USER}:${NEXUS_PASSWORD} ${NEXUS_HELM_URL}${HELM_REPO} -F file=@'''+${HELMCHART_NAME}+'''-'''+${HELM_CHART_VERSION}+'''.tgz - rules: - - when: never # The runner does not support helm yet + - helm package --version=${HELM_CHART_VERSION} src/main/helm + - curl -u ${NEXUS_USER}:${NEXUS_PASSWORD} ${NEXUS_HELM_URL}${NEXUS_HELM_REPO_NAME} -F file=@${PROJECT_ARTIFACTID}-${HELM_CHART_VERSION}.tgz # Merge request jobs push-merge-request-image-gitlab: stage: publish extends: .get-version script: - - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:${MERGE_REQUEST_TAG}" + - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:${MERGE_REQUEST_TAG},${CI_REGISTRY_IMAGE}:${MERGE_REQUEST_TAG}-${CI_COMMIT_SHORT_SHA}" - mvn deploy -Pgitlab-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + when: manual push-merge-request-image-nexus: stage: publish extends: .get-version script: - - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:${MERGE_REQUEST_TAG}" + - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:${MERGE_REQUEST_TAG},${NEXUS_IMAGE_PREFIX}:${MERGE_REQUEST_TAG}-${CI_COMMIT_SHORT_SHA}" - mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS rules: - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + when: manual + +push-merge-request-helm-nexus: + stage: publish + variables: + NEXUS_HELM_REPO_NAME: ozg-base-apps-snapshot + before_script: + - !reference [.get-version, before_script] + - !reference [.publish-helm-chart, before_script] + script: + - export HELM_CHART_VERSION=${PROJECT_VERSION}-MR-${CI_MERGE_REQUEST_IID} + - !reference [.publish-helm-chart, script] + - export HELM_CHART_VERSION=${PROJECT_VERSION}-MR-${CI_MERGE_REQUEST_IID}-${CI_COMMIT_SHORT_SHA} + - !reference [.publish-helm-chart, script] + rules: + - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + when: manual + artifacts: + paths: + - "*.tgz" # Snapshot jobs push-snapshot-image-gitlab: stage: publish extends: .get-version script: - - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:${SNAPSHOT_TAG},${CI_REGISTRY_IMAGE}:snapshot-latest" + - export IMAGE_TAGS="${CI_REGISTRY_IMAGE}:${SNAPSHOT_TAG},${CI_REGISTRY_IMAGE}:${SNAPSHOT_TAG}-${CI_COMMIT_SHORT_SHA},${CI_REGISTRY_IMAGE}:snapshot-latest" - mvn deploy -Pgitlab-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS only: - main @@ -94,22 +119,28 @@ push-snapshot-image-nexus: stage: publish extends: .get-version script: - - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:${SNAPSHOT_TAG},${NEXUS_IMAGE_PREFIX}:snapshot-latest" + - export IMAGE_TAGS="${NEXUS_IMAGE_PREFIX}:${SNAPSHOT_TAG},${NEXUS_IMAGE_PREFIX}:${SNAPSHOT_TAG}-${CI_COMMIT_SHORT_SHA},${NEXUS_IMAGE_PREFIX}:snapshot-latest" - mvn deploy -Pnexus-deploy $MAVEN_DEPLOY_CLI_OPTS $MAVEN_CLI_OPTS only: - main -push-snapshot-helm-chart-nexus: +push-snapshot-helm-nexus: stage: publish - extends: .publish-helm-chart variables: - HELM_REPO: ozg-base-apps-snapshot + NEXUS_HELM_REPO_NAME: ozg-base-apps-snapshot before_script: - - export HELM_CHART_VERSION="$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout $MAVEN_CLI_OPTS)-${CI_COMMIT_BRANCH}-${CI_COMMIT_SHORT_SHA}" - # only: - # - main - rules: - - when: never # The runner does not support helm yet + - !reference [.get-version, before_script] + - !reference [.publish-helm-chart, before_script] + script: + - export HELM_CHART_VERSION=${PROJECT_VERSION}-main + - !reference [ .publish-helm-chart, script ] + - export HELM_CHART_VERSION=${PROJECT_VERSION}-main-${CI_COMMIT_SHORT_SHA} + - !reference [.publish-helm-chart, script] + only: + - main + artifacts: + paths: + - "*.tgz" # Release jobs push-release-image-gitlab: @@ -132,13 +163,18 @@ push-release-image-nexus: rules: - if: $CI_COMMIT_TAG -push-release-helm-chart-nexus: +push-release-helm-nexus: stage: publish - extends: .publish-helm-chart variables: - HELM_REPO: ozg-base-apps + NEXUS_HELM_REPO_NAME: ozg-base-apps before_script: - - export HELM_CHART_VERSION=$CI_COMMIT_TAG + - !reference [.get-version, before_script] + - !reference [.publish-helm-chart, before_script] + script: + - export HELM_CHART_VERSION=${PROJECT_VERSION} + - !reference [.publish-helm-chart, script] rules: - if: $CI_COMMIT_TAG - - when: never # The runner does not support helm yet + artifacts: + paths: + - "*.tgz"