Init
This commit is contained in:
@@ -0,0 +1,267 @@
|
||||
variables:
|
||||
GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle"
|
||||
|
||||
BALLISTICS_SERVICE_DIR: "services/pcp-ballistics-service"
|
||||
|
||||
# При необходимости переопредели путь к chart через CI/CD variable
|
||||
BALLISTICS_HELM_CHART_DIR: "helm/pcp-ballistics-service"
|
||||
|
||||
# Имя релиза в k8s
|
||||
BALLISTICS_HELM_RELEASE: "pcp-ballistics-service"
|
||||
|
||||
# Полный путь до image во внутреннем registry
|
||||
BALLISTICS_IMAGE_REPOSITORY: "$INTERNAL_REGISTRY/pcp-ballistics-service"
|
||||
|
||||
# Окружения / namespace
|
||||
BALLISTICS_K8S_NAMESPACE_DEV: "pcp-dev"
|
||||
BALLISTICS_K8S_NAMESPACE_MASTER: "pcp-master"
|
||||
|
||||
|
||||
BALLISTICS_IMAGE_TAG: "$CI_COMMIT_SHORT_SHA"
|
||||
.ballistics:changes: &ballistics_changes
|
||||
- services/pcp-ballistics-service/**/*
|
||||
- libs/ballistics-lib/**/*
|
||||
- libs/pcp-types-lib/**/*
|
||||
- build.gradle.kts
|
||||
- settings.gradle.kts
|
||||
- .gitlab/ci/pcp-ballistics-service.*
|
||||
- helm/pcp-ballistics-service/**/*
|
||||
- deploy/**/*
|
||||
|
||||
.ballistics:rules:build-and-image:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *ballistics_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *ballistics_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *ballistics_changes
|
||||
- when: never
|
||||
|
||||
.ballistics:rules:test:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *ballistics_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *ballistics_changes
|
||||
when: manual
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *ballistics_changes
|
||||
- when: never
|
||||
|
||||
.ballistics:rules:deploy-dev:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *ballistics_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.ballistics:rules:deploy-master:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *ballistics_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.ballistics:gradle-cache:
|
||||
cache:
|
||||
key: "gradle-ballistics-$CI_DEFAULT_BRANCH"
|
||||
paths:
|
||||
- .gradle/wrapper
|
||||
- .gradle/caches
|
||||
policy: pull-push
|
||||
|
||||
.ballistics:docker-build:
|
||||
image: repo.nstart.cloud/library/docker:26
|
||||
services:
|
||||
- name: repo.nstart.cloud/library/docker:26-dind
|
||||
alias: docker
|
||||
command: ["--tls=false", "--insecure-registry=registry.k8s.265.nstart.local"]
|
||||
variables:
|
||||
DOCKER_HOST: tcp://docker:2375
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
DOCKER_BUILDKIT: "1"
|
||||
before_script:
|
||||
- docker version
|
||||
- docker info
|
||||
|
||||
.ballistics:helm-deploy:
|
||||
image: repo.nstart.cloud/dtzar/helm-kubectl:3.14.0
|
||||
before_script:
|
||||
- mkdir -p /root/.kube
|
||||
- helm version
|
||||
after_script:
|
||||
- rm -f /root/.kube/config
|
||||
|
||||
ballistics:test:
|
||||
stage: test
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
services:
|
||||
- name: repo.nstart.cloud/postgis/postgis:16-3.4
|
||||
alias: postgres
|
||||
variables:
|
||||
POSTGRES_DB: "pcp_ballistics"
|
||||
POSTGRES_USER: "postgres"
|
||||
POSTGRES_PASSWORD: "password"
|
||||
SPRING_DATASOURCE_URL: "jdbc:postgresql://postgres:5432/pcp_ballistics"
|
||||
SPRING_DATASOURCE_USERNAME: "postgres"
|
||||
SPRING_DATASOURCE_PASSWORD: "password"
|
||||
extends:
|
||||
- .ballistics:rules:test
|
||||
- .ballistics:gradle-cache
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-ballistics-service:test
|
||||
artifacts:
|
||||
when: always
|
||||
reports:
|
||||
junit:
|
||||
- services/pcp-ballistics-service/build/test-results/test/*.xml
|
||||
paths:
|
||||
- services/pcp-ballistics-service/build/reports/tests/
|
||||
expire_in: 7 days
|
||||
|
||||
ballistics:build:
|
||||
stage: build
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .ballistics:rules:build-and-image
|
||||
- .ballistics:gradle-cache
|
||||
needs:
|
||||
- job: ballistics:test
|
||||
artifacts: true
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-ballistics-service:bootJar
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- services/pcp-ballistics-service/build/libs/*.jar
|
||||
expire_in: 7 days
|
||||
|
||||
ballistics:package:
|
||||
stage: package
|
||||
extends:
|
||||
- .ballistics:rules:build-and-image
|
||||
- .ballistics:docker-build
|
||||
needs:
|
||||
- job: ballistics:build
|
||||
artifacts: true
|
||||
script:
|
||||
- 'echo "BALLISTICS_IMAGE_REPOSITORY=$BALLISTICS_IMAGE_REPOSITORY"'
|
||||
- |
|
||||
JAR_COUNT="$(find "$BALLISTICS_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | wc -l)"
|
||||
|
||||
if [ "$JAR_COUNT" -ne 1 ]; then
|
||||
echo "Expected exactly one executable jar, found: $JAR_COUNT"
|
||||
find "$BALLISTICS_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' -print || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
JAR_FILE="$(find "$BALLISTICS_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | head -n 1)"
|
||||
- rm -rf docker-context
|
||||
- mkdir -p docker-context/build/libs
|
||||
- cp "$BALLISTICS_SERVICE_DIR/Dockerfile" docker-context/Dockerfile
|
||||
- cp "$JAR_FILE" docker-context/build/libs/app.jar
|
||||
- find docker-context -maxdepth 4 -type f -print -exec ls -la {} \;
|
||||
- docker build --file docker-context/Dockerfile --tag "$BALLISTICS_IMAGE_REPOSITORY:$BALLISTICS_IMAGE_TAG" docker-context
|
||||
- docker push "$BALLISTICS_IMAGE_REPOSITORY:$BALLISTICS_IMAGE_TAG"
|
||||
- printf "BALLISTICS_IMAGE=%s\n" "$BALLISTICS_IMAGE_REPOSITORY:$BALLISTICS_IMAGE_TAG" > ballistics-image.env
|
||||
artifacts:
|
||||
reports:
|
||||
dotenv: ballistics-image.env
|
||||
expire_in: 7 days
|
||||
|
||||
ballistics:deploy:dev:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .ballistics:rules:deploy-dev
|
||||
- .ballistics:helm-deploy
|
||||
needs:
|
||||
- job: ballistics:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: dev/pcp-ballistics-service
|
||||
resource_group: pcp-ballistics-service-dev
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_DEV:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_DEV_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_DEV_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_DEV_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_DEV_B64 is not valid base64. Set KUBE_CONFIG_DEV to raw kubeconfig or KUBE_CONFIG_DEV_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_DEV or KUBE_CONFIG_DEV_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${BALLISTICS_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${BALLISTICS_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$BALLISTICS_HELM_RELEASE"
|
||||
"$BALLISTICS_HELM_CHART_DIR"
|
||||
--namespace "$BALLISTICS_K8S_NAMESPACE_DEV"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 10m
|
||||
-f "$BALLISTICS_HELM_CHART_DIR/values.yaml"
|
||||
-f "$BALLISTICS_HELM_CHART_DIR/values-dev.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=dev
|
||||
--set app.configLabel=dev
|
||||
|
||||
ballistics:deploy:master:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .ballistics:rules:deploy-master
|
||||
- .ballistics:helm-deploy
|
||||
needs:
|
||||
- job: ballistics:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: master/pcp-ballistics-service
|
||||
resource_group: pcp-ballistics-service-master
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_MASTER:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_MASTER_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_MASTER_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_MASTER_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_MASTER_B64 is not valid base64. Set KUBE_CONFIG_MASTER to raw kubeconfig or KUBE_CONFIG_MASTER_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_MASTER or KUBE_CONFIG_MASTER_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${BALLISTICS_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${BALLISTICS_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$BALLISTICS_HELM_RELEASE"
|
||||
"$BALLISTICS_HELM_CHART_DIR"
|
||||
--namespace "$BALLISTICS_K8S_NAMESPACE_MASTER"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 10m
|
||||
-f "$BALLISTICS_HELM_CHART_DIR/values.yaml"
|
||||
-f "$BALLISTICS_HELM_CHART_DIR/values-master.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=master
|
||||
--set app.configLabel=master
|
||||
@@ -0,0 +1,471 @@
|
||||
variables:
|
||||
GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle"
|
||||
|
||||
COMPLEX_MISSION_SERVICE_DIR: "services/pcp-complex-mission-service"
|
||||
COMPLEX_MISSION_SERVICE_HELM_CHART_DIR: "helm/pcp-complex-mission-service"
|
||||
COMPLEX_MISSION_SERVICE_HELM_RELEASE: "pcp-complex-mission-service"
|
||||
COMPLEX_MISSION_SERVICE_IMAGE_REPOSITORY: "$INTERNAL_REGISTRY/pcp-complex-mission-service"
|
||||
COMPLEX_MISSION_SERVICE_IMAGE_TAG: "$CI_COMMIT_SHORT_SHA"
|
||||
COMPLEX_MISSION_SERVICE_K8S_NAMESPACE_DEV: "pcp-dev"
|
||||
COMPLEX_MISSION_SERVICE_K8S_NAMESPACE_MASTER: "pcp-master"
|
||||
|
||||
TLE_MONITORING_SERVICE_DIR: "services/tle-monitoring-service"
|
||||
TLE_MONITORING_HELM_CHART_DIR: "helm/tle-monitoring-service"
|
||||
TLE_MONITORING_HELM_RELEASE: "tle-monitoring-service"
|
||||
TLE_MONITORING_IMAGE_REPOSITORY: "$INTERNAL_REGISTRY/tle-monitoring-service"
|
||||
TLE_MONITORING_IMAGE_TAG: "$CI_COMMIT_SHORT_SHA"
|
||||
TLE_MONITORING_K8S_NAMESPACE_DEV: "pcp-dev"
|
||||
TLE_MONITORING_K8S_NAMESPACE_MASTER: "pcp-master"
|
||||
|
||||
.complex_mission_service_changes: &complex_mission_service_changes
|
||||
- services/pcp-complex-mission-service/**/*
|
||||
- libs/ballistics-lib/**/*
|
||||
- libs/pcp-types-lib/**/*
|
||||
- build.gradle.kts
|
||||
- settings.gradle.kts
|
||||
- .gitlab/ci/pcp-complex-mission-service-tle.yml
|
||||
- helm/pcp-complex-mission-service/**/*
|
||||
- deploy/**/*
|
||||
|
||||
.tle_monitoring_changes: &tle_monitoring_changes
|
||||
- services/tle-monitoring-service/**/*
|
||||
- libs/ballistics-lib/**/*
|
||||
- libs/pcp-types-lib/**/*
|
||||
- build.gradle.kts
|
||||
- settings.gradle.kts
|
||||
- .gitlab/ci/pcp-complex-mission-service-tle.yml
|
||||
- helm/tle-monitoring-service/**/*
|
||||
- deploy/**/*
|
||||
|
||||
.complex-mission-service:rules:build-and-image:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *complex_mission_service_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *complex_mission_service_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *complex_mission_service_changes
|
||||
- when: never
|
||||
|
||||
.complex-mission-service:rules:test:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *complex_mission_service_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *complex_mission_service_changes
|
||||
when: manual
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *complex_mission_service_changes
|
||||
- when: never
|
||||
|
||||
.complex-mission-service:rules:deploy-dev:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *complex_mission_service_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.complex-mission-service:rules:deploy-master:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *complex_mission_service_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.tle-monitoring:rules:build-and-image:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *tle_monitoring_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *tle_monitoring_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *tle_monitoring_changes
|
||||
- when: never
|
||||
|
||||
.tle-monitoring:rules:test:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *tle_monitoring_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *tle_monitoring_changes
|
||||
when: manual
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *tle_monitoring_changes
|
||||
- when: never
|
||||
|
||||
.tle-monitoring:rules:deploy-dev:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *tle_monitoring_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.tle-monitoring:rules:deploy-master:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *tle_monitoring_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.pcp-gradle-cache:
|
||||
cache:
|
||||
key: "gradle-$CI_DEFAULT_BRANCH"
|
||||
paths:
|
||||
- .gradle/wrapper
|
||||
- .gradle/caches
|
||||
policy: pull-push
|
||||
|
||||
.pcp-docker-build:
|
||||
image: repo.nstart.cloud/library/docker:26
|
||||
services:
|
||||
- name: repo.nstart.cloud/library/docker:26-dind
|
||||
alias: docker
|
||||
command: ["--tls=false", "--insecure-registry=registry.k8s.265.nstart.local"]
|
||||
variables:
|
||||
DOCKER_HOST: tcp://docker:2375
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
DOCKER_BUILDKIT: "1"
|
||||
before_script:
|
||||
- docker version
|
||||
- docker info
|
||||
|
||||
.pcp-helm-deploy:
|
||||
image: repo.nstart.cloud/dtzar/helm-kubectl:3.14.0
|
||||
before_script:
|
||||
- mkdir -p /root/.kube ~/.kube
|
||||
- helm version
|
||||
after_script:
|
||||
- rm -f /root/.kube/config ~/.kube/config
|
||||
|
||||
complex-mission-service:test:
|
||||
stage: test
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .complex-mission-service:rules:test
|
||||
- .pcp-gradle-cache
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-complex-mission-service:test
|
||||
artifacts:
|
||||
when: always
|
||||
reports:
|
||||
junit:
|
||||
- services/pcp-complex-mission-service/build/test-results/test/*.xml
|
||||
paths:
|
||||
- services/pcp-complex-mission-service/build/reports/tests/
|
||||
expire_in: 7 days
|
||||
|
||||
complex-mission-service:build:
|
||||
stage: build
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .complex-mission-service:rules:build-and-image
|
||||
- .pcp-gradle-cache
|
||||
needs:
|
||||
- job: complex-mission-service:test
|
||||
artifacts: true
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-complex-mission-service:bootJar
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- services/pcp-complex-mission-service/build/libs/*.jar
|
||||
expire_in: 7 days
|
||||
|
||||
complex-mission-service:package:
|
||||
stage: package
|
||||
extends:
|
||||
- .complex-mission-service:rules:build-and-image
|
||||
- .pcp-docker-build
|
||||
needs:
|
||||
- job: complex-mission-service:build
|
||||
artifacts: true
|
||||
script:
|
||||
- 'echo "COMPLEX_MISSION_SERVICE_IMAGE_REPOSITORY=$COMPLEX_MISSION_SERVICE_IMAGE_REPOSITORY"'
|
||||
- |
|
||||
JAR_COUNT="$(find "$COMPLEX_MISSION_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | wc -l)"
|
||||
|
||||
if [ "$JAR_COUNT" -ne 1 ]; then
|
||||
echo "Expected exactly one executable jar, found: $JAR_COUNT"
|
||||
find "$COMPLEX_MISSION_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' -print || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
JAR_FILE="$(find "$COMPLEX_MISSION_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | head -n 1)"
|
||||
- rm -rf docker-context
|
||||
- mkdir -p docker-context/build/libs
|
||||
- cp "$COMPLEX_MISSION_SERVICE_DIR/Dockerfile" docker-context/Dockerfile
|
||||
- cp "$JAR_FILE" docker-context/build/libs/app.jar
|
||||
- find docker-context -maxdepth 4 -type f -print -exec ls -la {} \;
|
||||
- docker build --file docker-context/Dockerfile --tag "$COMPLEX_MISSION_SERVICE_IMAGE_REPOSITORY:$COMPLEX_MISSION_SERVICE_IMAGE_TAG" docker-context
|
||||
- docker push "$COMPLEX_MISSION_SERVICE_IMAGE_REPOSITORY:$COMPLEX_MISSION_SERVICE_IMAGE_TAG"
|
||||
- printf "COMPLEX_MISSION_SERVICE_IMAGE=%s\n" "$COMPLEX_MISSION_SERVICE_IMAGE_REPOSITORY:$COMPLEX_MISSION_SERVICE_IMAGE_TAG" > complex-mission-service-image.env
|
||||
artifacts:
|
||||
reports:
|
||||
dotenv: complex-mission-service-image.env
|
||||
expire_in: 7 days
|
||||
|
||||
complex-mission-service:deploy:dev:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .complex-mission-service:rules:deploy-dev
|
||||
- .pcp-helm-deploy
|
||||
needs:
|
||||
- job: complex-mission-service:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: dev/pcp-complex-mission-service
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_DEV:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_DEV_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_DEV_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_DEV_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_DEV_B64 is not valid base64. Set KUBE_CONFIG_DEV to raw kubeconfig or KUBE_CONFIG_DEV_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_DEV or KUBE_CONFIG_DEV_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${COMPLEX_MISSION_SERVICE_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${COMPLEX_MISSION_SERVICE_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$COMPLEX_MISSION_SERVICE_HELM_RELEASE"
|
||||
"$COMPLEX_MISSION_SERVICE_HELM_CHART_DIR"
|
||||
--namespace "$COMPLEX_MISSION_SERVICE_K8S_NAMESPACE_DEV"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 10m
|
||||
-f "$COMPLEX_MISSION_SERVICE_HELM_CHART_DIR/values.yaml"
|
||||
-f "$COMPLEX_MISSION_SERVICE_HELM_CHART_DIR/values-dev.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=dev
|
||||
--set app.configLabel=dev
|
||||
|
||||
complex-mission-service:deploy:master:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .complex-mission-service:rules:deploy-master
|
||||
- .pcp-helm-deploy
|
||||
needs:
|
||||
- job: complex-mission-service:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: master/pcp-complex-mission-service
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_MASTER:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_MASTER_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_MASTER_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_MASTER_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_MASTER_B64 is not valid base64. Set KUBE_CONFIG_MASTER to raw kubeconfig or KUBE_CONFIG_MASTER_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_MASTER or KUBE_CONFIG_MASTER_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${COMPLEX_MISSION_SERVICE_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${COMPLEX_MISSION_SERVICE_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$COMPLEX_MISSION_SERVICE_HELM_RELEASE"
|
||||
"$COMPLEX_MISSION_SERVICE_HELM_CHART_DIR"
|
||||
--namespace "$COMPLEX_MISSION_SERVICE_K8S_NAMESPACE_MASTER"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 10m
|
||||
-f "$COMPLEX_MISSION_SERVICE_HELM_CHART_DIR/values.yaml"
|
||||
-f "$COMPLEX_MISSION_SERVICE_HELM_CHART_DIR/values-master.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=master
|
||||
--set app.configLabel=master
|
||||
|
||||
tle-monitoring:test:
|
||||
stage: test
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
services:
|
||||
- name: repo.nstart.cloud/postgis/postgis:16-3.4
|
||||
alias: postgres
|
||||
variables:
|
||||
POSTGRES_DB: "pcp_tle"
|
||||
POSTGRES_USER: "postgres"
|
||||
POSTGRES_PASSWORD: "password"
|
||||
SPRING_DATASOURCE_URL: "jdbc:postgresql://postgres:5432/pcp_tle"
|
||||
SPRING_DATASOURCE_USERNAME: "postgres"
|
||||
SPRING_DATASOURCE_PASSWORD: "password"
|
||||
SPRING_TASK_SCHEDULING_ENABLED: "false"
|
||||
extends:
|
||||
- .tle-monitoring:rules:test
|
||||
- .pcp-gradle-cache
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:tle-monitoring-service:test
|
||||
artifacts:
|
||||
when: always
|
||||
reports:
|
||||
junit:
|
||||
- services/tle-monitoring-service/build/test-results/test/*.xml
|
||||
paths:
|
||||
- services/tle-monitoring-service/build/reports/tests/
|
||||
expire_in: 7 days
|
||||
|
||||
tle-monitoring:build:
|
||||
stage: build
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .tle-monitoring:rules:build-and-image
|
||||
- .pcp-gradle-cache
|
||||
needs:
|
||||
- job: tle-monitoring:test
|
||||
artifacts: true
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:tle-monitoring-service:bootJar
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- services/tle-monitoring-service/build/libs/*.jar
|
||||
expire_in: 7 days
|
||||
|
||||
tle-monitoring:package:
|
||||
stage: package
|
||||
extends:
|
||||
- .tle-monitoring:rules:build-and-image
|
||||
- .pcp-docker-build
|
||||
needs:
|
||||
- job: tle-monitoring:build
|
||||
artifacts: true
|
||||
script:
|
||||
- 'echo "TLE_MONITORING_IMAGE_REPOSITORY=$TLE_MONITORING_IMAGE_REPOSITORY"'
|
||||
- |
|
||||
JAR_COUNT="$(find "$TLE_MONITORING_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | wc -l)"
|
||||
|
||||
if [ "$JAR_COUNT" -ne 1 ]; then
|
||||
echo "Expected exactly one executable jar, found: $JAR_COUNT"
|
||||
find "$TLE_MONITORING_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' -print || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
JAR_FILE="$(find "$TLE_MONITORING_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | head -n 1)"
|
||||
- rm -rf docker-context
|
||||
- mkdir -p docker-context/build/libs
|
||||
- cp "$TLE_MONITORING_SERVICE_DIR/Dockerfile" docker-context/Dockerfile
|
||||
- cp "$JAR_FILE" docker-context/build/libs/app.jar
|
||||
- find docker-context -maxdepth 4 -type f -print -exec ls -la {} \;
|
||||
- docker build --file docker-context/Dockerfile --tag "$TLE_MONITORING_IMAGE_REPOSITORY:$TLE_MONITORING_IMAGE_TAG" docker-context
|
||||
- docker push "$TLE_MONITORING_IMAGE_REPOSITORY:$TLE_MONITORING_IMAGE_TAG"
|
||||
- printf "TLE_MONITORING_IMAGE=%s\n" "$TLE_MONITORING_IMAGE_REPOSITORY:$TLE_MONITORING_IMAGE_TAG" > tle-monitoring-image.env
|
||||
artifacts:
|
||||
reports:
|
||||
dotenv: tle-monitoring-image.env
|
||||
expire_in: 7 days
|
||||
|
||||
tle-monitoring:deploy:dev:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .tle-monitoring:rules:deploy-dev
|
||||
- .pcp-helm-deploy
|
||||
needs:
|
||||
- job: tle-monitoring:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: dev/tle-monitoring-service
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_DEV:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_DEV_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_DEV_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_DEV_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_DEV_B64 is not valid base64. Set KUBE_CONFIG_DEV to raw kubeconfig or KUBE_CONFIG_DEV_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_DEV or KUBE_CONFIG_DEV_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${TLE_MONITORING_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${TLE_MONITORING_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$TLE_MONITORING_HELM_RELEASE"
|
||||
"$TLE_MONITORING_HELM_CHART_DIR"
|
||||
--namespace "$TLE_MONITORING_K8S_NAMESPACE_DEV"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 15m
|
||||
-f "$TLE_MONITORING_HELM_CHART_DIR/values.yaml"
|
||||
-f "$TLE_MONITORING_HELM_CHART_DIR/values-dev.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=dev
|
||||
--set app.configLabel=dev
|
||||
|
||||
tle-monitoring:deploy:master:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .tle-monitoring:rules:deploy-master
|
||||
- .pcp-helm-deploy
|
||||
needs:
|
||||
- job: tle-monitoring:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: master/tle-monitoring-service
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_MASTER:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_MASTER_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_MASTER_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_MASTER_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_MASTER_B64 is not valid base64. Set KUBE_CONFIG_MASTER to raw kubeconfig or KUBE_CONFIG_MASTER_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_MASTER or KUBE_CONFIG_MASTER_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${TLE_MONITORING_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${TLE_MONITORING_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$TLE_MONITORING_HELM_RELEASE"
|
||||
"$TLE_MONITORING_HELM_CHART_DIR"
|
||||
--namespace "$TLE_MONITORING_K8S_NAMESPACE_MASTER"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 15m
|
||||
-f "$TLE_MONITORING_HELM_CHART_DIR/values.yaml"
|
||||
-f "$TLE_MONITORING_HELM_CHART_DIR/values-master.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=master
|
||||
--set app.configLabel=master
|
||||
@@ -0,0 +1,244 @@
|
||||
variables:
|
||||
GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle"
|
||||
|
||||
COVERAGE_SCHEME_SERVICE_DIR: "services/pcp-coverage-scheme-service"
|
||||
COVERAGE_SCHEME_HELM_CHART_DIR: "helm/pcp-coverage-scheme-service"
|
||||
COVERAGE_SCHEME_HELM_RELEASE: "pcp-coverage-scheme-service"
|
||||
COVERAGE_SCHEME_IMAGE_REPOSITORY: "$INTERNAL_REGISTRY/pcp-coverage-scheme-service"
|
||||
COVERAGE_SCHEME_IMAGE_TAG: "$CI_COMMIT_SHORT_SHA"
|
||||
COVERAGE_SCHEME_K8S_NAMESPACE_DEV: "pcp-dev"
|
||||
COVERAGE_SCHEME_K8S_NAMESPACE_MASTER: "pcp-master"
|
||||
|
||||
.coverage_scheme_changes: &coverage_scheme_changes
|
||||
- services/pcp-coverage-scheme-service/**/*
|
||||
- libs/pcp-types-lib/**/*
|
||||
- build.gradle.kts
|
||||
- settings.gradle.kts
|
||||
- gradle.properties
|
||||
- .gitlab/ci/pcp-coverage-scheme-service.yml
|
||||
- helm/pcp-coverage-scheme-service/**/*
|
||||
- deploy/**/*
|
||||
|
||||
.coverage_scheme:rules:build-and-image:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *coverage_scheme_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *coverage_scheme_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *coverage_scheme_changes
|
||||
- when: never
|
||||
|
||||
.coverage_scheme:rules:test:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *coverage_scheme_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *coverage_scheme_changes
|
||||
when: manual
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *coverage_scheme_changes
|
||||
- when: never
|
||||
|
||||
.coverage_scheme:rules:deploy-dev:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *coverage_scheme_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.coverage_scheme:rules:deploy-master:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *coverage_scheme_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.coverage_scheme:gradle-cache:
|
||||
cache:
|
||||
key: "gradle-coverage-scheme-$CI_DEFAULT_BRANCH"
|
||||
paths:
|
||||
- .gradle/wrapper
|
||||
- .gradle/caches
|
||||
policy: pull-push
|
||||
|
||||
.coverage_scheme:docker-build:
|
||||
image: repo.nstart.cloud/library/docker:26
|
||||
services:
|
||||
- name: repo.nstart.cloud/library/docker:26-dind
|
||||
alias: docker
|
||||
command: ["--tls=false", "--insecure-registry=registry.k8s.265.nstart.local"]
|
||||
variables:
|
||||
DOCKER_HOST: tcp://docker:2375
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
DOCKER_BUILDKIT: "1"
|
||||
before_script:
|
||||
- docker version
|
||||
- docker info
|
||||
|
||||
.coverage_scheme:helm-deploy:
|
||||
image: repo.nstart.cloud/dtzar/helm-kubectl:3.14.0
|
||||
before_script:
|
||||
- mkdir -p /root/.kube
|
||||
- helm version
|
||||
after_script:
|
||||
- rm -f /root/.kube/config
|
||||
|
||||
coverage-scheme:test:
|
||||
stage: test
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .coverage_scheme:rules:test
|
||||
- .coverage_scheme:gradle-cache
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-coverage-scheme-service:test
|
||||
artifacts:
|
||||
when: always
|
||||
reports:
|
||||
junit:
|
||||
- services/pcp-coverage-scheme-service/build/test-results/test/*.xml
|
||||
paths:
|
||||
- services/pcp-coverage-scheme-service/build/reports/tests/
|
||||
expire_in: 7 days
|
||||
|
||||
coverage-scheme:build:
|
||||
stage: build
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .coverage_scheme:rules:build-and-image
|
||||
- .coverage_scheme:gradle-cache
|
||||
needs:
|
||||
- job: coverage-scheme:test
|
||||
artifacts: true
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-coverage-scheme-service:bootJar
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- services/pcp-coverage-scheme-service/build/libs/*.jar
|
||||
expire_in: 7 days
|
||||
|
||||
coverage-scheme:package:
|
||||
stage: package
|
||||
extends:
|
||||
- .coverage_scheme:rules:build-and-image
|
||||
- .coverage_scheme:docker-build
|
||||
needs:
|
||||
- job: coverage-scheme:build
|
||||
artifacts: true
|
||||
script:
|
||||
- 'echo "COVERAGE_SCHEME_IMAGE_REPOSITORY=$COVERAGE_SCHEME_IMAGE_REPOSITORY"'
|
||||
- |
|
||||
JAR_COUNT="$(find "$COVERAGE_SCHEME_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | wc -l)"
|
||||
|
||||
if [ "$JAR_COUNT" -ne 1 ]; then
|
||||
echo "Expected exactly one executable jar, found: $JAR_COUNT"
|
||||
find "$COVERAGE_SCHEME_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' -print || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
JAR_FILE="$(find "$COVERAGE_SCHEME_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | head -n 1)"
|
||||
- rm -rf docker-context
|
||||
- mkdir -p docker-context/build/libs
|
||||
- cp "$COVERAGE_SCHEME_SERVICE_DIR/Dockerfile" docker-context/Dockerfile
|
||||
- cp "$JAR_FILE" docker-context/build/libs/app.jar
|
||||
- find docker-context -maxdepth 4 -type f -print -exec ls -la {} \;
|
||||
- docker build --file docker-context/Dockerfile --tag "$COVERAGE_SCHEME_IMAGE_REPOSITORY:$COVERAGE_SCHEME_IMAGE_TAG" docker-context
|
||||
- docker push "$COVERAGE_SCHEME_IMAGE_REPOSITORY:$COVERAGE_SCHEME_IMAGE_TAG"
|
||||
- printf "COVERAGE_SCHEME_IMAGE=%s\n" "$COVERAGE_SCHEME_IMAGE_REPOSITORY:$COVERAGE_SCHEME_IMAGE_TAG" > coverage-scheme-image.env
|
||||
artifacts:
|
||||
reports:
|
||||
dotenv: coverage-scheme-image.env
|
||||
expire_in: 7 days
|
||||
|
||||
coverage-scheme:deploy:dev:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .coverage_scheme:rules:deploy-dev
|
||||
- .coverage_scheme:helm-deploy
|
||||
needs:
|
||||
- job: coverage-scheme:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: dev/pcp-coverage-scheme-service
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_DEV:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_DEV_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_DEV_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_DEV_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_DEV_B64 is not valid base64. Set KUBE_CONFIG_DEV to raw kubeconfig or KUBE_CONFIG_DEV_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_DEV or KUBE_CONFIG_DEV_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${COVERAGE_SCHEME_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${COVERAGE_SCHEME_IMAGE##*:}"'
|
||||
- >
|
||||
helm upgrade --install "$COVERAGE_SCHEME_HELM_RELEASE"
|
||||
"$COVERAGE_SCHEME_HELM_CHART_DIR"
|
||||
--namespace "$COVERAGE_SCHEME_K8S_NAMESPACE_DEV"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 10m
|
||||
-f "$COVERAGE_SCHEME_HELM_CHART_DIR/values.yaml"
|
||||
-f "$COVERAGE_SCHEME_HELM_CHART_DIR/values-dev.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=dev
|
||||
--set app.configLabel=dev
|
||||
|
||||
coverage-scheme:deploy:master:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .coverage_scheme:rules:deploy-master
|
||||
- .coverage_scheme:helm-deploy
|
||||
needs:
|
||||
- job: coverage-scheme:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: master/pcp-coverage-scheme-service
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_MASTER:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_MASTER_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_MASTER_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_MASTER_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_MASTER_B64 is not valid base64. Set KUBE_CONFIG_MASTER to raw kubeconfig or KUBE_CONFIG_MASTER_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_MASTER or KUBE_CONFIG_MASTER_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${COVERAGE_SCHEME_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${COVERAGE_SCHEME_IMAGE##*:}"'
|
||||
- >
|
||||
helm upgrade --install "$COVERAGE_SCHEME_HELM_RELEASE"
|
||||
"$COVERAGE_SCHEME_HELM_CHART_DIR"
|
||||
--namespace "$COVERAGE_SCHEME_K8S_NAMESPACE_MASTER"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 10m
|
||||
-f "$COVERAGE_SCHEME_HELM_CHART_DIR/values.yaml"
|
||||
-f "$COVERAGE_SCHEME_HELM_CHART_DIR/values-master.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=master
|
||||
--set app.configLabel=master
|
||||
@@ -0,0 +1,247 @@
|
||||
variables:
|
||||
GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle"
|
||||
|
||||
DYNAMIC_PLAN_SERVICE_DIR: "services/pcp-dynamic-plan-service"
|
||||
DYNAMIC_PLAN_HELM_CHART_DIR: "helm/pcp-dynamic-plan-service"
|
||||
DYNAMIC_PLAN_HELM_RELEASE: "pcp-dynamic-plan-service"
|
||||
DYNAMIC_PLAN_IMAGE_REPOSITORY: "$INTERNAL_REGISTRY/pcp-dynamic-plan-service"
|
||||
DYNAMIC_PLAN_IMAGE_TAG: "$CI_COMMIT_SHORT_SHA"
|
||||
DYNAMIC_PLAN_K8S_NAMESPACE_DEV: "pcp-dev"
|
||||
DYNAMIC_PLAN_K8S_NAMESPACE_MASTER: "pcp-master"
|
||||
|
||||
.dynamic_plan_changes: &dynamic_plan_changes
|
||||
- services/pcp-dynamic-plan-service/**/*
|
||||
- libs/ballistics-lib/**/*
|
||||
- libs/pcp-types-lib/**/*
|
||||
- build.gradle.kts
|
||||
- settings.gradle.kts
|
||||
- gradle.properties
|
||||
- .gitlab/ci/pcp-dynamic-plan-service.yml
|
||||
- helm/pcp-dynamic-plan-service/**/*
|
||||
- deploy/**/*
|
||||
|
||||
.dynamic_plan:rules:build-and-image:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *dynamic_plan_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *dynamic_plan_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *dynamic_plan_changes
|
||||
- when: never
|
||||
|
||||
.dynamic_plan:rules:test:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *dynamic_plan_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *dynamic_plan_changes
|
||||
when: manual
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *dynamic_plan_changes
|
||||
- when: never
|
||||
|
||||
.dynamic_plan:rules:deploy-dev:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *dynamic_plan_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.dynamic_plan:rules:deploy-master:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *dynamic_plan_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.dynamic_plan:gradle-cache:
|
||||
cache:
|
||||
key: "gradle-dynamic-plan-$CI_DEFAULT_BRANCH"
|
||||
paths:
|
||||
- .gradle/wrapper
|
||||
- .gradle/caches
|
||||
policy: pull-push
|
||||
|
||||
.dynamic_plan:docker-build:
|
||||
image: repo.nstart.cloud/library/docker:26
|
||||
services:
|
||||
- name: repo.nstart.cloud/library/docker:26-dind
|
||||
alias: docker
|
||||
command: ["--tls=false", "--insecure-registry=registry.k8s.265.nstart.local"]
|
||||
variables:
|
||||
DOCKER_HOST: tcp://docker:2375
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
DOCKER_BUILDKIT: "1"
|
||||
before_script:
|
||||
- docker version
|
||||
- docker info
|
||||
|
||||
.dynamic_plan:helm-deploy:
|
||||
image: repo.nstart.cloud/dtzar/helm-kubectl:3.14.0
|
||||
before_script:
|
||||
- mkdir -p /root/.kube
|
||||
- helm version
|
||||
after_script:
|
||||
- rm -f /root/.kube/config
|
||||
|
||||
dynamic-plan:test:
|
||||
stage: test
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .dynamic_plan:rules:test
|
||||
- .dynamic_plan:gradle-cache
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-dynamic-plan-service:test
|
||||
artifacts:
|
||||
when: always
|
||||
reports:
|
||||
junit:
|
||||
- services/pcp-dynamic-plan-service/build/test-results/test/*.xml
|
||||
paths:
|
||||
- services/pcp-dynamic-plan-service/build/reports/tests/
|
||||
expire_in: 7 days
|
||||
|
||||
dynamic-plan:build:
|
||||
stage: build
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .dynamic_plan:rules:build-and-image
|
||||
- .dynamic_plan:gradle-cache
|
||||
needs:
|
||||
- job: dynamic-plan:test
|
||||
artifacts: true
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-dynamic-plan-service:bootJar
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- services/pcp-dynamic-plan-service/build/libs/*.jar
|
||||
expire_in: 7 days
|
||||
|
||||
dynamic-plan:package:
|
||||
stage: package
|
||||
extends:
|
||||
- .dynamic_plan:rules:build-and-image
|
||||
- .dynamic_plan:docker-build
|
||||
needs:
|
||||
- job: dynamic-plan:build
|
||||
artifacts: true
|
||||
script:
|
||||
- 'echo "DYNAMIC_PLAN_IMAGE_REPOSITORY=$DYNAMIC_PLAN_IMAGE_REPOSITORY"'
|
||||
- |
|
||||
JAR_COUNT="$(find "$DYNAMIC_PLAN_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | wc -l)"
|
||||
|
||||
if [ "$JAR_COUNT" -ne 1 ]; then
|
||||
echo "Expected exactly one executable jar, found: $JAR_COUNT"
|
||||
find "$DYNAMIC_PLAN_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' -print || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
JAR_FILE="$(find "$DYNAMIC_PLAN_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | head -n 1)"
|
||||
- rm -rf docker-context
|
||||
- mkdir -p docker-context/build/libs
|
||||
- cp "$DYNAMIC_PLAN_SERVICE_DIR/Dockerfile" docker-context/Dockerfile
|
||||
- cp "$JAR_FILE" docker-context/build/libs/app.jar
|
||||
- find docker-context -maxdepth 4 -type f -print -exec ls -la {} \;
|
||||
- docker build --file docker-context/Dockerfile --tag "$DYNAMIC_PLAN_IMAGE_REPOSITORY:$DYNAMIC_PLAN_IMAGE_TAG" docker-context
|
||||
- docker push "$DYNAMIC_PLAN_IMAGE_REPOSITORY:$DYNAMIC_PLAN_IMAGE_TAG"
|
||||
- printf "DYNAMIC_PLAN_IMAGE=%s\n" "$DYNAMIC_PLAN_IMAGE_REPOSITORY:$DYNAMIC_PLAN_IMAGE_TAG" > dynamic-plan-image.env
|
||||
artifacts:
|
||||
reports:
|
||||
dotenv: dynamic-plan-image.env
|
||||
expire_in: 7 days
|
||||
|
||||
dynamic-plan:deploy:dev:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .dynamic_plan:rules:deploy-dev
|
||||
- .dynamic_plan:helm-deploy
|
||||
needs:
|
||||
- job: dynamic-plan:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: dev/pcp-dynamic-plan-service
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_DEV:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_DEV_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_DEV_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_DEV_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_DEV_B64 is not valid base64. Set KUBE_CONFIG_DEV to raw kubeconfig or KUBE_CONFIG_DEV_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_DEV or KUBE_CONFIG_DEV_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${DYNAMIC_PLAN_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${DYNAMIC_PLAN_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$DYNAMIC_PLAN_HELM_RELEASE"
|
||||
"$DYNAMIC_PLAN_HELM_CHART_DIR"
|
||||
--namespace "$DYNAMIC_PLAN_K8S_NAMESPACE_DEV"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 10m
|
||||
-f "$DYNAMIC_PLAN_HELM_CHART_DIR/values.yaml"
|
||||
-f "$DYNAMIC_PLAN_HELM_CHART_DIR/values-dev.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=dev
|
||||
--set app.configLabel=dev
|
||||
|
||||
dynamic-plan:deploy:master:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .dynamic_plan:rules:deploy-master
|
||||
- .dynamic_plan:helm-deploy
|
||||
needs:
|
||||
- job: dynamic-plan:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: master/pcp-dynamic-plan-service
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_MASTER:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_MASTER_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_MASTER_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_MASTER_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_MASTER_B64 is not valid base64. Set KUBE_CONFIG_MASTER to raw kubeconfig or KUBE_CONFIG_MASTER_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_MASTER or KUBE_CONFIG_MASTER_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${DYNAMIC_PLAN_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${DYNAMIC_PLAN_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$DYNAMIC_PLAN_HELM_RELEASE"
|
||||
"$DYNAMIC_PLAN_HELM_CHART_DIR"
|
||||
--namespace "$DYNAMIC_PLAN_K8S_NAMESPACE_MASTER"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 10m
|
||||
-f "$DYNAMIC_PLAN_HELM_CHART_DIR/values.yaml"
|
||||
-f "$DYNAMIC_PLAN_HELM_CHART_DIR/values-master.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=master
|
||||
--set app.configLabel=master
|
||||
@@ -0,0 +1,246 @@
|
||||
variables:
|
||||
GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle"
|
||||
|
||||
MISSION_PLANING_SERVICE_DIR: "services/pcp-mission-planing-service"
|
||||
MISSION_PLANING_HELM_CHART_DIR: "helm/pcp-mission-planing-service"
|
||||
MISSION_PLANING_HELM_RELEASE: "pcp-mission-planing-service"
|
||||
MISSION_PLANING_IMAGE_REPOSITORY: "$INTERNAL_REGISTRY/pcp-mission-planing-service"
|
||||
MISSION_PLANING_IMAGE_TAG: "$CI_COMMIT_SHORT_SHA"
|
||||
MISSION_PLANING_K8S_NAMESPACE_DEV: "pcp-dev"
|
||||
MISSION_PLANING_K8S_NAMESPACE_MASTER: "pcp-master"
|
||||
|
||||
.mission_planing_changes: &mission_planing_changes
|
||||
- services/pcp-mission-planing-service/**/*
|
||||
- libs/ballistics-lib/**/*
|
||||
- libs/pcp-types-lib/**/*
|
||||
- build.gradle.kts
|
||||
- settings.gradle.kts
|
||||
- .gitlab/ci/pcp-mission-planing-service.yml
|
||||
- helm/pcp-mission-planing-service/**/*
|
||||
- deploy/**/*
|
||||
|
||||
.mission-planing:rules:build-and-image:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *mission_planing_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *mission_planing_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *mission_planing_changes
|
||||
- when: never
|
||||
|
||||
.mission-planing:rules:test:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *mission_planing_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *mission_planing_changes
|
||||
when: manual
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *mission_planing_changes
|
||||
- when: never
|
||||
|
||||
.mission-planing:rules:deploy-dev:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *mission_planing_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.mission-planing:rules:deploy-master:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *mission_planing_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.mission-planing:gradle-cache:
|
||||
cache:
|
||||
key: "gradle-mission-planing-$CI_DEFAULT_BRANCH"
|
||||
paths:
|
||||
- .gradle/wrapper
|
||||
- .gradle/caches
|
||||
policy: pull-push
|
||||
|
||||
.mission-planing:docker-build:
|
||||
image: repo.nstart.cloud/library/docker:26
|
||||
services:
|
||||
- name: repo.nstart.cloud/library/docker:26-dind
|
||||
alias: docker
|
||||
command: ["--tls=false", "--insecure-registry=registry.k8s.265.nstart.local"]
|
||||
variables:
|
||||
DOCKER_HOST: tcp://docker:2375
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
DOCKER_BUILDKIT: "1"
|
||||
before_script:
|
||||
- docker version
|
||||
- docker info
|
||||
|
||||
.mission-planing:helm-deploy:
|
||||
image: repo.nstart.cloud/dtzar/helm-kubectl:3.14.0
|
||||
before_script:
|
||||
- mkdir -p /root/.kube
|
||||
- helm version
|
||||
after_script:
|
||||
- rm -f /root/.kube/config
|
||||
|
||||
mission-planing:test:
|
||||
stage: test
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .mission-planing:rules:test
|
||||
- .mission-planing:gradle-cache
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-mission-planing-service:test
|
||||
artifacts:
|
||||
when: always
|
||||
reports:
|
||||
junit:
|
||||
- services/pcp-mission-planing-service/build/test-results/test/*.xml
|
||||
paths:
|
||||
- services/pcp-mission-planing-service/build/reports/tests/
|
||||
expire_in: 7 days
|
||||
|
||||
mission-planing:build:
|
||||
stage: build
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .mission-planing:rules:build-and-image
|
||||
- .mission-planing:gradle-cache
|
||||
needs:
|
||||
- job: mission-planing:test
|
||||
artifacts: true
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-mission-planing-service:bootJar
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- services/pcp-mission-planing-service/build/libs/*.jar
|
||||
expire_in: 7 days
|
||||
|
||||
mission-planing:package:
|
||||
stage: package
|
||||
extends:
|
||||
- .mission-planing:rules:build-and-image
|
||||
- .mission-planing:docker-build
|
||||
needs:
|
||||
- job: mission-planing:build
|
||||
artifacts: true
|
||||
script:
|
||||
- 'echo "MISSION_PLANING_IMAGE_REPOSITORY=$MISSION_PLANING_IMAGE_REPOSITORY"'
|
||||
- |
|
||||
JAR_COUNT="$(find "$MISSION_PLANING_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | wc -l)"
|
||||
|
||||
if [ "$JAR_COUNT" -ne 1 ]; then
|
||||
echo "Expected exactly one executable jar, found: $JAR_COUNT"
|
||||
find "$MISSION_PLANING_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' -print || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
JAR_FILE="$(find "$MISSION_PLANING_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | head -n 1)"
|
||||
- rm -rf docker-context
|
||||
- mkdir -p docker-context/build/libs
|
||||
- cp "$MISSION_PLANING_SERVICE_DIR/Dockerfile" docker-context/Dockerfile
|
||||
- cp "$JAR_FILE" docker-context/build/libs/app.jar
|
||||
- find docker-context -maxdepth 4 -type f -print -exec ls -la {} \;
|
||||
- docker build --file docker-context/Dockerfile --tag "$MISSION_PLANING_IMAGE_REPOSITORY:$MISSION_PLANING_IMAGE_TAG" docker-context
|
||||
- docker push "$MISSION_PLANING_IMAGE_REPOSITORY:$MISSION_PLANING_IMAGE_TAG"
|
||||
- printf "MISSION_PLANING_IMAGE=%s\n" "$MISSION_PLANING_IMAGE_REPOSITORY:$MISSION_PLANING_IMAGE_TAG" > mission-planing-image.env
|
||||
artifacts:
|
||||
reports:
|
||||
dotenv: mission-planing-image.env
|
||||
expire_in: 7 days
|
||||
|
||||
mission-planing:deploy:dev:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .mission-planing:rules:deploy-dev
|
||||
- .mission-planing:helm-deploy
|
||||
needs:
|
||||
- job: mission-planing:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: dev/pcp-mission-planing-service
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_DEV:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_DEV_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_DEV_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_DEV_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_DEV_B64 is not valid base64. Set KUBE_CONFIG_DEV to raw kubeconfig or KUBE_CONFIG_DEV_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_DEV or KUBE_CONFIG_DEV_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${MISSION_PLANING_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${MISSION_PLANING_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$MISSION_PLANING_HELM_RELEASE"
|
||||
"$MISSION_PLANING_HELM_CHART_DIR"
|
||||
--namespace "$MISSION_PLANING_K8S_NAMESPACE_DEV"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 10m
|
||||
-f "$MISSION_PLANING_HELM_CHART_DIR/values.yaml"
|
||||
-f "$MISSION_PLANING_HELM_CHART_DIR/values-dev.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=dev
|
||||
--set app.configLabel=dev
|
||||
|
||||
mission-planing:deploy:master:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .mission-planing:rules:deploy-master
|
||||
- .mission-planing:helm-deploy
|
||||
needs:
|
||||
- job: mission-planing:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: master/pcp-mission-planing-service
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_MASTER:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_MASTER_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_MASTER_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_MASTER_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_MASTER_B64 is not valid base64. Set KUBE_CONFIG_MASTER to raw kubeconfig or KUBE_CONFIG_MASTER_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_MASTER or KUBE_CONFIG_MASTER_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${MISSION_PLANING_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${MISSION_PLANING_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$MISSION_PLANING_HELM_RELEASE"
|
||||
"$MISSION_PLANING_HELM_CHART_DIR"
|
||||
--namespace "$MISSION_PLANING_K8S_NAMESPACE_MASTER"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 10m
|
||||
-f "$MISSION_PLANING_HELM_CHART_DIR/values.yaml"
|
||||
-f "$MISSION_PLANING_HELM_CHART_DIR/values-master.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=master
|
||||
--set app.configLabel=master
|
||||
@@ -0,0 +1,245 @@
|
||||
variables:
|
||||
GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle"
|
||||
|
||||
REQUEST_SERVICE_DIR: "services/pcp-request-service"
|
||||
REQUEST_HELM_CHART_DIR: "helm/pcp-request-service"
|
||||
REQUEST_HELM_RELEASE: "pcp-request-service"
|
||||
REQUEST_IMAGE_REPOSITORY: "$INTERNAL_REGISTRY/pcp-request-service"
|
||||
REQUEST_IMAGE_TAG: "$CI_COMMIT_SHORT_SHA"
|
||||
REQUEST_K8S_NAMESPACE_DEV: "pcp-dev"
|
||||
REQUEST_K8S_NAMESPACE_MASTER: "pcp-master"
|
||||
|
||||
.request_changes: &request_changes
|
||||
- services/pcp-request-service/**/*
|
||||
- libs/pcp-types-lib/**/*
|
||||
- build.gradle.kts
|
||||
- settings.gradle.kts
|
||||
- .gitlab/ci/pcp-request-service.yml
|
||||
- helm/pcp-request-service/**/*
|
||||
- deploy/**/*
|
||||
|
||||
.request:rules:build-and-image:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *request_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *request_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *request_changes
|
||||
- when: never
|
||||
|
||||
.request:rules:test:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *request_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *request_changes
|
||||
when: manual
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *request_changes
|
||||
- when: never
|
||||
|
||||
.request:rules:deploy-dev:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *request_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.request:rules:deploy-master:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *request_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.request:gradle-cache:
|
||||
cache:
|
||||
key: "gradle-request-$CI_DEFAULT_BRANCH"
|
||||
paths:
|
||||
- .gradle/wrapper
|
||||
- .gradle/caches
|
||||
policy: pull-push
|
||||
|
||||
.request:docker-build:
|
||||
image: repo.nstart.cloud/library/docker:26
|
||||
services:
|
||||
- name: repo.nstart.cloud/library/docker:26-dind
|
||||
alias: docker
|
||||
command: ["--tls=false", "--insecure-registry=registry.k8s.265.nstart.local"]
|
||||
variables:
|
||||
DOCKER_HOST: tcp://docker:2375
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
DOCKER_BUILDKIT: "1"
|
||||
before_script:
|
||||
- docker version
|
||||
- docker info
|
||||
|
||||
.request:helm-deploy:
|
||||
image: repo.nstart.cloud/dtzar/helm-kubectl:3.14.0
|
||||
before_script:
|
||||
- mkdir -p /root/.kube
|
||||
- helm version
|
||||
after_script:
|
||||
- rm -f /root/.kube/config
|
||||
|
||||
request:test:
|
||||
stage: test
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .request:rules:test
|
||||
- .request:gradle-cache
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-request-service:test
|
||||
artifacts:
|
||||
when: always
|
||||
reports:
|
||||
junit:
|
||||
- services/pcp-request-service/build/test-results/test/*.xml
|
||||
paths:
|
||||
- services/pcp-request-service/build/reports/tests/
|
||||
expire_in: 7 days
|
||||
|
||||
request:build:
|
||||
stage: build
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .request:rules:build-and-image
|
||||
- .request:gradle-cache
|
||||
needs:
|
||||
- job: request:test
|
||||
artifacts: true
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-request-service:bootJar
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- services/pcp-request-service/build/libs/*.jar
|
||||
expire_in: 7 days
|
||||
|
||||
request:package:
|
||||
stage: package
|
||||
extends:
|
||||
- .request:rules:build-and-image
|
||||
- .request:docker-build
|
||||
needs:
|
||||
- job: request:build
|
||||
artifacts: true
|
||||
script:
|
||||
- 'echo "REQUEST_IMAGE_REPOSITORY=$REQUEST_IMAGE_REPOSITORY"'
|
||||
- |
|
||||
JAR_COUNT="$(find "$REQUEST_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | wc -l)"
|
||||
|
||||
if [ "$JAR_COUNT" -ne 1 ]; then
|
||||
echo "Expected exactly one executable jar, found: $JAR_COUNT"
|
||||
find "$REQUEST_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' -print || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
JAR_FILE="$(find "$REQUEST_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | head -n 1)"
|
||||
- rm -rf docker-context
|
||||
- mkdir -p docker-context/build/libs
|
||||
- cp "$REQUEST_SERVICE_DIR/Dockerfile" docker-context/Dockerfile
|
||||
- cp "$JAR_FILE" docker-context/build/libs/app.jar
|
||||
- find docker-context -maxdepth 4 -type f -print -exec ls -la {} \;
|
||||
- docker build --file docker-context/Dockerfile --tag "$REQUEST_IMAGE_REPOSITORY:$REQUEST_IMAGE_TAG" docker-context
|
||||
- docker push "$REQUEST_IMAGE_REPOSITORY:$REQUEST_IMAGE_TAG"
|
||||
- printf "REQUEST_IMAGE=%s\n" "$REQUEST_IMAGE_REPOSITORY:$REQUEST_IMAGE_TAG" > request-image.env
|
||||
artifacts:
|
||||
reports:
|
||||
dotenv: request-image.env
|
||||
expire_in: 7 days
|
||||
|
||||
request:deploy:dev:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .request:rules:deploy-dev
|
||||
- .request:helm-deploy
|
||||
needs:
|
||||
- job: request:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: dev/pcp-request-service
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_DEV:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_DEV_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_DEV_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_DEV_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_DEV_B64 is not valid base64. Set KUBE_CONFIG_DEV to raw kubeconfig or KUBE_CONFIG_DEV_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_DEV or KUBE_CONFIG_DEV_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${REQUEST_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${REQUEST_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$REQUEST_HELM_RELEASE"
|
||||
"$REQUEST_HELM_CHART_DIR"
|
||||
--namespace "$REQUEST_K8S_NAMESPACE_DEV"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 15m
|
||||
-f "$REQUEST_HELM_CHART_DIR/values.yaml"
|
||||
-f "$REQUEST_HELM_CHART_DIR/values-dev.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=dev
|
||||
--set app.configLabel=dev
|
||||
|
||||
request:deploy:master:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .request:rules:deploy-master
|
||||
- .request:helm-deploy
|
||||
needs:
|
||||
- job: request:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: master/pcp-request-service
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_MASTER:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_MASTER_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_MASTER_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_MASTER_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_MASTER_B64 is not valid base64. Set KUBE_CONFIG_MASTER to raw kubeconfig or KUBE_CONFIG_MASTER_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_MASTER or KUBE_CONFIG_MASTER_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${REQUEST_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${REQUEST_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$REQUEST_HELM_RELEASE"
|
||||
"$REQUEST_HELM_CHART_DIR"
|
||||
--namespace "$REQUEST_K8S_NAMESPACE_MASTER"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 15m
|
||||
-f "$REQUEST_HELM_CHART_DIR/values.yaml"
|
||||
-f "$REQUEST_HELM_CHART_DIR/values-master.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=master
|
||||
--set app.configLabel=master
|
||||
@@ -0,0 +1,245 @@
|
||||
variables:
|
||||
GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle"
|
||||
|
||||
SATELLITE_CATALOG_SERVICE_DIR: "services/pcp-satellite-catalog-service"
|
||||
SATELLITE_CATALOG_HELM_CHART_DIR: "helm/pcp-satellite-catalog-service"
|
||||
SATELLITE_CATALOG_HELM_RELEASE: "pcp-satellite-catalog-service"
|
||||
SATELLITE_CATALOG_IMAGE_REPOSITORY: "$INTERNAL_REGISTRY/pcp-satellite-catalog-service"
|
||||
SATELLITE_CATALOG_IMAGE_TAG: "$CI_COMMIT_SHORT_SHA"
|
||||
SATELLITE_CATALOG_K8S_NAMESPACE_DEV: "pcp-dev"
|
||||
SATELLITE_CATALOG_K8S_NAMESPACE_MASTER: "pcp-master"
|
||||
|
||||
.satellite_catalog_changes: &satellite_catalog_changes
|
||||
- services/pcp-satellite-catalog-service/**/*
|
||||
- libs/pcp-types-lib/**/*
|
||||
- build.gradle.kts
|
||||
- settings.gradle.kts
|
||||
- .gitlab/ci/pcp-satellite-catalog-service.*
|
||||
- helm/pcp-satellite-catalog-service/**/*
|
||||
- deploy/**/*
|
||||
|
||||
.satellite-catalog:rules:build-and-image:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *satellite_catalog_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *satellite_catalog_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *satellite_catalog_changes
|
||||
- when: never
|
||||
|
||||
.satellite-catalog:rules:test:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *satellite_catalog_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *satellite_catalog_changes
|
||||
when: manual
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *satellite_catalog_changes
|
||||
- when: never
|
||||
|
||||
.satellite-catalog:rules:deploy-dev:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *satellite_catalog_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.satellite-catalog:rules:deploy-master:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *satellite_catalog_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.satellite-catalog:gradle-cache:
|
||||
cache:
|
||||
key: "gradle-satellite-catalog-$CI_DEFAULT_BRANCH"
|
||||
paths:
|
||||
- .gradle/wrapper
|
||||
- .gradle/caches
|
||||
policy: pull-push
|
||||
|
||||
.satellite-catalog:docker-build:
|
||||
image: repo.nstart.cloud/library/docker:26
|
||||
services:
|
||||
- name: repo.nstart.cloud/library/docker:26-dind
|
||||
alias: docker
|
||||
command: ["--tls=false", "--insecure-registry=registry.k8s.265.nstart.local"]
|
||||
variables:
|
||||
DOCKER_HOST: tcp://docker:2375
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
DOCKER_BUILDKIT: "1"
|
||||
before_script:
|
||||
- docker version
|
||||
- docker info
|
||||
|
||||
.satellite-catalog:helm-deploy:
|
||||
image: repo.nstart.cloud/dtzar/helm-kubectl:3.14.0
|
||||
before_script:
|
||||
- mkdir -p /root/.kube
|
||||
- helm version
|
||||
after_script:
|
||||
- rm -f /root/.kube/config
|
||||
|
||||
satellite-catalog:test:
|
||||
stage: test
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .satellite-catalog:rules:test
|
||||
- .satellite-catalog:gradle-cache
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-satellite-catalog-service:test
|
||||
artifacts:
|
||||
when: always
|
||||
reports:
|
||||
junit:
|
||||
- services/pcp-satellite-catalog-service/build/test-results/test/*.xml
|
||||
paths:
|
||||
- services/pcp-satellite-catalog-service/build/reports/tests/
|
||||
expire_in: 7 days
|
||||
|
||||
satellite-catalog:build:
|
||||
stage: build
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .satellite-catalog:rules:build-and-image
|
||||
- .satellite-catalog:gradle-cache
|
||||
needs:
|
||||
- job: satellite-catalog:test
|
||||
artifacts: true
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-satellite-catalog-service:bootJar
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- services/pcp-satellite-catalog-service/build/libs/*.jar
|
||||
expire_in: 7 days
|
||||
|
||||
satellite-catalog:package:
|
||||
stage: package
|
||||
extends:
|
||||
- .satellite-catalog:rules:build-and-image
|
||||
- .satellite-catalog:docker-build
|
||||
needs:
|
||||
- job: satellite-catalog:build
|
||||
artifacts: true
|
||||
script:
|
||||
- 'echo "SATELLITE_CATALOG_IMAGE_REPOSITORY=$SATELLITE_CATALOG_IMAGE_REPOSITORY"'
|
||||
- |
|
||||
JAR_COUNT="$(find "$SATELLITE_CATALOG_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | wc -l)"
|
||||
|
||||
if [ "$JAR_COUNT" -ne 1 ]; then
|
||||
echo "Expected exactly one executable jar, found: $JAR_COUNT"
|
||||
find "$SATELLITE_CATALOG_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' -print || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
JAR_FILE="$(find "$SATELLITE_CATALOG_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | head -n 1)"
|
||||
- rm -rf docker-context
|
||||
- mkdir -p docker-context/build/libs
|
||||
- cp "$SATELLITE_CATALOG_SERVICE_DIR/Dockerfile" docker-context/Dockerfile
|
||||
- cp "$JAR_FILE" docker-context/build/libs/app.jar
|
||||
- find docker-context -maxdepth 4 -type f -print -exec ls -la {} \;
|
||||
- docker build --file docker-context/Dockerfile --tag "$SATELLITE_CATALOG_IMAGE_REPOSITORY:$SATELLITE_CATALOG_IMAGE_TAG" docker-context
|
||||
- docker push "$SATELLITE_CATALOG_IMAGE_REPOSITORY:$SATELLITE_CATALOG_IMAGE_TAG"
|
||||
- printf "SATELLITE_CATALOG_IMAGE=%s\n" "$SATELLITE_CATALOG_IMAGE_REPOSITORY:$SATELLITE_CATALOG_IMAGE_TAG" > satellite-catalog-image.env
|
||||
artifacts:
|
||||
reports:
|
||||
dotenv: satellite-catalog-image.env
|
||||
expire_in: 7 days
|
||||
|
||||
satellite-catalog:deploy:dev:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .satellite-catalog:rules:deploy-dev
|
||||
- .satellite-catalog:helm-deploy
|
||||
needs:
|
||||
- job: satellite-catalog:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: dev/pcp-satellite-catalog-service
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_DEV:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_DEV_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_DEV_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_DEV_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_DEV_B64 is not valid base64. Set KUBE_CONFIG_DEV to raw kubeconfig or KUBE_CONFIG_DEV_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_DEV or KUBE_CONFIG_DEV_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${SATELLITE_CATALOG_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${SATELLITE_CATALOG_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$SATELLITE_CATALOG_HELM_RELEASE"
|
||||
"$SATELLITE_CATALOG_HELM_CHART_DIR"
|
||||
--namespace "$SATELLITE_CATALOG_K8S_NAMESPACE_DEV"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 10m
|
||||
-f "$SATELLITE_CATALOG_HELM_CHART_DIR/values.yaml"
|
||||
-f "$SATELLITE_CATALOG_HELM_CHART_DIR/values-dev.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=dev
|
||||
--set app.configLabel=dev
|
||||
|
||||
satellite-catalog:deploy:master:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .satellite-catalog:rules:deploy-master
|
||||
- .satellite-catalog:helm-deploy
|
||||
needs:
|
||||
- job: satellite-catalog:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: master/pcp-satellite-catalog-service
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_MASTER:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_MASTER_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_MASTER_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_MASTER_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_MASTER_B64 is not valid base64. Set KUBE_CONFIG_MASTER to raw kubeconfig or KUBE_CONFIG_MASTER_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_MASTER or KUBE_CONFIG_MASTER_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${SATELLITE_CATALOG_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${SATELLITE_CATALOG_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$SATELLITE_CATALOG_HELM_RELEASE"
|
||||
"$SATELLITE_CATALOG_HELM_CHART_DIR"
|
||||
--namespace "$SATELLITE_CATALOG_K8S_NAMESPACE_MASTER"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 10m
|
||||
-f "$SATELLITE_CATALOG_HELM_CHART_DIR/values.yaml"
|
||||
-f "$SATELLITE_CATALOG_HELM_CHART_DIR/values-master.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=master
|
||||
--set app.configLabel=master
|
||||
@@ -0,0 +1,191 @@
|
||||
variables:
|
||||
GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle"
|
||||
|
||||
SPRING_BOOT_ADMIN_SERVICE_DIR: "services/pcp-srpring-boot-admin-server"
|
||||
SPRING_BOOT_ADMIN_HELM_CHART_DIR: "helm/pcp-spring-boot-admin-server"
|
||||
SPRING_BOOT_ADMIN_HELM_RELEASE: "pcp-spring-boot-admin-server"
|
||||
SPRING_BOOT_ADMIN_IMAGE_REPOSITORY: "$INTERNAL_REGISTRY/pcp-spring-boot-admin-server"
|
||||
SPRING_BOOT_ADMIN_IMAGE_TAG: "$CI_COMMIT_SHORT_SHA"
|
||||
SPRING_BOOT_ADMIN_K8S_NAMESPACE_DEV: "pcp-dev"
|
||||
|
||||
.spring_boot_admin_changes: &spring_boot_admin_changes
|
||||
- services/pcp-srpring-boot-admin-server/**/*
|
||||
- build.gradle.kts
|
||||
- settings.gradle.kts
|
||||
- .gitlab/ci/pcp-spring-boot-admin-server.yml
|
||||
- helm/pcp-spring-boot-admin-server/**/*
|
||||
- deploy/**/*
|
||||
|
||||
.spring-boot-admin:rules:build-and-image:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *spring_boot_admin_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *spring_boot_admin_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *spring_boot_admin_changes
|
||||
- when: never
|
||||
|
||||
.spring-boot-admin:rules:test:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *spring_boot_admin_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *spring_boot_admin_changes
|
||||
when: manual
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *spring_boot_admin_changes
|
||||
- when: never
|
||||
|
||||
.spring-boot-admin:rules:deploy-dev:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *spring_boot_admin_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.spring-boot-admin:gradle-cache:
|
||||
cache:
|
||||
key: "gradle-spring-boot-admin-$CI_DEFAULT_BRANCH"
|
||||
paths:
|
||||
- .gradle/wrapper
|
||||
- .gradle/caches
|
||||
policy: pull-push
|
||||
|
||||
.spring-boot-admin:docker-build:
|
||||
image: repo.nstart.cloud/library/docker:26
|
||||
services:
|
||||
- name: repo.nstart.cloud/library/docker:26-dind
|
||||
alias: docker
|
||||
command: ["--tls=false", "--insecure-registry=registry.k8s.265.nstart.local"]
|
||||
variables:
|
||||
DOCKER_HOST: tcp://docker:2375
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
DOCKER_BUILDKIT: "1"
|
||||
before_script:
|
||||
- docker version
|
||||
- docker info
|
||||
|
||||
.spring-boot-admin:helm-deploy:
|
||||
image: repo.nstart.cloud/dtzar/helm-kubectl:3.14.0
|
||||
before_script:
|
||||
- mkdir -p /root/.kube
|
||||
- helm version
|
||||
after_script:
|
||||
- rm -f /root/.kube/config
|
||||
|
||||
spring-boot-admin:test:
|
||||
stage: test
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .spring-boot-admin:rules:test
|
||||
- .spring-boot-admin:gradle-cache
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-srpring-boot-admin-server:test
|
||||
artifacts:
|
||||
when: always
|
||||
reports:
|
||||
junit:
|
||||
- services/pcp-srpring-boot-admin-server/build/test-results/test/*.xml
|
||||
paths:
|
||||
- services/pcp-srpring-boot-admin-server/build/reports/tests/
|
||||
expire_in: 7 days
|
||||
|
||||
spring-boot-admin:build:
|
||||
stage: build
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .spring-boot-admin:rules:build-and-image
|
||||
- .spring-boot-admin:gradle-cache
|
||||
needs:
|
||||
- job: spring-boot-admin:test
|
||||
artifacts: true
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-srpring-boot-admin-server:bootJar
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- services/pcp-srpring-boot-admin-server/build/libs/*.jar
|
||||
expire_in: 7 days
|
||||
|
||||
spring-boot-admin:package:
|
||||
stage: package
|
||||
extends:
|
||||
- .spring-boot-admin:rules:build-and-image
|
||||
- .spring-boot-admin:docker-build
|
||||
needs:
|
||||
- job: spring-boot-admin:build
|
||||
artifacts: true
|
||||
script:
|
||||
- 'echo "SPRING_BOOT_ADMIN_IMAGE_REPOSITORY=$SPRING_BOOT_ADMIN_IMAGE_REPOSITORY"'
|
||||
- |
|
||||
JAR_COUNT="$(find "$SPRING_BOOT_ADMIN_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | wc -l)"
|
||||
|
||||
if [ "$JAR_COUNT" -ne 1 ]; then
|
||||
echo "Expected exactly one executable jar, found: $JAR_COUNT"
|
||||
find "$SPRING_BOOT_ADMIN_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' -print || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
JAR_FILE="$(find "$SPRING_BOOT_ADMIN_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | head -n 1)"
|
||||
- rm -rf docker-context
|
||||
- mkdir -p docker-context/build/libs
|
||||
- cp "$SPRING_BOOT_ADMIN_SERVICE_DIR/Dockerfile" docker-context/Dockerfile
|
||||
- cp "$JAR_FILE" docker-context/build/libs/app.jar
|
||||
- find docker-context -maxdepth 4 -type f -print -exec ls -la {} \;
|
||||
- docker build --file docker-context/Dockerfile --tag "$SPRING_BOOT_ADMIN_IMAGE_REPOSITORY:$SPRING_BOOT_ADMIN_IMAGE_TAG" docker-context
|
||||
- docker push "$SPRING_BOOT_ADMIN_IMAGE_REPOSITORY:$SPRING_BOOT_ADMIN_IMAGE_TAG"
|
||||
- printf "SPRING_BOOT_ADMIN_IMAGE=%s\n" "$SPRING_BOOT_ADMIN_IMAGE_REPOSITORY:$SPRING_BOOT_ADMIN_IMAGE_TAG" > spring-boot-admin-image.env
|
||||
artifacts:
|
||||
reports:
|
||||
dotenv: spring-boot-admin-image.env
|
||||
expire_in: 7 days
|
||||
|
||||
spring-boot-admin:deploy:dev:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .spring-boot-admin:rules:deploy-dev
|
||||
- .spring-boot-admin:helm-deploy
|
||||
needs:
|
||||
- job: spring-boot-admin:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: dev/pcp-spring-boot-admin-server
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_DEV:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_DEV_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_DEV_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_DEV_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_DEV_B64 is not valid base64. Set KUBE_CONFIG_DEV to raw kubeconfig or KUBE_CONFIG_DEV_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_DEV or KUBE_CONFIG_DEV_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${SPRING_BOOT_ADMIN_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${SPRING_BOOT_ADMIN_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$SPRING_BOOT_ADMIN_HELM_RELEASE"
|
||||
"$SPRING_BOOT_ADMIN_HELM_CHART_DIR"
|
||||
--namespace "$SPRING_BOOT_ADMIN_K8S_NAMESPACE_DEV"
|
||||
--create-namespace
|
||||
--values "$SPRING_BOOT_ADMIN_HELM_CHART_DIR/values.yaml"
|
||||
--values "$SPRING_BOOT_ADMIN_HELM_CHART_DIR/values-dev.yaml"
|
||||
--set-string image.repository="$IMAGE_REPOSITORY"
|
||||
--set-string image.tag="$IMAGE_TAG"
|
||||
--set-string app.profile=dev
|
||||
--set-string app.configLabel=dev
|
||||
--atomic
|
||||
--wait
|
||||
--timeout 15m
|
||||
@@ -0,0 +1,245 @@
|
||||
variables:
|
||||
GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle"
|
||||
|
||||
STATIONS_SERVICE_DIR: "services/pcp-stations-service"
|
||||
STATIONS_HELM_CHART_DIR: "helm/pcp-stations-service"
|
||||
STATIONS_HELM_RELEASE: "pcp-stations-service"
|
||||
STATIONS_IMAGE_REPOSITORY: "$INTERNAL_REGISTRY/pcp-stations-service"
|
||||
STATIONS_IMAGE_TAG: "$CI_COMMIT_SHORT_SHA"
|
||||
STATIONS_K8S_NAMESPACE_DEV: "pcp-dev"
|
||||
STATIONS_K8S_NAMESPACE_MASTER: "pcp-master"
|
||||
|
||||
.stations_changes: &stations_changes
|
||||
- services/pcp-stations-service/**/*
|
||||
- libs/pcp-types-lib/**/*
|
||||
- build.gradle.kts
|
||||
- settings.gradle.kts
|
||||
- .gitlab/ci/pcp-stations-service.*
|
||||
- helm/pcp-stations-service/**/*
|
||||
- deploy/**/*
|
||||
|
||||
.stations:rules:build-and-image:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *stations_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *stations_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *stations_changes
|
||||
- when: never
|
||||
|
||||
.stations:rules:test:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *stations_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *stations_changes
|
||||
when: manual
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *stations_changes
|
||||
- when: never
|
||||
|
||||
.stations:rules:deploy-dev:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *stations_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.stations:rules:deploy-master:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *stations_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.stations:gradle-cache:
|
||||
cache:
|
||||
key: "gradle-stations-$CI_DEFAULT_BRANCH"
|
||||
paths:
|
||||
- .gradle/wrapper
|
||||
- .gradle/caches
|
||||
policy: pull-push
|
||||
|
||||
.stations:docker-build:
|
||||
image: repo.nstart.cloud/library/docker:26
|
||||
services:
|
||||
- name: repo.nstart.cloud/library/docker:26-dind
|
||||
alias: docker
|
||||
command: ["--tls=false", "--insecure-registry=registry.k8s.265.nstart.local"]
|
||||
variables:
|
||||
DOCKER_HOST: tcp://docker:2375
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
DOCKER_BUILDKIT: "1"
|
||||
before_script:
|
||||
- docker version
|
||||
- docker info
|
||||
|
||||
.stations:helm-deploy:
|
||||
image: repo.nstart.cloud/dtzar/helm-kubectl:3.14.0
|
||||
before_script:
|
||||
- mkdir -p /root/.kube
|
||||
- helm version
|
||||
after_script:
|
||||
- rm -f /root/.kube/config
|
||||
|
||||
stations:test:
|
||||
stage: test
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .stations:rules:test
|
||||
- .stations:gradle-cache
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-stations-service:test
|
||||
artifacts:
|
||||
when: always
|
||||
reports:
|
||||
junit:
|
||||
- services/pcp-stations-service/build/test-results/test/*.xml
|
||||
paths:
|
||||
- services/pcp-stations-service/build/reports/tests/
|
||||
expire_in: 7 days
|
||||
|
||||
stations:build:
|
||||
stage: build
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .stations:rules:build-and-image
|
||||
- .stations:gradle-cache
|
||||
needs:
|
||||
- job: stations:test
|
||||
artifacts: true
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-stations-service:bootJar
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- services/pcp-stations-service/build/libs/*.jar
|
||||
expire_in: 7 days
|
||||
|
||||
stations:package:
|
||||
stage: package
|
||||
extends:
|
||||
- .stations:rules:build-and-image
|
||||
- .stations:docker-build
|
||||
needs:
|
||||
- job: stations:build
|
||||
artifacts: true
|
||||
script:
|
||||
- 'echo "STATIONS_IMAGE_REPOSITORY=$STATIONS_IMAGE_REPOSITORY"'
|
||||
- |
|
||||
JAR_COUNT="$(find "$STATIONS_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | wc -l)"
|
||||
|
||||
if [ "$JAR_COUNT" -ne 1 ]; then
|
||||
echo "Expected exactly one executable jar, found: $JAR_COUNT"
|
||||
find "$STATIONS_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' -print || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
JAR_FILE="$(find "$STATIONS_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | head -n 1)"
|
||||
- rm -rf docker-context
|
||||
- mkdir -p docker-context/build/libs
|
||||
- cp "$STATIONS_SERVICE_DIR/Dockerfile" docker-context/Dockerfile
|
||||
- cp "$JAR_FILE" docker-context/build/libs/app.jar
|
||||
- find docker-context -maxdepth 4 -type f -print -exec ls -la {} \;
|
||||
- docker build --file docker-context/Dockerfile --tag "$STATIONS_IMAGE_REPOSITORY:$STATIONS_IMAGE_TAG" docker-context
|
||||
- docker push "$STATIONS_IMAGE_REPOSITORY:$STATIONS_IMAGE_TAG"
|
||||
- printf "STATIONS_IMAGE=%s\n" "$STATIONS_IMAGE_REPOSITORY:$STATIONS_IMAGE_TAG" > stations-image.env
|
||||
artifacts:
|
||||
reports:
|
||||
dotenv: stations-image.env
|
||||
expire_in: 7 days
|
||||
|
||||
stations:deploy:dev:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .stations:rules:deploy-dev
|
||||
- .stations:helm-deploy
|
||||
needs:
|
||||
- job: stations:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: dev/pcp-stations-service
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_DEV:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_DEV_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_DEV_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_DEV_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_DEV_B64 is not valid base64. Set KUBE_CONFIG_DEV to raw kubeconfig or KUBE_CONFIG_DEV_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_DEV or KUBE_CONFIG_DEV_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${STATIONS_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${STATIONS_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$STATIONS_HELM_RELEASE"
|
||||
"$STATIONS_HELM_CHART_DIR"
|
||||
--namespace "$STATIONS_K8S_NAMESPACE_DEV"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 10m
|
||||
-f "$STATIONS_HELM_CHART_DIR/values.yaml"
|
||||
-f "$STATIONS_HELM_CHART_DIR/values-dev.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=dev
|
||||
--set app.configLabel=dev
|
||||
|
||||
stations:deploy:master:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .stations:rules:deploy-master
|
||||
- .stations:helm-deploy
|
||||
needs:
|
||||
- job: stations:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: master/pcp-stations-service
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_MASTER:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_MASTER_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_MASTER_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_MASTER_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_MASTER_B64 is not valid base64. Set KUBE_CONFIG_MASTER to raw kubeconfig or KUBE_CONFIG_MASTER_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_MASTER or KUBE_CONFIG_MASTER_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${STATIONS_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${STATIONS_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$STATIONS_HELM_RELEASE"
|
||||
"$STATIONS_HELM_CHART_DIR"
|
||||
--namespace "$STATIONS_K8S_NAMESPACE_MASTER"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 10m
|
||||
-f "$STATIONS_HELM_CHART_DIR/values.yaml"
|
||||
-f "$STATIONS_HELM_CHART_DIR/values-master.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=master
|
||||
--set app.configLabel=master
|
||||
@@ -0,0 +1,203 @@
|
||||
variables:
|
||||
TGU_SERVICE_DIR: "services/pcp-tgu-service"
|
||||
TGU_HELM_CHART_DIR: "helm/pcp-tgu-service"
|
||||
TGU_HELM_RELEASE: "pcp-tgu-service"
|
||||
TGU_IMAGE_REPOSITORY: "$INTERNAL_REGISTRY/pcp-tgu-service"
|
||||
TGU_IMAGE_TAG: "$CI_COMMIT_SHORT_SHA"
|
||||
TGU_K8S_NAMESPACE_DEV: "pcp-dev"
|
||||
TGU_K8S_NAMESPACE_MASTER: "pcp-master"
|
||||
|
||||
.tgu_changes: &tgu_changes
|
||||
- services/pcp-tgu-service/**/*
|
||||
# - libs/pcp-types-lib/**/*
|
||||
- build.gradle.kts
|
||||
- settings.gradle.kts
|
||||
- .gitlab/ci/pcp-tgu-service.yml
|
||||
- helm/pcp-tgu-service/**/*
|
||||
- deploy/**/*
|
||||
|
||||
.tgu:rules:build-and-image:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *tgu_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *tgu_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *tgu_changes
|
||||
- when: never
|
||||
|
||||
.tgu:rules:test:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *tgu_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *tgu_changes
|
||||
when: manual
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *tgu_changes
|
||||
- when: never
|
||||
|
||||
.tgu:rules:deploy-dev:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *tgu_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.tgu:rules:deploy-master:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *tgu_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.tgu:gradle-cache:
|
||||
cache:
|
||||
key: "gradle-tgu-$CI_DEFAULT_BRANCH"
|
||||
paths:
|
||||
- .gradle/wrapper
|
||||
- .gradle/caches
|
||||
policy: pull-push
|
||||
|
||||
.tgu:docker-build:
|
||||
image: docker:26
|
||||
services:
|
||||
- name: docker:26-dind
|
||||
alias: docker
|
||||
command: ["--tls=false", "--insecure-registry=registry.k8s.265.nstart.local"]
|
||||
variables:
|
||||
DOCKER_HOST: tcp://docker:2375
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
DOCKER_BUILDKIT: "1"
|
||||
before_script:
|
||||
- docker version
|
||||
- docker info
|
||||
|
||||
.tgu:helm-deploy:
|
||||
image:
|
||||
name: alpine/helm:3.16.4
|
||||
entrypoint: [""]
|
||||
before_script:
|
||||
- mkdir -p ~/.kube
|
||||
- helm version
|
||||
|
||||
tgu:test:
|
||||
stage: test
|
||||
image: eclipse-temurin:21-jdk
|
||||
extends:
|
||||
- .tgu:rules:test
|
||||
- .tgu:gradle-cache
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-tgu-service:test
|
||||
artifacts:
|
||||
when: always
|
||||
reports:
|
||||
junit:
|
||||
- services/pcp-tgu-service/build/test-results/test/*.xml
|
||||
paths:
|
||||
- services/pcp-tgu-service/build/reports/tests/
|
||||
expire_in: 7 days
|
||||
|
||||
tgu:build:
|
||||
stage: build
|
||||
image: eclipse-temurin:21-jdk
|
||||
extends:
|
||||
- .tgu:rules:build-and-image
|
||||
- .tgu:gradle-cache
|
||||
needs:
|
||||
- job: tgu:test
|
||||
artifacts: true
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-tgu-service:bootJar
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- services/pcp-tgu-service/build/libs/*.jar
|
||||
expire_in: 7 days
|
||||
|
||||
tgu:package:
|
||||
stage: package
|
||||
extends:
|
||||
- .tgu:rules:build-and-image
|
||||
- .tgu:docker-build
|
||||
needs:
|
||||
- job: tgu:build
|
||||
artifacts: true
|
||||
script:
|
||||
- 'echo "TGU_IMAGE_REPOSITORY=$TGU_IMAGE_REPOSITORY"'
|
||||
- mkdir -p docker-context/build/libs
|
||||
- cp "$TGU_SERVICE_DIR/Dockerfile" docker-context/Dockerfile
|
||||
- cp "$TGU_SERVICE_DIR"/build/libs/*.jar docker-context/build/libs/
|
||||
- docker build --file docker-context/Dockerfile --tag "$TGU_IMAGE_REPOSITORY:$TGU_IMAGE_TAG" docker-context
|
||||
- docker push "$TGU_IMAGE_REPOSITORY:$TGU_IMAGE_TAG"
|
||||
- printf "TGU_IMAGE=%s\n" "$TGU_IMAGE_REPOSITORY:$TGU_IMAGE_TAG" > tgu-image.env
|
||||
artifacts:
|
||||
reports:
|
||||
dotenv: tgu-image.env
|
||||
expire_in: 7 days
|
||||
|
||||
tgu:deploy:dev:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .tgu:rules:deploy-dev
|
||||
- .tgu:helm-deploy
|
||||
needs:
|
||||
- job: tgu:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: dev/pcp-tgu-service
|
||||
script:
|
||||
- 'echo "$KUBE_CONFIG_DEV_B64" | base64 -d > ~/.kube/config'
|
||||
- chmod 600 ~/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${TGU_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${TGU_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$TGU_HELM_RELEASE"
|
||||
"$TGU_HELM_CHART_DIR"
|
||||
--namespace "$TGU_K8S_NAMESPACE_DEV"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 10m
|
||||
-f "$TGU_HELM_CHART_DIR/values.yaml"
|
||||
-f "$TGU_HELM_CHART_DIR/values-dev.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=dev
|
||||
--set app.configLabel=dev
|
||||
|
||||
tgu:deploy:master:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .tgu:rules:deploy-master
|
||||
- .tgu:helm-deploy
|
||||
needs:
|
||||
- job: tgu:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: master/pcp-tgu-service
|
||||
script:
|
||||
- 'echo "$KUBE_CONFIG_MASTER_B64" | base64 -d > ~/.kube/config'
|
||||
- chmod 600 ~/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${TGU_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${TGU_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$TGU_HELM_RELEASE"
|
||||
"$TGU_HELM_CHART_DIR"
|
||||
--namespace "$TGU_K8S_NAMESPACE_MASTER"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 10m
|
||||
-f "$TGU_HELM_CHART_DIR/values.yaml"
|
||||
-f "$TGU_HELM_CHART_DIR/values-master.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=master
|
||||
--set app.configLabel=master
|
||||
@@ -0,0 +1,246 @@
|
||||
variables:
|
||||
GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle"
|
||||
|
||||
UI_SERVICE_DIR: "services/pcp-ui-service"
|
||||
UI_HELM_CHART_DIR: "helm/pcp-ui-service"
|
||||
UI_HELM_RELEASE: "pcp-ui-service"
|
||||
UI_IMAGE_REPOSITORY: "$INTERNAL_REGISTRY/pcp-ui-service"
|
||||
UI_IMAGE_TAG: "$CI_COMMIT_SHORT_SHA"
|
||||
UI_K8S_NAMESPACE_DEV: "pcp-dev"
|
||||
UI_K8S_NAMESPACE_MASTER: "pcp-master"
|
||||
|
||||
.ui_changes: &ui_changes
|
||||
- services/pcp-ui-service/**/*
|
||||
- libs/ballistics-lib/**/*
|
||||
- libs/pcp-types-lib/**/*
|
||||
- build.gradle.kts
|
||||
- settings.gradle.kts
|
||||
- .gitlab/ci/pcp-ui-service.yml
|
||||
- helm/pcp-ui-service/**/*
|
||||
- deploy/**/*
|
||||
|
||||
.ui:rules:build-and-image:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *ui_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *ui_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *ui_changes
|
||||
- when: never
|
||||
|
||||
.ui:rules:test:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *ui_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *ui_changes
|
||||
when: manual
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *ui_changes
|
||||
- when: never
|
||||
|
||||
.ui:rules:deploy-dev:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *ui_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.ui:rules:deploy-master:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *ui_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.ui:gradle-cache:
|
||||
cache:
|
||||
key: "gradle-ui-$CI_DEFAULT_BRANCH"
|
||||
paths:
|
||||
- .gradle/wrapper
|
||||
- .gradle/caches
|
||||
policy: pull-push
|
||||
|
||||
.ui:docker-build:
|
||||
image: repo.nstart.cloud/library/docker:26
|
||||
services:
|
||||
- name: repo.nstart.cloud/library/docker:26-dind
|
||||
alias: docker
|
||||
command: ["--tls=false", "--insecure-registry=registry.k8s.265.nstart.local"]
|
||||
variables:
|
||||
DOCKER_HOST: tcp://docker:2375
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
DOCKER_BUILDKIT: "1"
|
||||
before_script:
|
||||
- docker version
|
||||
- docker info
|
||||
|
||||
.ui:helm-deploy:
|
||||
image: repo.nstart.cloud/dtzar/helm-kubectl:3.14.0
|
||||
before_script:
|
||||
- mkdir -p /root/.kube
|
||||
- helm version
|
||||
after_script:
|
||||
- rm -f /root/.kube/config
|
||||
|
||||
ui:test:
|
||||
stage: test
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .ui:rules:test
|
||||
- .ui:gradle-cache
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-ui-service:test
|
||||
artifacts:
|
||||
when: always
|
||||
reports:
|
||||
junit:
|
||||
- services/pcp-ui-service/build/test-results/test/*.xml
|
||||
paths:
|
||||
- services/pcp-ui-service/build/reports/tests/
|
||||
expire_in: 7 days
|
||||
|
||||
ui:build:
|
||||
stage: build
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .ui:rules:build-and-image
|
||||
- .ui:gradle-cache
|
||||
needs:
|
||||
- job: ui:test
|
||||
artifacts: true
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:pcp-ui-service:bootJar
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- services/pcp-ui-service/build/libs/*.jar
|
||||
expire_in: 7 days
|
||||
|
||||
ui:package:
|
||||
stage: package
|
||||
extends:
|
||||
- .ui:rules:build-and-image
|
||||
- .ui:docker-build
|
||||
needs:
|
||||
- job: ui:build
|
||||
artifacts: true
|
||||
script:
|
||||
- 'echo "UI_IMAGE_REPOSITORY=$UI_IMAGE_REPOSITORY"'
|
||||
- |
|
||||
JAR_COUNT="$(find "$UI_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | wc -l)"
|
||||
|
||||
if [ "$JAR_COUNT" -ne 1 ]; then
|
||||
echo "Expected exactly one executable jar, found: $JAR_COUNT"
|
||||
find "$UI_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' -print || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
JAR_FILE="$(find "$UI_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | head -n 1)"
|
||||
- rm -rf docker-context
|
||||
- mkdir -p docker-context/build/libs
|
||||
- cp "$UI_SERVICE_DIR/Dockerfile" docker-context/Dockerfile
|
||||
- cp "$JAR_FILE" docker-context/build/libs/app.jar
|
||||
- find docker-context -maxdepth 4 -type f -print -exec ls -la {} \;
|
||||
- docker build --file docker-context/Dockerfile --tag "$UI_IMAGE_REPOSITORY:$UI_IMAGE_TAG" docker-context
|
||||
- docker push "$UI_IMAGE_REPOSITORY:$UI_IMAGE_TAG"
|
||||
- printf "UI_IMAGE=%s\n" "$UI_IMAGE_REPOSITORY:$UI_IMAGE_TAG" > ui-image.env
|
||||
artifacts:
|
||||
reports:
|
||||
dotenv: ui-image.env
|
||||
expire_in: 7 days
|
||||
|
||||
ui:deploy:dev:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .ui:rules:deploy-dev
|
||||
- .ui:helm-deploy
|
||||
needs:
|
||||
- job: ui:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: dev/pcp-ui-service
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_DEV:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_DEV_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_DEV_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_DEV_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_DEV_B64 is not valid base64. Set KUBE_CONFIG_DEV to raw kubeconfig or KUBE_CONFIG_DEV_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_DEV or KUBE_CONFIG_DEV_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${UI_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${UI_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$UI_HELM_RELEASE"
|
||||
"$UI_HELM_CHART_DIR"
|
||||
--namespace "$UI_K8S_NAMESPACE_DEV"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 10m
|
||||
-f "$UI_HELM_CHART_DIR/values.yaml"
|
||||
-f "$UI_HELM_CHART_DIR/values-dev.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=dev
|
||||
--set app.configLabel=dev
|
||||
|
||||
ui:deploy:master:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .ui:rules:deploy-master
|
||||
- .ui:helm-deploy
|
||||
needs:
|
||||
- job: ui:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: master/pcp-ui-service
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_MASTER:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_MASTER_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_MASTER_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_MASTER_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_MASTER_B64 is not valid base64. Set KUBE_CONFIG_MASTER to raw kubeconfig or KUBE_CONFIG_MASTER_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_MASTER or KUBE_CONFIG_MASTER_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${UI_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${UI_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$UI_HELM_RELEASE"
|
||||
"$UI_HELM_CHART_DIR"
|
||||
--namespace "$UI_K8S_NAMESPACE_MASTER"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 10m
|
||||
-f "$UI_HELM_CHART_DIR/values.yaml"
|
||||
-f "$UI_HELM_CHART_DIR/values-master.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=master
|
||||
--set app.configLabel=master
|
||||
@@ -0,0 +1,256 @@
|
||||
variables:
|
||||
GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle"
|
||||
|
||||
SLOTS_SERVICE_DIR: "services/slots-service"
|
||||
SLOTS_HELM_CHART_DIR: "helm/slots-service"
|
||||
SLOTS_HELM_RELEASE: "slots-service"
|
||||
SLOTS_IMAGE_REPOSITORY: "$INTERNAL_REGISTRY/slots-service"
|
||||
SLOTS_IMAGE_TAG: "$CI_COMMIT_SHORT_SHA"
|
||||
SLOTS_K8S_NAMESPACE_DEV: "pcp-dev"
|
||||
SLOTS_K8S_NAMESPACE_MASTER: "pcp-master"
|
||||
|
||||
.slots_changes: &slots_changes
|
||||
- services/slots-service/**/*
|
||||
- libs/ballistics-lib/**/*
|
||||
- libs/pcp-types-lib/**/*
|
||||
- build.gradle.kts
|
||||
- settings.gradle.kts
|
||||
- .gitlab/ci/slots-service.yml
|
||||
- helm/slots-service/**/*
|
||||
- deploy/**/*
|
||||
|
||||
.slots:rules:build-and-image:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *slots_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *slots_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *slots_changes
|
||||
- when: never
|
||||
|
||||
.slots:rules:test:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *slots_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *slots_changes
|
||||
when: manual
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *slots_changes
|
||||
- when: never
|
||||
|
||||
.slots:rules:deploy-dev:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *slots_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.slots:rules:deploy-master:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *slots_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.slots:gradle-cache:
|
||||
cache:
|
||||
key: "gradle-slots-$CI_DEFAULT_BRANCH"
|
||||
paths:
|
||||
- .gradle/wrapper
|
||||
- .gradle/caches
|
||||
policy: pull-push
|
||||
|
||||
.slots:docker-build:
|
||||
image: repo.nstart.cloud/library/docker:26
|
||||
services:
|
||||
- name: repo.nstart.cloud/library/docker:26-dind
|
||||
alias: docker
|
||||
command: ["--tls=false", "--insecure-registry=registry.k8s.265.nstart.local"]
|
||||
variables:
|
||||
DOCKER_HOST: tcp://docker:2375
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
DOCKER_BUILDKIT: "1"
|
||||
before_script:
|
||||
- docker version
|
||||
- docker info
|
||||
|
||||
.slots:helm-deploy:
|
||||
image: repo.nstart.cloud/dtzar/helm-kubectl:3.14.0
|
||||
before_script:
|
||||
- mkdir -p /root/.kube
|
||||
- helm version
|
||||
after_script:
|
||||
- rm -f /root/.kube/config
|
||||
|
||||
slots:test:
|
||||
stage: test
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
services:
|
||||
- name: repo.nstart.cloud/postgis/postgis:16-3.4
|
||||
alias: postgres
|
||||
variables:
|
||||
POSTGRES_DB: "pcp_slots"
|
||||
POSTGRES_USER: "postgres"
|
||||
POSTGRES_PASSWORD: "password"
|
||||
SPRING_DATASOURCE_URL: "jdbc:postgresql://postgres:5432/pcp_slots"
|
||||
SPRING_DATASOURCE_USERNAME: "postgres"
|
||||
SPRING_DATASOURCE_PASSWORD: "password"
|
||||
extends:
|
||||
- .slots:rules:test
|
||||
- .slots:gradle-cache
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:slots-service:test
|
||||
artifacts:
|
||||
when: always
|
||||
reports:
|
||||
junit:
|
||||
- services/slots-service/build/test-results/test/*.xml
|
||||
paths:
|
||||
- services/slots-service/build/reports/tests/
|
||||
expire_in: 7 days
|
||||
|
||||
slots:build:
|
||||
stage: build
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .slots:rules:build-and-image
|
||||
- .slots:gradle-cache
|
||||
needs:
|
||||
- job: slots:test
|
||||
artifacts: true
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:slots-service:bootJar
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- services/slots-service/build/libs/*.jar
|
||||
expire_in: 7 days
|
||||
|
||||
slots:package:
|
||||
stage: package
|
||||
extends:
|
||||
- .slots:rules:build-and-image
|
||||
- .slots:docker-build
|
||||
needs:
|
||||
- job: slots:build
|
||||
artifacts: true
|
||||
script:
|
||||
- 'echo "SLOTS_IMAGE_REPOSITORY=$SLOTS_IMAGE_REPOSITORY"'
|
||||
- |
|
||||
JAR_COUNT="$(find "$SLOTS_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | wc -l)"
|
||||
|
||||
if [ "$JAR_COUNT" -ne 1 ]; then
|
||||
echo "Expected exactly one executable jar, found: $JAR_COUNT"
|
||||
find "$SLOTS_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' -print || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
JAR_FILE="$(find "$SLOTS_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | head -n 1)"
|
||||
- rm -rf docker-context
|
||||
- mkdir -p docker-context/build/libs
|
||||
- cp "$SLOTS_SERVICE_DIR/Dockerfile" docker-context/Dockerfile
|
||||
- cp "$JAR_FILE" docker-context/build/libs/app.jar
|
||||
- find docker-context -maxdepth 4 -type f -print -exec ls -la {} \;
|
||||
- docker build --file docker-context/Dockerfile --tag "$SLOTS_IMAGE_REPOSITORY:$SLOTS_IMAGE_TAG" docker-context
|
||||
- docker push "$SLOTS_IMAGE_REPOSITORY:$SLOTS_IMAGE_TAG"
|
||||
- printf "SLOTS_IMAGE=%s\n" "$SLOTS_IMAGE_REPOSITORY:$SLOTS_IMAGE_TAG" > slots-image.env
|
||||
artifacts:
|
||||
reports:
|
||||
dotenv: slots-image.env
|
||||
expire_in: 7 days
|
||||
|
||||
slots:deploy:dev:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .slots:rules:deploy-dev
|
||||
- .slots:helm-deploy
|
||||
needs:
|
||||
- job: slots:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: dev/pcp-slots-service
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_DEV:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_DEV_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_DEV_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_DEV_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_DEV_B64 is not valid base64. Set KUBE_CONFIG_DEV to raw kubeconfig or KUBE_CONFIG_DEV_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_DEV or KUBE_CONFIG_DEV_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${SLOTS_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${SLOTS_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$SLOTS_HELM_RELEASE"
|
||||
"$SLOTS_HELM_CHART_DIR"
|
||||
--namespace "$SLOTS_K8S_NAMESPACE_DEV"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 30m
|
||||
-f "$SLOTS_HELM_CHART_DIR/values.yaml"
|
||||
-f "$SLOTS_HELM_CHART_DIR/values-dev.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=dev
|
||||
--set app.configLabel=dev
|
||||
|
||||
slots:deploy:master:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .slots:rules:deploy-master
|
||||
- .slots:helm-deploy
|
||||
needs:
|
||||
- job: slots:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: master/pcp-slots-service
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_MASTER:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_MASTER_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_MASTER_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_MASTER_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_MASTER_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_MASTER_B64 is not valid base64. Set KUBE_CONFIG_MASTER to raw kubeconfig or KUBE_CONFIG_MASTER_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_MASTER or KUBE_CONFIG_MASTER_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- 'export IMAGE_REPOSITORY="${SLOTS_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${SLOTS_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$SLOTS_HELM_RELEASE"
|
||||
"$SLOTS_HELM_CHART_DIR"
|
||||
--namespace "$SLOTS_K8S_NAMESPACE_MASTER"
|
||||
--create-namespace
|
||||
--wait
|
||||
--atomic
|
||||
--timeout 30m
|
||||
-f "$SLOTS_HELM_CHART_DIR/values.yaml"
|
||||
-f "$SLOTS_HELM_CHART_DIR/values-master.yaml"
|
||||
--set image.repository="$IMAGE_REPOSITORY"
|
||||
--set image.tag="$IMAGE_TAG"
|
||||
--set app.profile=master
|
||||
--set app.configLabel=master
|
||||
@@ -0,0 +1,214 @@
|
||||
variables:
|
||||
GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle"
|
||||
|
||||
CONFIG_SERVER_SERVICE_DIR: "services/spring-cloud-config-server"
|
||||
CONFIG_SERVER_HELM_CHART_DIR: "helm/spring-cloud-config-server"
|
||||
CONFIG_SERVER_HELM_RELEASE: "spring-cloud-config-server"
|
||||
CONFIG_SERVER_IMAGE_REPOSITORY: "$INTERNAL_REGISTRY/pcp-cloud-config-server"
|
||||
CONFIG_SERVER_IMAGE_TAG: "$CI_COMMIT_SHORT_SHA"
|
||||
CONFIG_SERVER_K8S_NAMESPACE_DEV: "pcp-dev"
|
||||
CONFIG_SERVER_GIT_SECRET_NAME: "spring-cloud-config-server-git"
|
||||
CONFIG_GIT_URI: "https://git.nstart.cloud/emelianov.an/pcp.git"
|
||||
CONFIG_GIT_USERNAME: "gitlab+deploy-token-1"
|
||||
CONFIG_GIT_DEFAULT_LABEL: "master"
|
||||
CONFIG_GIT_SEARCH_PATHS: "config-repo"
|
||||
CONFIG_GIT_SKIP_SSL_VALIDATION: "true"
|
||||
|
||||
.config_server_changes: &config_server_changes
|
||||
- services/spring-cloud-config-server/**/*
|
||||
- build.gradle.kts
|
||||
- settings.gradle.kts
|
||||
- .gitlab/ci/spring-cloud-config-server.yml
|
||||
- helm/spring-cloud-config-server/**/*
|
||||
- deploy/**/*
|
||||
|
||||
.config-server:rules:build-and-image:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *config_server_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *config_server_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *config_server_changes
|
||||
- when: never
|
||||
|
||||
.config-server:rules:test:
|
||||
rules:
|
||||
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
||||
changes: *config_server_changes
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *config_server_changes
|
||||
when: manual
|
||||
- if: '$CI_COMMIT_BRANCH == "master"'
|
||||
changes: *config_server_changes
|
||||
- when: never
|
||||
|
||||
.config-server:rules:deploy-dev:
|
||||
rules:
|
||||
- if: '$CI_COMMIT_BRANCH == "dev"'
|
||||
changes: *config_server_changes
|
||||
when: manual
|
||||
- when: never
|
||||
|
||||
.config-server:gradle-cache:
|
||||
cache:
|
||||
key: "gradle-config-server-$CI_DEFAULT_BRANCH"
|
||||
paths:
|
||||
- .gradle/wrapper
|
||||
- .gradle/caches
|
||||
policy: pull-push
|
||||
|
||||
.config-server:docker-build:
|
||||
image: repo.nstart.cloud/library/docker:26
|
||||
services:
|
||||
- name: repo.nstart.cloud/library/docker:26-dind
|
||||
alias: docker
|
||||
command: ["--tls=false", "--insecure-registry=registry.k8s.265.nstart.local"]
|
||||
variables:
|
||||
DOCKER_HOST: tcp://docker:2375
|
||||
DOCKER_TLS_CERTDIR: ""
|
||||
DOCKER_BUILDKIT: "1"
|
||||
before_script:
|
||||
- docker version
|
||||
- docker info
|
||||
|
||||
.config-server:helm-deploy:
|
||||
image: repo.nstart.cloud/dtzar/helm-kubectl:3.14.0
|
||||
before_script:
|
||||
- mkdir -p /root/.kube
|
||||
- helm version
|
||||
after_script:
|
||||
- rm -f /root/.kube/config
|
||||
|
||||
config-server:test:
|
||||
stage: test
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .config-server:rules:test
|
||||
- .config-server:gradle-cache
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:spring-cloud-config-server:test
|
||||
artifacts:
|
||||
when: always
|
||||
reports:
|
||||
junit:
|
||||
- services/spring-cloud-config-server/build/test-results/test/*.xml
|
||||
paths:
|
||||
- services/spring-cloud-config-server/build/reports/tests/
|
||||
expire_in: 7 days
|
||||
|
||||
config-server:build:
|
||||
stage: build
|
||||
image: repo.nstart.cloud/library/gradle:jdk17-ubi10
|
||||
extends:
|
||||
- .config-server:rules:build-and-image
|
||||
- .config-server:gradle-cache
|
||||
needs:
|
||||
- job: config-server:test
|
||||
artifacts: true
|
||||
before_script:
|
||||
- chmod +x gradlew
|
||||
script:
|
||||
- ./gradlew --no-daemon :services:spring-cloud-config-server:bootJar
|
||||
artifacts:
|
||||
when: always
|
||||
paths:
|
||||
- services/spring-cloud-config-server/build/libs/*.jar
|
||||
expire_in: 7 days
|
||||
|
||||
config-server:package:
|
||||
stage: package
|
||||
extends:
|
||||
- .config-server:rules:build-and-image
|
||||
- .config-server:docker-build
|
||||
needs:
|
||||
- job: config-server:build
|
||||
artifacts: true
|
||||
script:
|
||||
- 'echo "CONFIG_SERVER_IMAGE_REPOSITORY=$CONFIG_SERVER_IMAGE_REPOSITORY"'
|
||||
- |
|
||||
JAR_COUNT="$(find "$CONFIG_SERVER_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | wc -l)"
|
||||
|
||||
if [ "$JAR_COUNT" -ne 1 ]; then
|
||||
echo "Expected exactly one executable jar, found: $JAR_COUNT"
|
||||
find "$CONFIG_SERVER_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' -print || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
JAR_FILE="$(find "$CONFIG_SERVER_SERVICE_DIR/build/libs" -maxdepth 1 -type f -name '*.jar' ! -name '*-plain.jar' | head -n 1)"
|
||||
- rm -rf docker-context
|
||||
- mkdir -p docker-context/build/libs
|
||||
- cp "$CONFIG_SERVER_SERVICE_DIR/Dockerfile" docker-context/Dockerfile
|
||||
- cp "$JAR_FILE" docker-context/build/libs/app.jar
|
||||
- find docker-context -maxdepth 4 -type f -print -exec ls -la {} \;
|
||||
- docker build --file docker-context/Dockerfile --tag "$CONFIG_SERVER_IMAGE_REPOSITORY:$CONFIG_SERVER_IMAGE_TAG" docker-context
|
||||
- docker push "$CONFIG_SERVER_IMAGE_REPOSITORY:$CONFIG_SERVER_IMAGE_TAG"
|
||||
- printf "CONFIG_SERVER_IMAGE=%s\n" "$CONFIG_SERVER_IMAGE_REPOSITORY:$CONFIG_SERVER_IMAGE_TAG" > config-server-image.env
|
||||
artifacts:
|
||||
reports:
|
||||
dotenv: config-server-image.env
|
||||
expire_in: 7 days
|
||||
|
||||
config-server:deploy:dev:
|
||||
stage: deploy
|
||||
extends:
|
||||
- .config-server:rules:deploy-dev
|
||||
- .config-server:helm-deploy
|
||||
needs:
|
||||
- job: config-server:package
|
||||
artifacts: true
|
||||
environment:
|
||||
name: dev/spring-cloud-config-server
|
||||
script:
|
||||
- |
|
||||
if [ -n "${KUBE_CONFIG_DEV:-}" ]; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV" > /root/.kube/config
|
||||
elif [ -n "${KUBE_CONFIG_DEV_B64:-}" ]; then
|
||||
if printf '%s' "$KUBE_CONFIG_DEV_B64" | grep -qE '(^apiVersion:|^kind: Config|^clusters:)'; then
|
||||
printf '%s' "$KUBE_CONFIG_DEV_B64" > /root/.kube/config
|
||||
elif ! printf '%s' "$KUBE_CONFIG_DEV_B64" | base64 -d > /root/.kube/config; then
|
||||
echo "KUBE_CONFIG_DEV_B64 is not valid base64. Set KUBE_CONFIG_DEV to raw kubeconfig or KUBE_CONFIG_DEV_B64 to base64 kubeconfig."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "KUBE_CONFIG_DEV or KUBE_CONFIG_DEV_B64 must be set."
|
||||
exit 1
|
||||
fi
|
||||
- chmod 600 /root/.kube/config
|
||||
- export KUBECONFIG=/root/.kube/config
|
||||
- |
|
||||
if [ -z "${CONFIG_GIT_TOKEN:-}" ]; then
|
||||
echo "CONFIG_GIT_TOKEN must be set as a GitLab CI/CD variable."
|
||||
exit 1
|
||||
fi
|
||||
- kubectl create namespace "$CONFIG_SERVER_K8S_NAMESPACE_DEV" --dry-run=client -o yaml | kubectl apply -f -
|
||||
- >
|
||||
kubectl create secret generic "$CONFIG_SERVER_GIT_SECRET_NAME"
|
||||
--namespace "$CONFIG_SERVER_K8S_NAMESPACE_DEV"
|
||||
--from-literal=token="$CONFIG_GIT_TOKEN"
|
||||
--dry-run=client
|
||||
-o yaml
|
||||
| kubectl apply -f -
|
||||
- 'export IMAGE_REPOSITORY="${CONFIG_SERVER_IMAGE%:*}"'
|
||||
- 'export IMAGE_TAG="${CONFIG_SERVER_IMAGE##*:}"'
|
||||
- 'echo "Deploy image: $IMAGE_REPOSITORY:$IMAGE_TAG"'
|
||||
- >
|
||||
helm upgrade --install "$CONFIG_SERVER_HELM_RELEASE"
|
||||
"$CONFIG_SERVER_HELM_CHART_DIR"
|
||||
--namespace "$CONFIG_SERVER_K8S_NAMESPACE_DEV"
|
||||
--create-namespace
|
||||
--values "$CONFIG_SERVER_HELM_CHART_DIR/values.yaml"
|
||||
--values "$CONFIG_SERVER_HELM_CHART_DIR/values-dev.yaml"
|
||||
--set-string image.repository="$IMAGE_REPOSITORY"
|
||||
--set-string image.tag="$IMAGE_TAG"
|
||||
--set-string app.configGitUri="$CONFIG_GIT_URI"
|
||||
--set-string app.configGitUsername="$CONFIG_GIT_USERNAME"
|
||||
--set-string app.configGitDefaultLabel="$CONFIG_GIT_DEFAULT_LABEL"
|
||||
--set-string app.configGitSearchPaths="$CONFIG_GIT_SEARCH_PATHS"
|
||||
--set-string app.configGitSkipSslValidation="$CONFIG_GIT_SKIP_SSL_VALIDATION"
|
||||
--set-string gitTokenSecret.name="$CONFIG_SERVER_GIT_SECRET_NAME"
|
||||
--atomic
|
||||
--wait
|
||||
--timeout 15m
|
||||
Reference in New Issue
Block a user