ci: drop INTERNAL_REGISTRY, push only to repo.nstart.cloud
Single registry for all clusters — staging (161), prod (142), local dev. - Removed registry.k8s.265.nstart.local (no longer needed) - Removed --insecure-registry flag from DinD service - Wait-loop for DinD readiness before docker login (fixes race that caused 'Cannot connect to the Docker daemon' on first build command) - Inlined docker login into the publish_script (kept tied to the build, not a separate before_script that ran before DinD was ready)
This commit is contained in:
+18
-21
@@ -2,7 +2,8 @@
|
|||||||
# Ordinis — build & push images.
|
# Ordinis — build & push images.
|
||||||
# Runner mirror'ит Docker Hub (DOCKER_AUTH_CONFIG в runner config),
|
# Runner mirror'ит Docker Hub (DOCKER_AUTH_CONFIG в runner config),
|
||||||
# поэтому image: repo.nstart.cloud/library/maven:... работает напрямую.
|
# поэтому image: repo.nstart.cloud/library/maven:... работает напрямую.
|
||||||
# Internal registry registry.k8s.265.nstart.local — без auth.
|
# Все образы пушатся в repo.nstart.cloud/terravault/ — единый registry
|
||||||
|
# для всех кластеров (staging 161, prod 142, локальный dev).
|
||||||
# =============================================================
|
# =============================================================
|
||||||
|
|
||||||
stages:
|
stages:
|
||||||
@@ -15,8 +16,7 @@ variables:
|
|||||||
MAVEN_OPTS: "-Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
|
MAVEN_OPTS: "-Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn"
|
||||||
MAVEN_CLI_OPTS: "-B -ntp --batch-mode"
|
MAVEN_CLI_OPTS: "-B -ntp --batch-mode"
|
||||||
IMAGE_TAG: $CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA
|
IMAGE_TAG: $CI_COMMIT_REF_SLUG-$CI_COMMIT_SHORT_SHA
|
||||||
INTERNAL_REGISTRY: registry.k8s.265.nstart.local
|
REGISTRY: repo.nstart.cloud
|
||||||
EXTERNAL_REGISTRY: repo.nstart.cloud
|
|
||||||
IMAGE_REPO: terravault
|
IMAGE_REPO: terravault
|
||||||
DOCKER_BUILDKIT: "1"
|
DOCKER_BUILDKIT: "1"
|
||||||
|
|
||||||
@@ -66,28 +66,25 @@ maven-package:
|
|||||||
services:
|
services:
|
||||||
- name: repo.nstart.cloud/library/docker:26-dind
|
- name: repo.nstart.cloud/library/docker:26-dind
|
||||||
alias: docker
|
alias: docker
|
||||||
command: ["--tls=false", "--insecure-registry=registry.k8s.265.nstart.local"]
|
command: ["--tls=false"]
|
||||||
variables:
|
variables:
|
||||||
DOCKER_HOST: tcp://docker:2375
|
DOCKER_HOST: tcp://docker:2375
|
||||||
DOCKER_TLS_CERTDIR: ""
|
DOCKER_TLS_CERTDIR: ""
|
||||||
DOCKER_BUILDKIT: "1"
|
DOCKER_BUILDKIT: "1"
|
||||||
before_script:
|
|
||||||
- echo "$REGISTRY_PASSWORD" | docker login "$EXTERNAL_REGISTRY" -u "$REGISTRY_USER" --password-stdin
|
|
||||||
|
|
||||||
# Helper для dual-push: build один раз с двумя registry-тэгами, push в оба.
|
# Build & push в repo.nstart.cloud (corp Harbor) — единый registry для всех окружений.
|
||||||
# Internal registry — без auth (insecure), external — с docker login (см. before_script).
|
# DinD должен быть готов когда запускается script. Wait-loop защищает от race.
|
||||||
.dual_push_script: &dual_push_script |
|
.publish_script: &publish_script |
|
||||||
IMG_INT="$INTERNAL_REGISTRY/$IMAGE_REPO/$SVC"
|
for i in $(seq 1 30); do docker info >/dev/null 2>&1 && break; sleep 1; done
|
||||||
IMG_EXT="$EXTERNAL_REGISTRY/$IMAGE_REPO/$SVC"
|
echo "$REGISTRY_PASSWORD" | docker login "$REGISTRY" -u "$REGISTRY_USER" --password-stdin
|
||||||
|
IMG="$REGISTRY/$IMAGE_REPO/$SVC"
|
||||||
docker build -f "$DOCKERFILE" \
|
docker build -f "$DOCKERFILE" \
|
||||||
-t "$IMG_INT:$IMAGE_TAG" -t "$IMG_INT:latest" -t "$IMG_INT:$CI_COMMIT_REF_SLUG" \
|
-t "$IMG:$IMAGE_TAG" -t "$IMG:latest" -t "$IMG:$CI_COMMIT_REF_SLUG" \
|
||||||
-t "$IMG_EXT:$IMAGE_TAG" -t "$IMG_EXT:latest" -t "$IMG_EXT:$CI_COMMIT_REF_SLUG" \
|
|
||||||
--build-arg BUILDKIT_INLINE_CACHE=1 \
|
--build-arg BUILDKIT_INLINE_CACHE=1 \
|
||||||
"$BUILD_CONTEXT"
|
"$BUILD_CONTEXT"
|
||||||
for TAG in "$IMAGE_TAG" latest "$CI_COMMIT_REF_SLUG"; do
|
docker push "$IMG:$IMAGE_TAG"
|
||||||
docker push "$IMG_INT:$TAG"
|
docker push "$IMG:latest"
|
||||||
docker push "$IMG_EXT:$TAG"
|
docker push "$IMG:$CI_COMMIT_REF_SLUG"
|
||||||
done
|
|
||||||
|
|
||||||
docker-app:
|
docker-app:
|
||||||
<<: *docker_base
|
<<: *docker_base
|
||||||
@@ -97,7 +94,7 @@ docker-app:
|
|||||||
DOCKERFILE: ordinis-app/Dockerfile
|
DOCKERFILE: ordinis-app/Dockerfile
|
||||||
BUILD_CONTEXT: .
|
BUILD_CONTEXT: .
|
||||||
script:
|
script:
|
||||||
- *dual_push_script
|
- *publish_script
|
||||||
|
|
||||||
docker-read-api:
|
docker-read-api:
|
||||||
<<: *docker_base
|
<<: *docker_base
|
||||||
@@ -107,7 +104,7 @@ docker-read-api:
|
|||||||
DOCKERFILE: ordinis-read-api/Dockerfile
|
DOCKERFILE: ordinis-read-api/Dockerfile
|
||||||
BUILD_CONTEXT: .
|
BUILD_CONTEXT: .
|
||||||
script:
|
script:
|
||||||
- *dual_push_script
|
- *publish_script
|
||||||
|
|
||||||
docker-projection-writer:
|
docker-projection-writer:
|
||||||
<<: *docker_base
|
<<: *docker_base
|
||||||
@@ -117,7 +114,7 @@ docker-projection-writer:
|
|||||||
DOCKERFILE: ordinis-projection-writer/Dockerfile
|
DOCKERFILE: ordinis-projection-writer/Dockerfile
|
||||||
BUILD_CONTEXT: .
|
BUILD_CONTEXT: .
|
||||||
script:
|
script:
|
||||||
- *dual_push_script
|
- *publish_script
|
||||||
|
|
||||||
docker-migrations:
|
docker-migrations:
|
||||||
<<: *docker_base
|
<<: *docker_base
|
||||||
@@ -127,7 +124,7 @@ docker-migrations:
|
|||||||
DOCKERFILE: ordinis-migrations/Dockerfile
|
DOCKERFILE: ordinis-migrations/Dockerfile
|
||||||
BUILD_CONTEXT: ordinis-migrations/
|
BUILD_CONTEXT: ordinis-migrations/
|
||||||
script:
|
script:
|
||||||
- *dual_push_script
|
- *publish_script
|
||||||
|
|
||||||
# ─── TRIGGER DEPLOY (downstream pipeline) ──────
|
# ─── TRIGGER DEPLOY (downstream pipeline) ──────
|
||||||
trigger-deploy-staging:
|
trigger-deploy-staging:
|
||||||
|
|||||||
Reference in New Issue
Block a user