Last active
May 12, 2022 12:46
-
-
Save fragaLY/c0d65b7d1db297757df8611f5239b292 to your computer and use it in GitHub Desktop.
Gitlab CI/CD for Openshit with Minio Cache support, Grype Scan and Sonar linting
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| variables: | |
| GATEWAY: gw | |
| SERVICE_1: service_1 | |
| SERVICE_2: service_2 | |
| SUB_PROJECT_NAME: $SUB_PROJECT_NAME | |
| LIST_OF_ALL_MODULES: ${GATEWAY} ${SERVICE_1} ${SERVICE_2} | |
| LIST_OF_DEPLOY_MODULES: ${SERVICE_1} ${SERVICE_2} | |
| GRADLE_USER_HOME: ${CI_PROJECT_DIR}/.gradle | |
| stages: | |
| - "assemble" | |
| - "test" | |
| - "linting" | |
| - "build" | |
| - "registry-access" | |
| - "prepare-image" | |
| - "security" | |
| - "deploy" | |
| include: | |
| - local: assemble/app/assemble.yml | |
| - local: test/app/test.yml | |
| - local: linting/app/**.yml | |
| - local: build/app/build.yml | |
| - local: registry-access/app/registry-access.yml | |
| - local: prepare-image/app/prepare-image.yml | |
| - local: security/app/image-scan.yml | |
| - local: vault/vault-dev.yml | |
| - local: deploy/deploy_hidden.yml | |
| - local: deploy/deploy_develop.yml |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| include: | |
| - project: sample-project/sample-project-gitlab-ci | |
| ref: sample | |
| file: | |
| - .gitlab-ci-base.yml |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| assemble: | |
| stage: "assemble" | |
| tags: | |
| - sample-project-ci | |
| image: ${HOST_REGISTRY}:${PORT_REGISTRY}/sample-project-ci/sample-project-base-image:gradle-jdk17-mc | |
| script: | |
| - > | |
| for submodule in $LIST_OF_ALL_MODULES; do | |
| if git diff HEAD~ --name-only|grep ${submodule}; then | |
| gradle -p ${submodule} --no-daemon --build-cache --gradle-user-home ${GRADLE_USER_HOME}/cache/ assemble | |
| fi; | |
| done | |
| cache: | |
| key: gradle-cache-key | |
| paths: | |
| - ${GRADLE_USER_HOME}/wrapper | |
| - ${GRADLE_USER_HOME}/cache | |
| - ${CI_PROJECT_DIR}/**/build | |
| only: | |
| - main | |
| - develop | |
| - merge_requests | |
| - /^release/.*$/ | |
| - /^hotfix/.*$/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| build: | |
| stage: "build" | |
| tags: | |
| - sample-project-ci | |
| image: ${HOST_REGISTRY}:${PORT_REGISTRY}/sample-project-ci/sample-project-base-image:gradle-jdk17-mc | |
| script: | |
| - gradle --no-daemon --build-cache --gradle-user-home ${GRADLE_USER_HOME}/cache/ build -x test | |
| - mc config host add sample-project $MINIO_CI_HOST $MINIO_CI_KEY $MINIO_CI_SECRET | |
| - > | |
| for item in ${LIST_OF_DEPLOY_MODULES}; do | |
| mc cp ${item}/build/distributions/${item}*.tar ${REPOSITORY}/builds/$CI_COMMIT_REF_SLUG/$CI_COMMIT_SHA/ | |
| done | |
| cache: | |
| key: gradle-cache-key | |
| paths: | |
| - ${GRADLE_USER_HOME}/wrapper | |
| - ${GRADLE_USER_HOME}/cache | |
| only: | |
| - main | |
| - develop | |
| - /^release/.*$/ | |
| - /^hotfix/.*$/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| deploy_service_1: | |
| extends: .deploy_app | |
| variables: | |
| PROJECT: sample-project-dev-1 | |
| APPLICATION: ${SERVICE_1} | |
| ENV: dev | |
| script: | |
| - oc project ${PROJECT} | |
| - echo $VAULT_DB_USERNAME | |
| - | | |
| oc process -f sample-project/deploy/app/${APPLICATION}/sample-project-app-config.yml \ | |
| --param-file=sample-project/deploy/app/${APPLICATION}/sample-project-app-config-params.yml \ | |
| -p=ENV=${ENV} \ | |
| -p=NAME=${APPLICATION} \ | |
| | oc apply -f - | |
| - | | |
| oc process -f sample-project/deploy/app/${APPLICATION}/sample-project-app-template.yml \ | |
| --param-file=sample-project/deploy/app/${APPLICATION}/sample-project-app-template-params.yml \ | |
| -p=ENV=${ENV} \ | |
| -p=NAME=${APPLICATION} \ | |
| -p=APPLICATION_PROPERTIES=${APPLICATION}-config \ | |
| -p=OKD_NAMESPACE=${PROJECT} \ | |
| -p=OKD_IS=${APPLICATION} \ | |
| -p=SOURCE_REPOSITORY_REF=${CI_COMMIT_REF_SLUG} \ | |
| -p=HASH_COMMIT=${CI_COMMIT_SHA} \ | |
| | oc apply -f - | |
| when: manual | |
| only: | |
| - develop | |
| deploy_service_2: | |
| extends: .deploy_app | |
| variables: | |
| PROJECT: sample-project-dev-2 | |
| APPLICATION: ${SERVICE_2} | |
| ENV: dev | |
| script: | |
| - export VAULT_DB_USERNAME="$(vault kv get -field=pg_username secret/sample-project-dev-2)" | |
| - export VAULT_DB_PASSWORD="$(vault kv get -field=pg_password secret/sample-project-dev-2)" | |
| - oc project ${PROJECT} | |
| - echo $VAULT_DB_USERNAME | |
| - | | |
| oc process -f sample-project/deploy/app/${APPLICATION}/sample-project-app-config.yml \ | |
| --param-file=sample-project/deploy/app/${APPLICATION}/sample-project-app-config-params.yml \ | |
| -p=ENV=${ENV} \ | |
| -p=NAME=${APPLICATION} \ | |
| -p=DB_USERNAME=$VAULT_DB_USERNAME \ | |
| -p=DB_PASSWORD=$VAULT_DB_PASSWORD \ | |
| | oc apply -f - | |
| - | | |
| oc process -f sample-project/deploy/app/${APPLICATION}/sample-project-app-template.yml \ | |
| --param-file=sample-project/deploy/app/${APPLICATION}/sample-project-app-template-params.yml \ | |
| -p=ENV=${ENV} \ | |
| -p=NAME=${APPLICATION} \ | |
| -p=APPLICATION_PROPERTIES=${APPLICATION}-config \ | |
| -p=OKD_NAMESPACE=${PROJECT} \ | |
| -p=OKD_IS=${APPLICATION} \ | |
| -p=SOURCE_REPOSITORY_REF=${CI_COMMIT_REF_SLUG} \ | |
| -p=HASH_COMMIT=${CI_COMMIT_SHA} \ | |
| | oc apply -f - | |
| when: manual | |
| only: | |
| - develop |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| dockerfile_all: | |
| stage: "linting" | |
| tags: | |
| - sample-project-ci | |
| image: ${HOST_REGISTRY}:${PORT_REGISTRY}/sample-project-ci/sample-project-base-image:gradle-jdk17-mc | |
| before_script: | |
| - env | |
| script: | |
| - hadolint dockerfiles/Dockerfile_* | |
| rules: | |
| - if: $CI_COMMIT_REF_SLUG == ${REF_BRANCH} | |
| changes: | |
| - dockerfiles/* |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| image_scan: | |
| stage: "security" | |
| tags: | |
| - sample-project-ci | |
| image: | |
| name: anchore/grype:latest | |
| entrypoint: [ "" ] | |
| script: | |
| - grype ${IMAGE_NAME} -o table --fail-on medium | |
| only: | |
| - main | |
| - develop | |
| - /^release/.*$/ | |
| - /^hotfix/.*$/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| prepare_images: | |
| stage: prepare-image | |
| tags: | |
| - sample-project-ci | |
| variables: | |
| PROJECT: sample-project-development | |
| GIT_STRATEGY: none | |
| image: | |
| name: ${HOST_REGISTRY}:${PORT_REGISTRY}/sample-project-ci/sample-project-base-image:kaniko-mc | |
| entrypoint: [""] | |
| script: | |
| - git clone -b sample-project https://gitlab-ci-token:${CI_JOB_TOKEN}@git.company.com/sample-project/sample-project-gitlabci.git sample-project | |
| - mkdir -p /kaniko/.docker && cp config.json /kaniko/.docker/config.json | |
| - /opt/mc config host add sample-project $MINIO_CI_HOST $MINIO_CI_KEY $MINIO_CI_SECRET | |
| - /opt/mc cp --recursive sample-project/builds/${CI_COMMIT_REF_SLUG}/${CI_COMMIT_SHA}/ ./ | |
| - /opt/mc rm --force --recursive sample-project/builds/${CI_COMMIT_REF_SLUG}/${CI_COMMIT_SHA}/ | |
| - > | |
| for app in ${LIST_OF_DEPLOY_MODULES}; do | |
| export ATATAG=$(echo ${HOST}:${PORT}/${PROJECT}/${app}:${CI_COMMIT_REF_SLUG}-${CI_COMMIT_SHA}) | |
| /kaniko/executor --build-arg APP_ARG=$app --context . --dockerfile ./sample-project/dockerfiles/Dockerfile_${app} --insecure --skip-tls-verify --destination $ATATAG --cleanup | |
| done | |
| only: | |
| - main | |
| - develop | |
| - /^release/.*$/ | |
| - /^hotfix/.*$/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| registry_access: | |
| stage: registry-access | |
| tags: | |
| - sample-project-ci | |
| image: ${HOST_REGISTRY}:${PORT_REGISTRY}/sample-project-ci/sample-project-base-image:gradle-jdk17-mc | |
| variables: | |
| GIT_STRATEGY: none | |
| script: | |
| - oc login $OPENSHIFT_SERVER_AWS --username=$OPENSHIFT_CI_USER --password=$OPENSHIFT_CI_PASSWORD -n $OPENSHIFT_CI_PROJECT --insecure-skip-tls-verify | |
| - echo "{\"auths\":{\"${HOST_REGISTRY}:${PORT_REGISTRY}\":{\"username\":\"$OPENSHIFT_CI_USER\",\"password\":\"$(oc whoami -t)\"}}}" > config.json | |
| - oc config view > kube_config | |
| artifacts: | |
| paths: | |
| - config.json | |
| - kube_config | |
| only: | |
| - main | |
| - develop | |
| - /^release/.*$/ | |
| - /^hotfix/.*$/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| NAME=sample-project-app | |
| ENV=dev | |
| JDBC_URL=jdbc:postgresql://${HOST_DB}:${PORT}/sample-project | |
| APP_URL=http://0.0.0.0:8080 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| kind: Template | |
| apiVersion: template.openshift.io/v1 | |
| labels: | |
| template: '${NAME}-template' | |
| app: '${NAME}' | |
| env: '${ENV}' | |
| metadata: | |
| name: '${NAME}-${ENV}' | |
| objects: | |
| - kind: Secret | |
| apiVersion: v1 | |
| metadata: | |
| name: '${NAME}-${ENV}-config' | |
| type: Opaque | |
| stringData: | |
| application.yaml: |- | |
| baseAppUrl: ${APP_URL} | |
| sample-project-security: | |
| enable-make-me-feature: true | |
| sso: | |
| provider-name: provider # any kind of providers, should be replaced | |
| hostname: provider_host # provider host, should be replaced | |
| client-id: client_id # client id, should be replaced | |
| client-secret: client_secret # client secret, should be replaced | |
| spring: | |
| datasource: | |
| driver-class-name: org.postgresql.Driver | |
| url: ${JDBC_URL} | |
| username: ${DB_USERNAME} | |
| password: ${DB_PASSWORD} | |
| flyway: | |
| schemas: unified | |
| table: schema_version | |
| out-of-order: true | |
| ignore-missing-migrations: true | |
| locations: | |
| - classpath:db/migrations/2022 | |
| security: | |
| oauth2: | |
| resourceserver: | |
| jwt: | |
| jwk-set-uri: https://${sso.hostname}/auth/realms/plusx/protocol/openid-connect/certs | |
| client: | |
| registration: | |
| client_name: #should be replaced | |
| client-id: ${sso.client-id} | |
| client-secret: ${sso.client-secret} | |
| scope: openid, profile | |
| authorization-grant-type: authorization_code | |
| client-authentication-method: client_secret_post | |
| redirect-uri: ${baseAppUrl}/login/oauth2/code/${sso.provider-name} | |
| provider: | |
| provider_name: #should be replaced | |
| authorization-uri: https://${sso.hostname}/auth/realms/plusx/protocol/openid-connect/auth | |
| token-uri: https://${sso.hostname}/auth/realms/plusx/protocol/openid-connect/token | |
| jwk-set-uri: https://${sso.hostname}/auth/realms/plusx/protocol/openid-connect/certs | |
| user-info-uri: https://${sso.hostname}/auth/realms/plusx/protocol/openid-connect/userinfo | |
| user-info-authentication-method: header | |
| user-name-attribute: sub | |
| management: | |
| endpoints: | |
| web: | |
| exposure: | |
| include: '*' | |
| logging: | |
| level: | |
| root: "debug" | |
| org.springframework.context: "trace" | |
| org.springframework.data: "trace" | |
| org.springframework.security: DEBUG | |
| parameters: | |
| - description: Set config name to use for override spring-boot application properties. | |
| displayName: Application properties file | |
| name: NAME | |
| value: sample-project-app | |
| - description: ENV for Service | |
| displayName: ENV | |
| name: ENV | |
| value: dev | |
| - description: JDBC url connect to db | |
| displayName: JDBC url | |
| name: JDBC_URL | |
| value: jdbc:postgresql://${HOST_DB}:${PORT_DB}/sample-project | |
| - description: DB username | |
| displayName: DB username | |
| name: DB_USERNAME | |
| value: developer # should be replaced | |
| - description: DB password | |
| displayName: DB password | |
| name: DB_PASSWORD | |
| value: YOUR_PASSWORD # should be replaced | |
| - description: Application URL | |
| displayName: Application URL | |
| name: APP_URL | |
| value: "http://0.0.0.0:8080" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| MEMORY_LIMIT=1024MB | |
| MEMORY_REQUESTED=512MB | |
| CPU_LIMIT=1000m | |
| CPU_REQUESTED=500m | |
| PORT="8080" | |
| NAME=sample-project-app | |
| REPLICA_NUMBER="1" | |
| APPLICATION_PROPERTIES=sample-project-app | |
| ENV=dev | |
| JAVA_OPTIONS="-Xms512M -Xmx1000M -Duser.timezone=GMT -XX:+OptimizeStringConcat -XX:+UseCodeCacheFlushing -XX:+AlwaysActAsServerClassMachine -XX:+ExitOnOutOfMemoryError -XX:+UseContainerSupport -XX:+UseStringDeduplication -XX:+PerfDisableSharedMem -XX:MaxRAMPercentage=80 -XX:InitialRAMPercentage=50 -XX:HeapDumpPath=/opt/tmp/heapdump.bin" | |
| OKD_NAMESPACE=sample-project-development | |
| OKD_IS=sample-project |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| kind: Template | |
| apiVersion: v1 | |
| labels: | |
| template: '${NAME}-template' | |
| app: '${NAME}' | |
| env: '${ENV}' | |
| sclale_up_down: 'yes' | |
| monitoring: 'yes' | |
| metadata: | |
| name: '${NAME}' | |
| objects: | |
| - kind: DeploymentConfig | |
| apiVersion: v1 | |
| metadata: | |
| annotations: | |
| description: Defines how to deploy the application server | |
| name: '${NAME}' | |
| spec: | |
| replicas: ${{REPLICA_NUMBER}} | |
| selector: | |
| name: '${NAME}' | |
| strategy: | |
| type: Rolling | |
| template: | |
| metadata: | |
| labels: | |
| tagZabbix: 'true' | |
| env: "${ENV}" | |
| name: "${NAME}" | |
| name: "${NAME}" | |
| spec: | |
| containers: | |
| - env: | |
| # to use GC1 in java | |
| - name: JAVA_OPTS | |
| value: "${JAVA_OPTIONS}" | |
| image: "${HOST_REGISTRY}:${HOST_PORT}/${OKD_NAMESPACE}/${OKD_IS}:${SOURCE_REPOSITORY_REF}-${HASH_COMMIT}" | |
| imagePullPolicy: Always | |
| name: "${NAME}" | |
| ports: | |
| - containerPort: ${PORT} | |
| livenessProbe: | |
| httpGet: | |
| path: /actuator/health/liveness | |
| port: 8080 | |
| scheme: HTTP | |
| initialDelaySeconds: 40 | |
| timeoutSeconds: 5 | |
| periodSeconds: 20 | |
| successThreshold: 1 | |
| failureThreshold: 5 | |
| readinessProbe: | |
| httpGet: | |
| path: /actuator/health/readiness | |
| port: 8080 | |
| scheme: HTTP | |
| initialDelaySeconds: 40 | |
| timeoutSeconds: 5 | |
| periodSeconds: 15 | |
| successThreshold: 1 | |
| failureThreshold: 5 | |
| resources: | |
| requests: | |
| cpu: "${CPU_REQUESTED}" | |
| memory: "${MEMORY_REQUESTED}" | |
| limits: | |
| cpu: "${CPU_LIMIT}" | |
| memory: "${MEMORY_LIMIT}" | |
| volumeMounts: | |
| - name: properties | |
| mountPath: /opt/app/application.yaml | |
| subPath: application.yaml | |
| tolerations: | |
| - key: nodes.company.com/zone | |
| operator: Equal | |
| value: a | |
| effect: NoSchedule | |
| - key: nodes.company.com/zone | |
| operator: Equal | |
| value: b | |
| effect: NoSchedule | |
| - key: nodes.company.com/zone | |
| operator: Equal | |
| value: c | |
| effect: NoSchedule | |
| affinity: | |
| nodeAffinity: | |
| requiredDuringSchedulingIgnoredDuringExecution: | |
| nodeSelectorTerms: | |
| - matchExpressions: | |
| - key: nodes.company.com/scope | |
| operator: In | |
| values: | |
| - critical | |
| - key: nodes.company.com/zone | |
| operator: In | |
| values: | |
| - a | |
| - b | |
| - c | |
| podAntiAffinity: | |
| preferredDuringSchedulingIgnoredDuringExecution: | |
| - weight: 100 | |
| podAffinityTerm: | |
| labelSelector: | |
| matchExpressions: | |
| - key: name | |
| operator: In | |
| values: | |
| - "${NAME}" | |
| topologyKey: nodes.company.com/zone | |
| volumes: | |
| - name: properties | |
| secret: | |
| secretName: '${APPLICATION_PROPERTIES}-${ENV}-config' | |
| triggers: | |
| - type: ConfigChange | |
| parameters: | |
| - description: Maximum amount of memory the container can use. | |
| displayName: Memory Limit | |
| name: MEMORY_LIMIT | |
| required: true | |
| value: 512MB | |
| - description: Requested Memory during start of container | |
| displayName: Requested Memory | |
| name: MEMORY_REQUESTED | |
| required: true | |
| value: 512MB | |
| - description: Maximum amount of cpu the container can use. | |
| displayName: CPU Limit | |
| name: CPU_LIMIT | |
| required: true | |
| value: 1000m | |
| - description: Requested CPU during start of container | |
| displayName: Requested CPU | |
| name: CPU_REQUESTED | |
| required: true | |
| value: 500m | |
| - description: Port of the container. | |
| displayName: PORT of application | |
| name: PORT | |
| required: true | |
| value: "8080" | |
| - description: The name assigned to all of the frontend objects defined in this template. | |
| displayName: Name | |
| name: NAME | |
| required: true | |
| value: sample-project-app | |
| - description: number of replicas of app | |
| displayName: replica_number | |
| name: REPLICA_NUMBER | |
| required: true | |
| value: "1" | |
| - description: Set config name to use for override spring-boot application properties. | |
| displayName: Application properties file | |
| name: APPLICATION_PROPERTIES | |
| value: sample-project-app | |
| - description: Environment specificaon | |
| displayName: env | |
| name: ENV | |
| required: true | |
| value: dev | |
| - description: Java Options | |
| displayName: Java Options | |
| name: JAVA_OPTIONS | |
| value: -Xms512M -Xmx512M -Duser.timezone=GMT -XX:+OptimizeStringConcat -XX:+UseCodeCacheFlushing | |
| - description: HASH_COMMIT | |
| displayName: HASH_COMMIT | |
| name: HASH_COMMIT | |
| required: true | |
| value: 59049081eb93d2eb090eddae5eef456e759c1b53 | |
| - description: SOURCE_REPOSITORY_REF | |
| displayName: SOURCE_REPOSITORY_REF | |
| name: SOURCE_REPOSITORY_REF | |
| required: true | |
| value: develop | |
| - name: OKD_NAMESPACE | |
| required: true | |
| value: 'sample-project-development' | |
| - name: OKD_IS | |
| required: true | |
| value: sample-project |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| sonar: | |
| stage: "linting" | |
| tags: | |
| - sample-project-ci | |
| image: ${HOST_REGISTRY}:${PORT_REGISTRY}/sample-project-ci/sample-project-base-image:gradle-jdk17-mc | |
| variables: | |
| SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar" | |
| GIT_DEPTH: "0" | |
| cache: | |
| key: gradle-cache-key | |
| paths: | |
| - ${GRADLE_USER_HOME}/wrapper | |
| - ${GRADLE_USER_HOME}/cache | |
| - ${SONAR_USER_HOME}/cache | |
| - ${CI_PROJECT_DIR}/**/build | |
| script: | |
| - > | |
| for submodule in $LIST_OF_ALL_MODULES; do | |
| if git diff HEAD~ --name-only|grep ${submodule}; then | |
| gradle -p ${submodule} --no-daemon --build-cache --gradle-user-home ${GRADLE_USER_HOME}/cache/ sonarqube -Dsonar.coverage.jacoco.xmlReportPaths=${CI_PROJECT_DIR}/${submodule}/build/reports/jacoco/test/jacocoTestReport.xml | |
| fi; | |
| done | |
| only: | |
| - main | |
| - develop | |
| - merge_requests | |
| - /^release/.*$/ | |
| - /^hotfix/.*$/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| test: | |
| stage: "test" | |
| variables: | |
| TEST_DATABASE_NAME: sample_project_test_${CI_JOB_ID} | |
| SPRING_DATASOURCE_URL: "jdbc:postgresql://${HOST_DB}:${PORT_DB}/${TEST_DATABASE_NAME}" | |
| SPRING_DATASOURCE_USERNAME: "developer" | |
| SPRING_DATASOURCE_PASSWORD: ${SPRING_DB_PASSWORD} | |
| tags: | |
| - sample-project-ci | |
| image: ${HOST_REGISTRY}:${PORT_REGISTRY}/sample-project-ci/sample-project-base-image:gradle-jdk17-mc | |
| before_script: | |
| - PGPASSWORD=${PG_MAIN_PASSWORD} psql -U postgres -h "${HOST_DB}" -p "${PORT_DB}" --command="CREATE DATABASE ${TEST_DATABASE_NAME} OWNER ${SPRING_DATASOURCE_USERNAME};" | |
| script: | |
| - > | |
| for submodule in ${LIST_OF_ALL_MODULES}; do | |
| if git diff HEAD~ --name-only|grep ${submodule}; then | |
| gradle -p ${submodule} --no-daemon --build-cache --gradle-user-home ${GRADLE_USER_HOME}/cache/ test | |
| fi; | |
| done | |
| after_script: | |
| - PGPASSWORD=${PG_MAIN_PASSWORD} psql -U postgres -h "${HOST_DB}" -p "${PORT_DB}" --command="DROP DATABASE ${TEST_DATABASE_NAME};" | |
| cache: | |
| key: gradle-cache-key | |
| paths: | |
| - ${GRADLE_USER_HOME}/wrapper | |
| - ${GRADLE_USER_HOME}/cache | |
| - ${CI_PROJECT_DIR}/**/build | |
| artifacts: | |
| when: always | |
| reports: | |
| junit: "**/build/test-results/test/**/TEST-*.xml" | |
| only: | |
| - main | |
| - develop | |
| - /^release/.*$/ | |
| - /^hotfix/.*$/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| .vault_dev: &vault_dev | |
| before_script: | |
| - export VAULT_ADDR=https://${VAULT_HOST}:${VAULT_PORT} | |
| - export VAULT_SKIP_VERIFY=true | |
| - export VAULT_NAMESPACE=bss-dev/sample-project | |
| - export VAULT_TOKEN="$(vault write -field=token auth/jwt/login role=gitlab-sample-project-ci jwt=$CI_JOB_JWT)" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment