diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 77ed03fcb1a3eede5a87e807ab6c9a927a232c20..d4f49d083aa232ff0951d30a74722e9bc1f06207 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -36,6 +36,7 @@ stages: - test - docs - release + - deploy - verify - scan @@ -407,12 +408,24 @@ release-images: stage: release image: docker:${DOCKER_VERSION}-dind dependencies: - - test-metadata-service - - test-data-service - test-analyse-service + - test-auth-service-init + - test-data-service + - test-lib + - test-metadata-service + - test-search-service + - test-search-service-init + - test-ui + variables: + BUILD_VERSION: "" only: refs: + - dev - /^release-.*/ + rules: + - if: $CI_COMMIT_REF_NAME == dev + variables: + BUILD_VERSION: "+git.${CI_COMMIT_SHORT_SHA}" before_script: - "docker logout ${CI_REGISTRY_URL}" - "echo ${CI_REGISTRY_PASSWORD} | docker login --username ${CI_REGISTRY_USER} --password-stdin ${CI_REGISTRY_URL}" @@ -527,6 +540,27 @@ verify-dist: script: - "curl -v --output /dev/null --fail https://www.ifs.tuwien.ac.at/infrastructures/dbrepo/${APP_VERSION}/dist.tar.gz" +deploy-staging: + image: docker.io/alpine:${ALPINE_VERSION} + stage: deploy + only: + refs: + - dev + variables: + KUBECONFIG: ./kubecfg + environment: + name: staging/datalab + url: ${CI_ENV_STAGING_URL} + before_script: + - apk add --no-cache helm kubectl make + - echo ${CI_K8S_CONFIG} | base64 -d > ./kubecfg + - make build-helm + - helm -n ${CI_ENV_STAGING_NAMESPACE} uninstall ${CI_ENV_STAGING_RELEASE_NAME} --ignore-not-found + - kubectl -n ${CI_ENV_STAGING_NAMESPACE} delete pvc --all + - echo "${CI_K8S_VALUES}" | base64 -d > ./values.yaml + script: + - helm -n ${CI_ENV_STAGING_NAMESPACE} upgrade --install ${CI_ENV_STAGING_RELEASE_NAME} ./build/dbrepo-${CHART_VERSION}.tgz --create-namespace -f ./values.yaml + scan-sonarqube: image: sonarsource/sonar-scanner-cli:${SONARQUBE_VERSION} stage: scan diff --git a/make/rel.mk b/make/rel.mk index 0c4b2bb193f3618e3098d13fd283882701e29a20..c98668f08b9bc79f23be811f3fdfa0f753ca3d24 100644 --- a/make/rel.mk +++ b/make/rel.mk @@ -2,29 +2,29 @@ .PHONY: tag-images tag-images: build-images ## Tag the docker images. - docker tag dbrepo-analyse-service:latest "${REPOSITORY_URL}/analyse-service:${APP_VERSION}" - docker tag dbrepo-dashboard-service:latest "${REPOSITORY_URL}/dashboard-service:${APP_VERSION}" - docker tag dbrepo-ui:latest "${REPOSITORY_URL}/ui:${APP_VERSION}" - docker tag dbrepo-data-service:latest "${REPOSITORY_URL}/data-service:${APP_VERSION}" - docker tag dbrepo-auth-service-init:latest "${REPOSITORY_URL}/auth-service-init:${APP_VERSION}" - docker tag dbrepo-metadata-service:latest "${REPOSITORY_URL}/metadata-service:${APP_VERSION}" - docker tag dbrepo-search-db:latest "${REPOSITORY_URL}/search-db:${APP_VERSION}" - docker tag dbrepo-search-service:latest "${REPOSITORY_URL}/search-service:${APP_VERSION}" - docker tag dbrepo-search-service-init:latest "${REPOSITORY_URL}/search-service-init:${APP_VERSION}" - docker tag dbrepo-storage-service-init:latest "${REPOSITORY_URL}/storage-service-init:${APP_VERSION}" + docker tag dbrepo-analyse-service:latest "${REPOSITORY_URL}/analyse-service:${APP_VERSION}${BUILD_VERSION}" + docker tag dbrepo-dashboard-service:latest "${REPOSITORY_URL}/dashboard-service:${APP_VERSION}${BUILD_VERSION}" + docker tag dbrepo-ui:latest "${REPOSITORY_URL}/ui:${APP_VERSION}${BUILD_VERSION}" + docker tag dbrepo-data-service:latest "${REPOSITORY_URL}/data-service:${APP_VERSION}${BUILD_VERSION}" + docker tag dbrepo-auth-service-init:latest "${REPOSITORY_URL}/auth-service-init:${APP_VERSION}${BUILD_VERSION}" + docker tag dbrepo-metadata-service:latest "${REPOSITORY_URL}/metadata-service:${APP_VERSION}${BUILD_VERSION}" + docker tag dbrepo-search-db:latest "${REPOSITORY_URL}/search-db:${APP_VERSION}${BUILD_VERSION}" + docker tag dbrepo-search-service:latest "${REPOSITORY_URL}/search-service:${APP_VERSION}${BUILD_VERSION}" + docker tag dbrepo-search-service-init:latest "${REPOSITORY_URL}/search-service-init:${APP_VERSION}${BUILD_VERSION}" + docker tag dbrepo-storage-service-init:latest "${REPOSITORY_URL}/storage-service-init:${APP_VERSION}${BUILD_VERSION}" .PHONY: release-images release-images: tag-images ## Release the docker images. - docker push "${REPOSITORY_URL}/analyse-service:${APP_VERSION}" - docker push "${REPOSITORY_URL}/dashboard-service:${APP_VERSION}" - docker push "${REPOSITORY_URL}/ui:${APP_VERSION}" - docker push "${REPOSITORY_URL}/data-service:${APP_VERSION}" - docker push "${REPOSITORY_URL}/auth-service-init:${APP_VERSION}" - docker push "${REPOSITORY_URL}/search-db:${APP_VERSION}" - docker push "${REPOSITORY_URL}/metadata-service:${APP_VERSION}" - docker push "${REPOSITORY_URL}/search-service:${APP_VERSION}" - docker push "${REPOSITORY_URL}/search-service-init:${APP_VERSION}" - docker push "${REPOSITORY_URL}/storage-service-init:${APP_VERSION}" + docker push "${REPOSITORY_URL}/analyse-service:${APP_VERSION}${BUILD_VERSION}" + docker push "${REPOSITORY_URL}/dashboard-service:${APP_VERSION}${BUILD_VERSION}" + docker push "${REPOSITORY_URL}/ui:${APP_VERSION}${BUILD_VERSION}" + docker push "${REPOSITORY_URL}/data-service:${APP_VERSION}${BUILD_VERSION}" + docker push "${REPOSITORY_URL}/auth-service-init:${APP_VERSION}${BUILD_VERSION}" + docker push "${REPOSITORY_URL}/search-db:${APP_VERSION}${BUILD_VERSION}" + docker push "${REPOSITORY_URL}/metadata-service:${APP_VERSION}${BUILD_VERSION}" + docker push "${REPOSITORY_URL}/search-service:${APP_VERSION}${BUILD_VERSION}" + docker push "${REPOSITORY_URL}/search-service-init:${APP_VERSION}${BUILD_VERSION}" + docker push "${REPOSITORY_URL}/storage-service-init:${APP_VERSION}${BUILD_VERSION}" .PHONY: release-helm release-helm: gen-helm-doc ## Release the DBRepo and DBRepo MariaDB Galera Helm charts.