Bahn: aisupport, Analyse-O2C-C2S, awesome-bahn-mcp-servers, beam-mcp,
Confluence_Bot, db-planet-mcp-server, O2C-Harness, project-audit,
Projekt-KIQ-HP, teamlandkarte-mcp
Dhive: Jury-Voting
Privat: CV, NoteGraph (NOTE: NoteGraph needs complete redo after consolidation)
Shared: AI-Orchestrator, OrgMyLife, power_skills_and_more
Shared/references: symphony (read-only)
Bahn repos remain available as independent remotes - this monorepo
pulls them in via subtree, the originals are untouched.
178 lines
5.9 KiB
YAML
178 lines
5.9 KiB
YAML
# ============================================================
|
||
# GitLab CI – build & release OCI image via pipeship + deploy
|
||
# ============================================================
|
||
# Uses the pipeship "release_oci_image" product which bundles:
|
||
# stages, build/scan/promote_oci_image, semantic_release, etc.
|
||
# See: https://bridge.pipeship.comp.db.de/modules/?searchKeyword=release_oci_image&filterTypeSubmit=product
|
||
# ============================================================
|
||
|
||
include:
|
||
- remote: https://bahnhub.tech.rz.db.de/artifactory/pipeship-generic-release-local/canary/products/release_oci_image/4.9.96-20250909050014-9d6e6c21.yaml
|
||
|
||
variables:
|
||
PIPESHIP_PRODUCT: "release_oci_image"
|
||
PIPESHIP_VERSION: "$CI_DEFAULT_BRANCH"
|
||
|
||
# Version schema
|
||
PGV_SCHEMA: "stateful-semver"
|
||
|
||
# Enable semantic-release
|
||
SEMANTIC_RELEASE_ENABLED: "true"
|
||
SR_PLUGINS: "@semantic-release/commit-analyzer,@semantic-release/release-notes-generator,@semantic-release/gitlab"
|
||
|
||
# Disable unused jobs
|
||
RST_JOB_DISABLED: "true"
|
||
LINT_CODE_JOB_DISABLED: "true"
|
||
SDC_JOB_DISABLED: "true"
|
||
SCAN_SONARQUBE_JOB_DISABLED: "true"
|
||
SSQ_JOB_DISABLED: "true"
|
||
SSG_JOB_DISABLED: "true"
|
||
CAON_JOB_DISABLED: "true"
|
||
|
||
# Version file for promote_oci_image
|
||
POI_SOURCE_IMAGE_VERSION_FILE: "VERSION"
|
||
POI_DESTINATION_IMAGE_VERSION_FILE: "VERSION"
|
||
POI_TAG_LATEST: "true"
|
||
|
||
# Use dotenv artifact from build_oci_image
|
||
SOIST_USE_URI_ARTIFACT: "true"
|
||
SOIT_USE_URI_ARTIFACT: "true"
|
||
POI_USE_URI_ARTIFACT: "true"
|
||
CAON_USE_URI_ARTIFACT: "true"
|
||
CAON_USE_VERSION_FILE: "false"
|
||
|
||
# Use Aqua scanner
|
||
AQUA_ENABLED: "true"
|
||
|
||
# Node base image for test jobs
|
||
NODE_IMAGE: "db-container-lib-docker-release-local.bahnhub.tech.rz.db.de/node:22-alpine"
|
||
|
||
# Azure subscriptions
|
||
SUBSCRIPTION_DEV: "245822e7-9f8b-4c8a-993b-e9ae726c9c42"
|
||
SUBSCRIPTION_IAT: "245822e7-9f8b-4c8a-993b-e9ae726c9c42"
|
||
|
||
# Proxy settings
|
||
HTTP_PROXY: "http://webproxy.comp.db.de:8080"
|
||
HTTPS_PROXY: "http://webproxy.comp.db.de:8080"
|
||
http_proxy: "http://webproxy.comp.db.de:8080"
|
||
https_proxy: "http://webproxy.comp.db.de:8080"
|
||
no_proxy: "172.30.0.1,127.0.0.1,localhost,cluster.local,db.de,169.254.169.254"
|
||
|
||
# ── Code quality gate (lint + unit tests) ─────────────────────
|
||
code_quality:
|
||
stage: code_analysis
|
||
image: $NODE_IMAGE
|
||
tags:
|
||
- dev
|
||
rules:
|
||
- if: $CI_MERGE_REQUEST_ID
|
||
- if: $CI_COMMIT_REF_PROTECTED == "true"
|
||
script:
|
||
- npm ci --ignore-scripts
|
||
- npm run test
|
||
|
||
# ── Bicep validation (MR only) ───────────────────────────────
|
||
validate_bicep:
|
||
stage: code_analysis
|
||
image: mcr-docker-remote.bahnhub.tech.rz.db.de/azure-cli:2.76.0
|
||
tags:
|
||
- dev
|
||
script:
|
||
- az login --federated-token "$(cat $AZURE_FEDERATED_TOKEN_FILE)" --service-principal -u $AZURE_CLIENT_ID -t $AZURE_TENANT_ID
|
||
- az account set --subscription $SUBSCRIPTION_DEV
|
||
- az deployment sub what-if --location westeurope --parameters infra/parameters/dev.bicepparam --parameters deployContainerApp=true --no-pretty-print
|
||
rules:
|
||
- if: $CI_MERGE_REQUEST_ID
|
||
|
||
# ── Job overrides (stages & runner tags) ──────────────────────
|
||
generate_version:
|
||
stage: init
|
||
tags:
|
||
- dev
|
||
|
||
submit_telemetry:
|
||
stage: init
|
||
tags:
|
||
- dev
|
||
|
||
scan_config_trivy:
|
||
stage: code_analysis
|
||
tags:
|
||
- dev
|
||
|
||
build_oci_image:
|
||
stage: build_image
|
||
tags:
|
||
- dev
|
||
needs:
|
||
- job: generate_version
|
||
optional: true
|
||
- job: code_quality
|
||
|
||
promote_oci_image:
|
||
stage: promote_image
|
||
tags:
|
||
- dev
|
||
rules:
|
||
- if: $CI_COMMIT_BRANCH == "main"
|
||
variables:
|
||
POI_USE_URI_ARTIFACT: "true"
|
||
POI_SOURCE_IMAGE_NAME: "generativeai-docker-stage-dev-local.bahnhub.tech.rz.db.de/db-planet-mcp-server"
|
||
POI_DESTINATION_IMAGE_NAME: "generativeai-docker-stage-iat-local.bahnhub.tech.rz.db.de/db-planet-mcp-server"
|
||
POI_DESTINATION_REGISTRY_CREDENTIALS_USER: "${GLOBAL_ARTIFACTORY_USER_STAGE}"
|
||
POI_DESTINATION_REGISTRY_CREDENTIALS_PASSWORD: "${GLOBAL_ARTIFACTORY_TOKEN_STAGE}"
|
||
- if: $CI_COMMIT_TAG
|
||
variables:
|
||
POI_SOURCE_IMAGE_NAME: "generativeai-docker-stage-dev-local.bahnhub.tech.rz.db.de/db-planet-mcp-server"
|
||
POI_DESTINATION_IMAGE_NAME: "generativeai-docker-prod-local.bahnhub.tech.rz.db.de/db-planet-mcp-server"
|
||
POI_SOURCE_IMAGE_VERSION: "${CI_PIPELINE_ID}"
|
||
POI_DESTINATION_IMAGE_VERSION: "${CI_COMMIT_TAG}"
|
||
POI_DESTINATION_REGISTRY_CREDENTIALS_USER: "${GLOBAL_ARTIFACTORY_USER_PROD}"
|
||
POI_DESTINATION_REGISTRY_CREDENTIALS_PASSWORD: "${GLOBAL_ARTIFACTORY_TOKEN_PROD}"
|
||
|
||
cleanup_artifactory_oci_nonprod:
|
||
stage: cleanup
|
||
tags:
|
||
- dev
|
||
|
||
# ── Deploy to Azure ───────────────────────────────────────────
|
||
.deploy_template:
|
||
image: mcr-docker-remote.bahnhub.tech.rz.db.de/azure-cli:2.76.0
|
||
stage: post_promote_image
|
||
tags:
|
||
- dev
|
||
script:
|
||
- az login --federated-token "$(cat $AZURE_FEDERATED_TOKEN_FILE)" --service-principal -u $AZURE_CLIENT_ID -t $AZURE_TENANT_ID
|
||
- az account set --subscription $DEPLOY_SUBSCRIPTION
|
||
- chmod +x ./infra/deploy.sh
|
||
- IMAGE_TAG=$(cat VERSION 2>/dev/null || echo "$CI_COMMIT_SHORT_SHA")
|
||
- ./infra/deploy.sh --environment $DEPLOY_ENVIRONMENT --image-tag "$IMAGE_TAG"
|
||
|
||
deploy_dev:
|
||
extends: .deploy_template
|
||
variables:
|
||
DEPLOY_ENVIRONMENT: "DEV"
|
||
DEPLOY_SUBSCRIPTION: $SUBSCRIPTION_DEV
|
||
rules:
|
||
- if: $CI_COMMIT_BRANCH == "develop"
|
||
needs:
|
||
- job: build_oci_image
|
||
artifacts: true
|
||
- job: generate_version
|
||
artifacts: true
|
||
optional: true
|
||
|
||
deploy_iat:
|
||
extends: .deploy_template
|
||
variables:
|
||
DEPLOY_ENVIRONMENT: "IAT"
|
||
DEPLOY_SUBSCRIPTION: $SUBSCRIPTION_IAT
|
||
rules:
|
||
- if: $CI_COMMIT_BRANCH == "main"
|
||
needs:
|
||
- job: promote_oci_image
|
||
artifacts: true
|
||
- job: generate_version
|
||
artifacts: true
|
||
optional: true
|