peru/.gitlab-ci.yml
2025-05-29 16:51:40 -04:00

132 lines
3.1 KiB
YAML

# Official docker image.
image: docker:dind
services:
- docker:dind
stages:
- quality
- test
- compile
- build-image
- deploy
- test-deploy
.code-quality:
stage: code-quality
image: maven:3.9.6-eclipse-temurin-21-alpine
variables:
SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"
GIT_DEPTH: "0"
cache:
key: "${CI_JOB_NAME}"
paths:
- .sonar/cache
script:
- mvn clean install
- mvn sonar:sonar verify -DskipTests=true -Dmaven.test.failure.ignore=true -Dsonar.projectKey=$PROJECT_KEY -Dsonar.host.url=$SONAR_URL -Dsonar.login=$SONAR_TOKEN -Dsonar.java.binaries=**/*
allow_failure: true
.test:
stage: test
image: maven:latest
script:
- mvn test
artifacts:
paths:
- target/surefire-reports/TEST-*.xml
reports:
junit:
- target/surefire-reports/TEST-*.xml
.compile:
stage: compile
image: maven:3.9.6-eclipse-temurin-21-alpine
cache:
key: milicom
paths:
- ../.m2/repository
script:
- echo $CI_COMMIT_MESSAGE
- echo $CI_COMMIT_REF_NAME
- mvn package -Drevision=$CI_PIPELINE_IID -DskipTests
artifacts:
paths:
- ./target/*.jar
.stg-build-image:
stage: build-image
script:
- echo ${PROJECT_CONTAINER_IMAGE}
- docker build -f ./src/main/docker/dockerfile -t ${PROJECT_CONTAINER_IMAGE} .
- docker tag ${PROJECT_CONTAINER_IMAGE} $NEXUS_REGISTER_SERVER/${PROJECT_CONTAINER_IMAGE}
- docker login -u $CI_LON_REGISTRY_USER -p $CI_LON_REGISTRY_PASSWORD $NEXUS_REGISTER_SERVER
- docker push $NEXUS_REGISTER_SERVER/${PROJECT_CONTAINER_IMAGE}
- docker rmi ${PROJECT_CONTAINER_IMAGE}
.deploy:
stage: deploy
image: dtzar/helm-kubectl
variables:
NAMESPACE: default
POD_ENV: development
K8S_ENV_DEPLOY: deployment.yml
dependencies: []
script:
- sed -i "s/PROJECT_NAME/$POD_NAME/g" $K8S_ENV_DEPLOY
- sed -i "s~CONTAINER_IMAGE~$PROJECT_CONTAINER_IMAGE~g" $K8S_ENV_DEPLOY
- sed -i "s/APP_ENV/$POD_ENV/g" $K8S_ENV_DEPLOY
- sed -i "s/APP_ID/$POD_NAME/g" $K8S_ENV_DEPLOY
- sed -i "s/APP_PORT/8080/g" $K8S_ENV_DEPLOY
- kubectl apply -f $K8S_ENV_DEPLOY -n $NAMESPACE
variables:
IMG_REPOSITORY: $NEXUS_REGISTER_SERVER
PROJECT_KEY: checksuscribers-orchestator-api
CI_DISABLE_CACHE: "true"
POD_NAME: $CI_PROJECT_NAME
AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID_MIC
AWS_SECRET_ACCESS_KEY: $AWS_SECRET_ACCESS_KEY_MIC
AWS_DEFAULT_REGION: $AWS_DEFAULT_REGION
PROJECT_CONTAINER_IMAGE: longinus/${CI_PROJECT_NAME}:${VERSION} #$CI_PIPELINE_ID
VERSION: stg-v1.0.1 # Deprecated -> Use commit sha as tag for dev/test environments
### STAGES CLOUD
.cloud-code-quality:
only:
- develop
extends:
- .code-quality
.cloud-unit-test:
only:
- develop
- feature/performanceEntityResponseWrapper
extends:
- .test
cloud-compile:
only:
- develop
extends:
- .compile
cloud-build-image:
only:
- develop
extends:
- .stg-build-image
#Deployment en lon-bo development
deploy-bo-dev:
before_script:
- export KUBECONFIG=${KUBECONFIG_BO}
# tags:
# - longinus-bo-dev
only:
- develop
extends:
- .deploy