From 78223873ddbb9a18265f0a3972e9e234a83f3042 Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Thu, 7 Mar 2024 16:42:54 +0000 Subject: [PATCH] Updated CI/CD --- .gitlab-ci.yml | 1003 +++++++++++++++++++++++++----------------------- 1 file changed, 517 insertions(+), 486 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bb1844c55e..b655115b07 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -15,495 +15,526 @@ cache: key: ${CI_BUILD_REF_NAME} paths: - final/ + - .m2/ stages: -# - build -# - test -# - docs + - build + - test + - docs - release -# - scan - -#build-metadata-service: -# image: maven:3-openjdk-17 -# stage: build -# script: -# - "mvn -f ./dbrepo-metadata-service/pom.xml clean install -Dstyle.color=always -DskipTests" -# -#build-analyse-service: -# image: python:3.9-slim -# stage: build -# variables: -# PIPENV_PIPFILE: "./dbrepo-analyse-service/Pipfile" -# script: -# - "pip install pipenv" -# - "pipenv install gunicorn && pipenv install --dev --system --deploy" -# -#build-data-service: -# image: maven:3-openjdk-17 -# stage: build -# needs: -# - build-metadata-service -# script: -# - "mvn -f ./dbrepo-metadata-service/pom.xml clean install -Dstyle.color=always -DskipTests" -# - "mvn -f ./dbrepo-data-service/pom.xml clean package -Dstyle.color=always -DskipTests" -# -#build-frontend: -# image: node:14-alpine -# stage: build -# script: -# - "yarn config set network-timeout 600000 -g" -# - "yarn --cwd ./dbrepo-ui install --legacy-peer-deps" -# - "yarn --cwd ./dbrepo-ui run build" -# -#build-search-service: -# image: python:3.10-alpine -# stage: build -# script: -# - "pip install pipenv" -# - "cd dbrepo-search-service && pipenv install --system --deploy" -# -#build-docker: -# image: docker.io/docker:24-dind -# stage: build -# before_script: -# - echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY_URL -# script: -# - "cp .env.unix.example .env" -# - "docker build -t dbrepo-metadata-service:build --target build dbrepo-metadata-service" -# - "docker build -t dbrepo-data-service:build --target build dbrepo-data-service" -# - "docker compose build --parallel" -# -#build-helm: -# image: docker.io/docker:24-dind -# stage: build -# before_script: -# - echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY_URL -# script: -# - apk add sed helm curl -# - 'sed -i -e "s/^version:.*/version: \"${CHART_VERSION}\"/g" ./helm-charts/dbrepo/Chart.yaml' -# - 'sed -i -e "s/^appVersion:.*/appVersion: \"${APP_VERSION}\"/g" ./helm-charts/dbrepo/Chart.yaml' -# - find ./helm-charts -type f -exec sed -i -e "s/__CHARTVERSION__/${CHART_VERSION}/g" {} \; -# - helm package ./helm-charts/dbrepo --destination ./build -# -#test-metadata-service: -# image: maven:3-openjdk-17 -# stage: test -# needs: -# - build-metadata-service -# script: -# - "mvn -f ./dbrepo-metadata-service/pom.xml clean install -Dstyle.color=always -DskipTests" -# - "mvn -f ./dbrepo-metadata-service/pom.xml clean test -Dstyle.color=always verify" -# - "cat ./dbrepo-metadata-service/report/target/site/jacoco-aggregate/index.html | grep -o 'Total[^%]*%' | sed 's/<.*>/ /; s/Total/Jacoco Coverage Total:/'" -# artifacts: -# when: always -# paths: -# - ./dbrepo-metadata-service/report/target/site/jacoco-aggregate/ -# - ./dbrepo-metadata-service/rest-service/target/surefire-reports/ -# expire_in: 1 days -# reports: -# junit: ./dbrepo-metadata-service/rest-service/target/surefire-reports/TEST-*.xml -# coverage: '/Total.*?([0-9]{1,3})%/' -# -#test-data-service: -# image: maven:3-openjdk-17 -# stage: test -# needs: -# - build-data-service -# script: -# - "mvn -f ./dbrepo-metadata-service/pom.xml clean install -Dstyle.color=always -DskipTests" -# - "mvn -f ./dbrepo-data-service/pom.xml clean test verify -Dstyle.color=always" -# - "cat ./dbrepo-data-service/report/target/site/jacoco-aggregate/index.html | grep -o 'Total[^%]*%' | sed 's/<.*>/ /; s/Total/Jacoco Coverage Total:/'" -# artifacts: -# when: always -# paths: -# - ./dbrepo-data-service/report/target/site/jacoco-aggregate/ -# - ./dbrepo-data-service/rest-service/target/surefire-reports/ -# expire_in: 1 days -# reports: -# junit: ./dbrepo-data-service/rest-service/target/surefire-reports/TEST-*.xml -# coverage: '/Total.*?([0-9]{1,3})%/' -# -#test-analyse-service: -# image: python:3.9-slim -# stage: test -# variables: -# PIPENV_PIPFILE: "./dbrepo-analyse-service/Pipfile" -# needs: -# - build-analyse-service -# script: -# - "pip install pipenv" -# - "pipenv install gunicorn && pipenv install --dev --system --deploy" -# - cd ./dbrepo-analyse-service/ && coverage run -m pytest test/test_determine_dt.py test/test_determine_pk.py test/test_s3_client.py --junitxml=report.xml && coverage html --omit="test/*" && coverage report --omit="test/*" > ./coverage.txt -# - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'" -# artifacts: -# when: always -# paths: -# - ./dbrepo-analyse-service/report.xml -# - ./dbrepo-analyse-service/coverage.txt -# expire_in: 1 days -# reports: -# junit: ./dbrepo-analyse-service/report.xml -# coverage: '/TOTAL.*?([0-9]{1,3})%/' -# -#test-frontend: -# image: node:14-alpine -# stage: test -# needs: -# - build-frontend -# script: -# - "yarn --cwd ./dbrepo-ui install" -# - "yarn --cwd ./dbrepo-ui run test:unit || true" -# - "yarn --cwd ./dbrepo-ui run coverage || true" -# - "cat ./dbrepo-ui/coverage/cobertura-coverage.xml | grep -o 'line-rate=\"[0-9.]*' | head -1 || true" -# artifacts: -# when: always -# paths: -# - ./dbrepo-ui/coverage/ -# expire_in: 1 days -# reports: -# coverage_report: -# coverage_format: cobertura -# path: ./dbrepo-ui/coverage/cobertura-coverage.xml -# coverage: '/TOTAL.*?([0-9]{1,3})%/' -# -#scan-analyse-service: -# image: bitnami/trivy:latest -# stage: scan -# only: -# refs: -# - master -# - release-v1.4 -# allow_failure: true -# script: -# - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-analyse-service-report.json docker.io/dbrepo/analyse-service:latest -# - trivy image --insecure --exit-code 0 docker.io/dbrepo/analyse-service:latest -# - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/dbrepo/analyse-service:latest -# cache: -# paths: -# - .trivycache/ -# artifacts: -# when: always -# expire_in: 1 days -# reports: -# container_scanning: ./.trivy/trivy-analyse-service-report.json -# -#scan-authentication-service: -# image: bitnami/trivy:latest -# stage: scan -# only: -# refs: -# - master -# - release-v1.4 -# allow_failure: true -# script: -# - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-authentication-service-report.json docker.io/dbrepo/authentication-service:latest -# - trivy image --insecure --exit-code 0 docker.io/dbrepo/authentication-service:latest -# - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/dbrepo/authentication-service:latest -# cache: -# paths: -# - .trivycache/ -# artifacts: -# when: always -# expire_in: 1 days -# reports: -# container_scanning: ./.trivy/trivy-authentication-service-report.json -# -#scan-broker-service: -# image: bitnami/trivy:latest -# stage: scan -# only: -# refs: -# - master -# - release-v1.4 -# allow_failure: true -# script: -# - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-broker-service-report.json docker.io/dbrepo/broker-service:latest -# - trivy image --insecure --exit-code 0 docker.io/dbrepo/broker-service:latest -# - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/dbrepo/broker-service:latest -# cache: -# paths: -# - .trivycache/ -# artifacts: -# when: always -# expire_in: 1 days -# reports: -# container_scanning: ./.trivy/trivy-broker-service-report.json -# -#scan-gateway-service: -# image: bitnami/trivy:latest -# stage: scan -# only: -# refs: -# - master -# - release-v1.4 -# allow_failure: true -# script: -# - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-gateway-service-report.json docker.io/nginx:1.25.0-alpine-slim -# - trivy image --insecure --exit-code 0 docker.io/nginx:1.25.0-alpine-slim -# - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/nginx:1.25.0-alpine-slim -# cache: -# paths: -# - .trivycache/ -# artifacts: -# when: always -# expire_in: 1 days -# reports: -# container_scanning: ./.trivy/trivy-gateway-service-report.json -# -#scan-metadata-service: -# image: bitnami/trivy:latest -# stage: scan -# only: -# refs: -# - master -# - release-v1.4 -# allow_failure: true -# script: -# - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-metadata-service-report.json docker.io/dbrepo/metadata-service:latest -# - trivy image --insecure --exit-code 0 docker.io/dbrepo/metadata-service:latest -# - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/dbrepo/metadata-service:latest -# cache: -# paths: -# - .trivycache/ -# artifacts: -# when: always -# expire_in: 1 days -# reports: -# container_scanning: ./.trivy/trivy-metadata-service-report.json -# -#scan-data-service: -# image: bitnami/trivy:latest -# stage: scan -# only: -# refs: -# - master -# - release-v1.4 -# allow_failure: true -# script: -# - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-data-service-report.json docker.io/dbrepo/data-service:latest -# - trivy image --insecure --exit-code 0 docker.io/dbrepo/data-service:latest -# - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/dbrepo/data-service:latest -# cache: -# paths: -# - .trivycache/ -# artifacts: -# when: always -# expire_in: 1 days -# reports: -# container_scanning: ./.trivy/trivy-data-service-report.json -# -#scan-search-db: -# image: bitnami/trivy:latest -# stage: scan -# only: -# refs: -# - master -# - release-v1.4 -# allow_failure: true -# script: -# - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-search-db-report.json docker.io/dbrepo/search-db:latest -# - trivy image --insecure --exit-code 0 docker.io/dbrepo/search-db:latest -# - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/dbrepo/search-db:latest -# cache: -# paths: -# - .trivycache/ -# artifacts: -# when: always -# expire_in: 1 days -# reports: -# container_scanning: ./.trivy/trivy-search-db-report.json -# -#scan-search-dashboard: -# image: bitnami/trivy:latest -# stage: scan -# only: -# refs: -# - master -# - release-v1.4 -# allow_failure: true -# script: -# - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-search-dashboard-report.json docker.io/opensearchproject/opensearch-dashboards:2.10.0 -# - trivy image --insecure --exit-code 0 docker.io/opensearchproject/opensearch-dashboards:2.10.0 -# - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/opensearchproject/opensearch-dashboards:2.10.0 -# cache: -# paths: -# - .trivycache/ -# artifacts: -# when: always -# expire_in: 1 days -# reports: -# container_scanning: ./.trivy/trivy-search-dashboard-report.json -# -#scan-search-db-init: -# image: bitnami/trivy:latest -# stage: scan -# only: -# refs: -# - master -# - release-v1.4 -# allow_failure: true -# script: -# - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-search-db-init-report.json docker.io/dbrepo/search-db-init:latest -# - trivy image --insecure --exit-code 0 docker.io/dbrepo/search-db-init:latest -# - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/dbrepo/search-db-init:latest -# cache: -# paths: -# - .trivycache/ -# artifacts: -# when: always -# expire_in: 1 days -# reports: -# container_scanning: ./.trivy/trivy-search-db-init-report.json -# -#scan-data-db: -# image: bitnami/trivy:latest -# stage: scan -# only: -# refs: -# - master -# - release-v1.4 -# allow_failure: true -# script: -# - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-data-db-report.json docker.io/bitnami/mariadb:11.2.2-debian-11-r0 -# - trivy image --insecure --exit-code 0 docker.io/bitnami/mariadb:11.2.2-debian-11-r0 -# - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/bitnami/mariadb:11.2.2-debian-11-r0 -# cache: -# paths: -# - .trivycache/ -# artifacts: -# when: always -# expire_in: 1 days -# reports: -# container_scanning: ./.trivy/trivy-data-db-report.json -# -#scan-metadata-db: -# image: bitnami/trivy:latest -# stage: scan -# only: -# refs: -# - master -# - release-v1.4 -# allow_failure: true -# script: -# - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-metadata-db-report.json docker.io/dbrepo/metadata-db:latest -# - trivy image --insecure --exit-code 0 docker.io/dbrepo/metadata-db:latest -# - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/dbrepo/metadata-db:latest -# cache: -# paths: -# - .trivycache/ -# artifacts: -# when: always -# expire_in: 1 days -# reports: -# container_scanning: ./.trivy/trivy-metadata-db-report.json -# -#scan-ui: -# image: bitnami/trivy:latest -# stage: scan -# only: -# refs: -# - master -# - release-v1.4 -# allow_failure: true -# script: -# - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-ui-report.json docker.io/dbrepo/ui:latest -# - trivy image --insecure --exit-code 0 docker.io/dbrepo/ui:latest -# - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/dbrepo/ui:latest -# cache: -# paths: -# - .trivycache/ -# artifacts: -# when: always -# expire_in: 1 days -# reports: -# container_scanning: ./.trivy/trivy-ui-report.json -# -#scan-storage-service: -# image: bitnami/trivy:latest -# stage: scan -# only: -# refs: -# - master -# - release-v1.4 -# allow_failure: true -# script: -# - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-storage-service-report.json docker.io/chrislusf/seaweedfs:3.59 -# - trivy image --insecure --exit-code 0 docker.io/chrislusf/seaweedfs:3.59 -# - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/chrislusf/seaweedfs:3.59 -# cache: -# paths: -# - .trivycache/ -# artifacts: -# when: always -# expire_in: 1 days -# reports: -# container_scanning: ./.trivy/trivy-storage-service-report.json -# -#scan-storage-service-init: -# image: bitnami/trivy:latest -# stage: scan -# only: -# refs: -# - master -# - release-v1.4 -# allow_failure: true -# script: -# - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-storage-service-init-report.json docker.io/dbrepo/storage-service-init:latest -# - trivy image --insecure --exit-code 0 docker.io/dbrepo/storage-service-init:latest -# - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/dbrepo/storage-service-init:latest -# cache: -# paths: -# - .trivycache/ -# artifacts: -# when: always -# expire_in: 1 days -# reports: -# container_scanning: ./.trivy/trivy-storage-service-init-report.json -# -#docs-registry: -# stage: docs -# image: docker.io/python:3.11-slim -# only: -# refs: -# - /^release-.*/ -# script: -# - pip install -r ./requirements.txt -# - python3 .docs/docker/release.py - -#release-images: -# stage: release -# image: docker:24-dind -# needs: -# - test-metadata-service -# - test-data-service -# - test-analyse-service -# - test-frontend -# only: -# refs: -# - /^release-.*/ -# before_script: -# - echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY_URL -# - echo "$CI_REGISTRY2_PASSWORD" | docker login --username "$CI_REGISTRY2_USER" --password-stdin $CI_REGISTRY2_URL -# script: -# - "ifconfig eth0 mtu 1450 up" -# - "apk add make bash" -# - "TAG=${APP_VERSION} make release" - -#release-chart: -# stage: release -# image: docker:24-dind -# only: -# refs: -# - /^release-.*/ -# before_script: -# - echo "$CI_REGISTRY2_PASSWORD" | docker login --username "$CI_REGISTRY2_USER" --password-stdin $CI_REGISTRY2_URL -# script: -# - apk add sed helm curl -# - 'sed -i -e "s/^version:.*/version: \"${CHART_VERSION}\"/g" ./helm-charts/dbrepo/Chart.yaml' -# - 'sed -i -e "s/^appVersion:.*/appVersion: \"${APP_VERSION}\"/g" ./helm-charts/dbrepo/Chart.yaml' -# - find ./helm-charts -type f -exec sed -i -e "s/__CHARTVERSION__/${CHART_VERSION}/g" {} \; -# - helm package ./helm-charts/dbrepo --destination ./build -# - helm push "./build/dbrepo-${CHART_VERSION}.tgz" "oci://${CI_REGISTRY2_URL}/helm" + - scan + +build-metadata-service: + image: maven:3-openjdk-17 + stage: build + only: + refs: + - dev + - master + script: + - "mvn -f ./dbrepo-metadata-service/pom.xml clean install -Dstyle.color=always -DskipTests" + +build-analyse-service: + image: python:3.9-slim + stage: build + only: + refs: + - dev + - master + variables: + PIPENV_PIPFILE: "./dbrepo-analyse-service/Pipfile" + script: + - "pip install pipenv" + - "pipenv install gunicorn && pipenv install --dev --system --deploy" + +build-data-service: + image: maven:3-openjdk-17 + stage: build + only: + refs: + - dev + - master + needs: + - build-metadata-service + script: + - "mvn -f ./dbrepo-metadata-service/pom.xml clean install -Dstyle.color=always -DskipTests" + - "mvn -f ./dbrepo-data-service/pom.xml clean package -Dstyle.color=always -DskipTests" + +build-frontend: + image: node:14-alpine + stage: build + only: + refs: + - dev + - master + script: + - "yarn config set network-timeout 600000 -g" + - "yarn --cwd ./dbrepo-ui install --legacy-peer-deps" + - "yarn --cwd ./dbrepo-ui run build" + +build-search-service: + image: python:3.10-alpine + stage: build + only: + refs: + - dev + - master + script: + - "pip install pipenv" + - "cd dbrepo-search-service && pipenv install --system --deploy" + +build-docker: + image: docker.io/docker:24-dind + stage: build + only: + refs: + - dev + - master + before_script: + - echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY_URL + script: + - "cp .env.unix.example .env" + - "docker build -t dbrepo-metadata-service:build --target build dbrepo-metadata-service" + - "docker build -t dbrepo-data-service:build --target build dbrepo-data-service" + - "docker compose build --parallel" + +build-helm: + image: docker.io/docker:24-dind + stage: build + only: + refs: + - dev + - master + before_script: + - echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY_URL + script: + - apk add sed helm curl + - 'sed -i -e "s/^version:.*/version: \"${CHART_VERSION}\"/g" ./helm-charts/dbrepo/Chart.yaml' + - 'sed -i -e "s/^appVersion:.*/appVersion: \"${APP_VERSION}\"/g" ./helm-charts/dbrepo/Chart.yaml' + - find ./helm-charts -type f -exec sed -i -e "s/__CHARTVERSION__/${CHART_VERSION}/g" {} \; + - helm package ./helm-charts/dbrepo --destination ./build + +test-metadata-service: + image: maven:3-openjdk-17 + stage: test + only: + refs: + - dev + - master + needs: + - build-metadata-service + script: + - "mvn -f ./dbrepo-metadata-service/pom.xml clean install -Dstyle.color=always -DskipTests" + - "mvn -f ./dbrepo-metadata-service/pom.xml clean test -Dstyle.color=always verify" + - "cat ./dbrepo-metadata-service/report/target/site/jacoco-aggregate/index.html | grep -o 'Total[^%]*%' | sed 's/<.*>/ /; s/Total/Jacoco Coverage Total:/'" + artifacts: + when: always + paths: + - ./dbrepo-metadata-service/report/target/site/jacoco-aggregate/ + - ./dbrepo-metadata-service/rest-service/target/surefire-reports/ + expire_in: 1 days + reports: + junit: ./dbrepo-metadata-service/rest-service/target/surefire-reports/TEST-*.xml + coverage: '/Total.*?([0-9]{1,3})%/' + +test-data-service: + image: maven:3-openjdk-17 + stage: test + only: + refs: + - dev + - master + needs: + - build-data-service + script: + - "mvn -f ./dbrepo-metadata-service/pom.xml clean install -Dstyle.color=always -DskipTests" + - "mvn -f ./dbrepo-data-service/pom.xml clean test verify -Dstyle.color=always" + - "cat ./dbrepo-data-service/report/target/site/jacoco-aggregate/index.html | grep -o 'Total[^%]*%' | sed 's/<.*>/ /; s/Total/Jacoco Coverage Total:/'" + artifacts: + when: always + paths: + - ./dbrepo-data-service/report/target/site/jacoco-aggregate/ + - ./dbrepo-data-service/rest-service/target/surefire-reports/ + expire_in: 1 days + reports: + junit: ./dbrepo-data-service/rest-service/target/surefire-reports/TEST-*.xml + coverage: '/Total.*?([0-9]{1,3})%/' + +test-analyse-service: + image: python:3.9-slim + stage: test + only: + refs: + - dev + - master + variables: + PIPENV_PIPFILE: "./dbrepo-analyse-service/Pipfile" + needs: + - build-analyse-service + script: + - "pip install pipenv" + - "pipenv install gunicorn && pipenv install --dev --system --deploy" + - cd ./dbrepo-analyse-service/ && coverage run -m pytest test/test_determine_dt.py test/test_determine_pk.py test/test_s3_client.py --junitxml=report.xml && coverage html --omit="test/*" && coverage report --omit="test/*" > ./coverage.txt + - "cat ./coverage.txt | grep -o 'TOTAL[^%]*%'" + artifacts: + when: always + paths: + - ./dbrepo-analyse-service/report.xml + - ./dbrepo-analyse-service/coverage.txt + expire_in: 1 days + reports: + junit: ./dbrepo-analyse-service/report.xml + coverage: '/TOTAL.*?([0-9]{1,3})%/' + +test-frontend: + image: node:14-alpine + stage: test + only: + refs: + - dev + - master + needs: + - build-frontend + script: + - "yarn --cwd ./dbrepo-ui install" + - "yarn --cwd ./dbrepo-ui run test:unit || true" + - "yarn --cwd ./dbrepo-ui run coverage || true" + - "cat ./dbrepo-ui/coverage/cobertura-coverage.xml | grep -o 'line-rate=\"[0-9.]*' | head -1 || true" + artifacts: + when: always + paths: + - ./dbrepo-ui/coverage/ + expire_in: 1 days + reports: + coverage_report: + coverage_format: cobertura + path: ./dbrepo-ui/coverage/cobertura-coverage.xml + coverage: '/TOTAL.*?([0-9]{1,3})%/' + +scan-analyse-service: + image: bitnami/trivy:latest + stage: scan + only: + refs: + - master + allow_failure: true + script: + - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-analyse-service-report.json docker.io/dbrepo/analyse-service:latest + - trivy image --insecure --exit-code 0 docker.io/dbrepo/analyse-service:latest + - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/dbrepo/analyse-service:latest + cache: + paths: + - .trivycache/ + artifacts: + when: always + expire_in: 1 days + reports: + container_scanning: ./.trivy/trivy-analyse-service-report.json + +scan-authentication-service: + image: bitnami/trivy:latest + stage: scan + only: + refs: + - master + allow_failure: true + script: + - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-authentication-service-report.json docker.io/dbrepo/authentication-service:latest + - trivy image --insecure --exit-code 0 docker.io/dbrepo/authentication-service:latest + - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/dbrepo/authentication-service:latest + cache: + paths: + - .trivycache/ + artifacts: + when: always + expire_in: 1 days + reports: + container_scanning: ./.trivy/trivy-authentication-service-report.json + +scan-broker-service: + image: bitnami/trivy:latest + stage: scan + only: + refs: + - master + allow_failure: true + script: + - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-broker-service-report.json docker.io/dbrepo/broker-service:latest + - trivy image --insecure --exit-code 0 docker.io/dbrepo/broker-service:latest + - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/dbrepo/broker-service:latest + cache: + paths: + - .trivycache/ + artifacts: + when: always + expire_in: 1 days + reports: + container_scanning: ./.trivy/trivy-broker-service-report.json + +scan-gateway-service: + image: bitnami/trivy:latest + stage: scan + only: + refs: + - master + allow_failure: true + script: + - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-gateway-service-report.json docker.io/nginx:1.25.0-alpine-slim + - trivy image --insecure --exit-code 0 docker.io/nginx:1.25.0-alpine-slim + - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/nginx:1.25.0-alpine-slim + cache: + paths: + - .trivycache/ + artifacts: + when: always + expire_in: 1 days + reports: + container_scanning: ./.trivy/trivy-gateway-service-report.json + +scan-metadata-service: + image: bitnami/trivy:latest + stage: scan + only: + refs: + - master + allow_failure: true + script: + - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-metadata-service-report.json docker.io/dbrepo/metadata-service:latest + - trivy image --insecure --exit-code 0 docker.io/dbrepo/metadata-service:latest + - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/dbrepo/metadata-service:latest + cache: + paths: + - .trivycache/ + artifacts: + when: always + expire_in: 1 days + reports: + container_scanning: ./.trivy/trivy-metadata-service-report.json + +scan-data-service: + image: bitnami/trivy:latest + stage: scan + only: + refs: + - master + allow_failure: true + script: + - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-data-service-report.json docker.io/dbrepo/data-service:latest + - trivy image --insecure --exit-code 0 docker.io/dbrepo/data-service:latest + - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/dbrepo/data-service:latest + cache: + paths: + - .trivycache/ + artifacts: + when: always + expire_in: 1 days + reports: + container_scanning: ./.trivy/trivy-data-service-report.json + +scan-search-db: + image: bitnami/trivy:latest + stage: scan + only: + refs: + - master + allow_failure: true + script: + - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-search-db-report.json docker.io/dbrepo/search-db:latest + - trivy image --insecure --exit-code 0 docker.io/dbrepo/search-db:latest + - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/dbrepo/search-db:latest + cache: + paths: + - .trivycache/ + artifacts: + when: always + expire_in: 1 days + reports: + container_scanning: ./.trivy/trivy-search-db-report.json + +scan-search-dashboard: + image: bitnami/trivy:latest + stage: scan + only: + refs: + - master + allow_failure: true + script: + - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-search-dashboard-report.json docker.io/opensearchproject/opensearch-dashboards:2.10.0 + - trivy image --insecure --exit-code 0 docker.io/opensearchproject/opensearch-dashboards:2.10.0 + - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/opensearchproject/opensearch-dashboards:2.10.0 + cache: + paths: + - .trivycache/ + artifacts: + when: always + expire_in: 1 days + reports: + container_scanning: ./.trivy/trivy-search-dashboard-report.json + +scan-search-db-init: + image: bitnami/trivy:latest + stage: scan + only: + refs: + - master + allow_failure: true + script: + - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-search-db-init-report.json docker.io/dbrepo/search-db-init:latest + - trivy image --insecure --exit-code 0 docker.io/dbrepo/search-db-init:latest + - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/dbrepo/search-db-init:latest + cache: + paths: + - .trivycache/ + artifacts: + when: always + expire_in: 1 days + reports: + container_scanning: ./.trivy/trivy-search-db-init-report.json + +scan-data-db: + image: bitnami/trivy:latest + stage: scan + only: + refs: + - master + allow_failure: true + script: + - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-data-db-report.json docker.io/bitnami/mariadb:11.2.2-debian-11-r0 + - trivy image --insecure --exit-code 0 docker.io/bitnami/mariadb:11.2.2-debian-11-r0 + - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/bitnami/mariadb:11.2.2-debian-11-r0 + cache: + paths: + - .trivycache/ + artifacts: + when: always + expire_in: 1 days + reports: + container_scanning: ./.trivy/trivy-data-db-report.json + +scan-metadata-db: + image: bitnami/trivy:latest + stage: scan + only: + refs: + - master + allow_failure: true + script: + - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-metadata-db-report.json docker.io/dbrepo/metadata-db:latest + - trivy image --insecure --exit-code 0 docker.io/dbrepo/metadata-db:latest + - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/dbrepo/metadata-db:latest + cache: + paths: + - .trivycache/ + artifacts: + when: always + expire_in: 1 days + reports: + container_scanning: ./.trivy/trivy-metadata-db-report.json + +scan-ui: + image: bitnami/trivy:latest + stage: scan + only: + refs: + - master + allow_failure: true + script: + - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-ui-report.json docker.io/dbrepo/ui:latest + - trivy image --insecure --exit-code 0 docker.io/dbrepo/ui:latest + - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/dbrepo/ui:latest + cache: + paths: + - .trivycache/ + artifacts: + when: always + expire_in: 1 days + reports: + container_scanning: ./.trivy/trivy-ui-report.json + +scan-storage-service: + image: bitnami/trivy:latest + stage: scan + only: + refs: + - master + allow_failure: true + script: + - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-storage-service-report.json docker.io/chrislusf/seaweedfs:3.59 + - trivy image --insecure --exit-code 0 docker.io/chrislusf/seaweedfs:3.59 + - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/chrislusf/seaweedfs:3.59 + cache: + paths: + - .trivycache/ + artifacts: + when: always + expire_in: 1 days + reports: + container_scanning: ./.trivy/trivy-storage-service-report.json + +scan-storage-service-init: + image: bitnami/trivy:latest + stage: scan + only: + refs: + - master + allow_failure: true + script: + - trivy image --insecure --exit-code 0 --format template --template "@.trivy/gitlab.tpl" -o ./.trivy/trivy-storage-service-init-report.json docker.io/dbrepo/storage-service-init:latest + - trivy image --insecure --exit-code 0 docker.io/dbrepo/storage-service-init:latest + - trivy image --insecure --exit-code 1 --severity CRITICAL docker.io/dbrepo/storage-service-init:latest + cache: + paths: + - .trivycache/ + artifacts: + when: always + expire_in: 1 days + reports: + container_scanning: ./.trivy/trivy-storage-service-init-report.json + +docs-registry: + stage: docs + image: docker.io/python:3.11-slim + only: + refs: + - /^release-.*/ + script: + - pip install -r ./requirements.txt + - python3 .docs/docker/release.py + +release-images: + stage: release + image: docker:24-dind + needs: + - test-metadata-service + - test-data-service + - test-analyse-service + - test-frontend + only: + refs: + - /^release-.*/ + before_script: + - echo "$CI_REGISTRY_PASSWORD" | docker login --username "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY_URL + - echo "$CI_REGISTRY2_PASSWORD" | docker login --username "$CI_REGISTRY2_USER" --password-stdin $CI_REGISTRY2_URL + script: + - "ifconfig eth0 mtu 1450 up" + - "apk add make bash" + - "TAG=${APP_VERSION} make release" + +release-chart: + stage: release + image: docker:24-dind + only: + refs: + - /^release-.*/ + before_script: + - echo "$CI_REGISTRY2_PASSWORD" | docker login --username "$CI_REGISTRY2_USER" --password-stdin $CI_REGISTRY2_URL + script: + - apk add sed helm curl + - 'sed -i -e "s/^version:.*/version: \"${CHART_VERSION}\"/g" ./helm-charts/dbrepo/Chart.yaml' + - 'sed -i -e "s/^appVersion:.*/appVersion: \"${APP_VERSION}\"/g" ./helm-charts/dbrepo/Chart.yaml' + - find ./helm-charts -type f -exec sed -i -e "s/__CHARTVERSION__/${CHART_VERSION}/g" {} \; + - helm package ./helm-charts/dbrepo --destination ./build + - helm push "./build/dbrepo-${CHART_VERSION}.tgz" "oci://${CI_REGISTRY2_URL}/helm" release-docs: stage: release -- GitLab