fix(ci): use /dockerhub/ prefix для Nexus proxy путей
This commit is contained in:
+12
-12
@@ -98,7 +98,7 @@ default:
|
|||||||
# содержит весь changelog со всеми историческими commit'ами — false positive.
|
# содержит весь changelog со всеми историческими commit'ами — false positive.
|
||||||
commit-msg-lint:
|
commit-msg-lint:
|
||||||
stage: test
|
stage: test
|
||||||
image: repo.nstart.cloud/library/alpine:3.20
|
image: repo.nstart.cloud/dockerhub/library/alpine:3.20
|
||||||
script:
|
script:
|
||||||
# Runner не имеет outbound к dl-cdn.alpinelinux.org (Permission denied) —
|
# Runner не имеет outbound к dl-cdn.alpinelinux.org (Permission denied) —
|
||||||
# переадресуем apk на internal Nexus mirror. Это нужно во всех Alpine
|
# переадресуем apk на internal Nexus mirror. Это нужно во всех Alpine
|
||||||
@@ -174,7 +174,7 @@ commit-msg-lint:
|
|||||||
# ─── TEST ──────────────────────────────────────
|
# ─── TEST ──────────────────────────────────────
|
||||||
maven-test:
|
maven-test:
|
||||||
stage: test
|
stage: test
|
||||||
image: repo.nstart.cloud/library/maven:3.9.9-eclipse-temurin-21
|
image: repo.nstart.cloud/dockerhub/library/maven:3.9.9-eclipse-temurin-21
|
||||||
script:
|
script:
|
||||||
- mvn $MAVEN_CLI_OPTS verify
|
- mvn $MAVEN_CLI_OPTS verify
|
||||||
artifacts:
|
artifacts:
|
||||||
@@ -193,9 +193,9 @@ maven-test:
|
|||||||
# не имеет Docker.
|
# не имеет Docker.
|
||||||
maven-e2e:
|
maven-e2e:
|
||||||
stage: test
|
stage: test
|
||||||
image: repo.nstart.cloud/library/maven:3.9.9-eclipse-temurin-21
|
image: repo.nstart.cloud/dockerhub/library/maven:3.9.9-eclipse-temurin-21
|
||||||
services:
|
services:
|
||||||
- name: repo.nstart.cloud/library/docker:29.1.2-dind
|
- name: repo.nstart.cloud/dockerhub/library/docker:29.1.2-dind
|
||||||
alias: docker
|
alias: docker
|
||||||
command: ["--tls=false"]
|
command: ["--tls=false"]
|
||||||
variables:
|
variables:
|
||||||
@@ -221,7 +221,7 @@ maven-e2e:
|
|||||||
# на hot paths (parseRef, OnCloseAction, schema traversal).
|
# на hot paths (parseRef, OnCloseAction, schema traversal).
|
||||||
maven-bench:
|
maven-bench:
|
||||||
stage: test
|
stage: test
|
||||||
image: repo.nstart.cloud/library/maven:3.9.9-eclipse-temurin-21
|
image: repo.nstart.cloud/dockerhub/library/maven:3.9.9-eclipse-temurin-21
|
||||||
script:
|
script:
|
||||||
- mvn $MAVEN_CLI_OPTS -P bench -pl ordinis-bench -am package -DskipTests
|
- mvn $MAVEN_CLI_OPTS -P bench -pl ordinis-bench -am package -DskipTests
|
||||||
# Quick smoke: 1 fork, 2 warmups, 3 measurements × 2s. Total ~5 min.
|
# Quick smoke: 1 fork, 2 warmups, 3 measurements × 2s. Total ~5 min.
|
||||||
@@ -247,7 +247,7 @@ maven-bench:
|
|||||||
# идентичных jar'ов ~30 sec.
|
# идентичных jar'ов ~30 sec.
|
||||||
maven-package:
|
maven-package:
|
||||||
stage: build
|
stage: build
|
||||||
image: repo.nstart.cloud/library/maven:3.9.9-eclipse-temurin-21
|
image: repo.nstart.cloud/dockerhub/library/maven:3.9.9-eclipse-temurin-21
|
||||||
script:
|
script:
|
||||||
- mvn $MAVEN_CLI_OPTS package -DskipTests
|
- mvn $MAVEN_CLI_OPTS package -DskipTests
|
||||||
artifacts:
|
artifacts:
|
||||||
@@ -262,7 +262,7 @@ maven-package:
|
|||||||
# не выдаёт errors на изменения docs/**.
|
# не выдаёт errors на изменения docs/**.
|
||||||
build-docs:
|
build-docs:
|
||||||
stage: build
|
stage: build
|
||||||
image: repo.nstart.cloud/library/node:20-alpine
|
image: repo.nstart.cloud/dockerhub/library/node:20-alpine
|
||||||
before_script:
|
before_script:
|
||||||
# npm install pnpm — corepack может hang на CI runner integrity checks.
|
# npm install pnpm — corepack может hang на CI runner integrity checks.
|
||||||
- npm install -g --silent pnpm@9.15.4
|
- npm install -g --silent pnpm@9.15.4
|
||||||
@@ -298,7 +298,7 @@ build-docs:
|
|||||||
stage: publish
|
stage: publish
|
||||||
image: repo.nstart.cloud/nstart/docker-cli-buildx:1.0.0
|
image: repo.nstart.cloud/nstart/docker-cli-buildx:1.0.0
|
||||||
services:
|
services:
|
||||||
- name: repo.nstart.cloud/library/docker:29.1.2-dind
|
- name: repo.nstart.cloud/dockerhub/library/docker:29.1.2-dind
|
||||||
alias: docker
|
alias: docker
|
||||||
command: ["--tls=false"]
|
command: ["--tls=false"]
|
||||||
# docker-builds группа залипла в GitLab Sidekiq после force-cancel зомби
|
# docker-builds группа залипла в GitLab Sidekiq после force-cancel зомби
|
||||||
@@ -467,7 +467,7 @@ docker-docs:
|
|||||||
stage: publish
|
stage: publish
|
||||||
image: repo.nstart.cloud/nstart/docker-cli-buildx:1.0.0
|
image: repo.nstart.cloud/nstart/docker-cli-buildx:1.0.0
|
||||||
services:
|
services:
|
||||||
- name: repo.nstart.cloud/library/docker:29.1.2-dind
|
- name: repo.nstart.cloud/dockerhub/library/docker:29.1.2-dind
|
||||||
alias: docker
|
alias: docker
|
||||||
command: ["--tls=false"]
|
command: ["--tls=false"]
|
||||||
resource_group: docker-builds-v2
|
resource_group: docker-builds-v2
|
||||||
@@ -544,7 +544,7 @@ retag-docs:
|
|||||||
|
|
||||||
resolve-tag:
|
resolve-tag:
|
||||||
stage: trigger-deploy
|
stage: trigger-deploy
|
||||||
image: repo.nstart.cloud/library/alpine:3.20
|
image: repo.nstart.cloud/dockerhub/library/alpine:3.20
|
||||||
script:
|
script:
|
||||||
- echo "RESOLVED_IMAGE_TAG=$IMAGE_TAG" > resolved.env
|
- echo "RESOLVED_IMAGE_TAG=$IMAGE_TAG" > resolved.env
|
||||||
# DOCS_IMAGE_TAG может быть пустым если docker-docs не пересобирался
|
# DOCS_IMAGE_TAG может быть пустым если docker-docs не пересобирался
|
||||||
@@ -624,7 +624,7 @@ release:
|
|||||||
# Pinned к alpine3.20 (не latest) — Nexus mirror APKINDEX для v3.23
|
# Pinned к alpine3.20 (не latest) — Nexus mirror APKINDEX для v3.23
|
||||||
# рассинхронизирован с filesystem (claims old version, only newer files exist).
|
# рассинхронизирован с filesystem (claims old version, only newer files exist).
|
||||||
# v3.20 mirror consistent, apk add работает. См. ci/apk-update-fix история.
|
# v3.20 mirror consistent, apk add работает. См. ci/apk-update-fix история.
|
||||||
image: repo.nstart.cloud/library/node:22-alpine3.20
|
image: repo.nstart.cloud/dockerhub/library/node:22-alpine3.20
|
||||||
# Раньше `needs: trigger-deploy-staging` блокировал release когда staging
|
# Раньше `needs: trigger-deploy-staging` блокировал release когда staging
|
||||||
# deploy hang'ался (helm pending-upgrade cascade — каждый retry оставлял
|
# deploy hang'ался (helm pending-upgrade cascade — каждый retry оставлял
|
||||||
# stuck revision, helm wait timeout 15m → rollback → next pipeline стартует
|
# stuck revision, helm wait timeout 15m → rollback → next pipeline стартует
|
||||||
@@ -739,7 +739,7 @@ release:
|
|||||||
# Allow_failure: true — manual deploy backup path остаётся если что.
|
# Allow_failure: true — manual deploy backup path остаётся если что.
|
||||||
commit-prod-image-bump:
|
commit-prod-image-bump:
|
||||||
stage: release
|
stage: release
|
||||||
image: repo.nstart.cloud/library/alpine:3.20
|
image: repo.nstart.cloud/dockerhub/library/alpine:3.20
|
||||||
needs:
|
needs:
|
||||||
# На tag pipeline images приходят через retag-* (не docker-*) после
|
# На tag pipeline images приходят через retag-* (не docker-*) после
|
||||||
# !205 (ci/retag-on-tag-pipeline). Поэтому needs ссылается на retag-*.
|
# !205 (ci/retag-on-tag-pipeline). Поэтому needs ссылается на retag-*.
|
||||||
|
|||||||
+2
-2
@@ -2,8 +2,8 @@
|
|||||||
# Stage 1: build HTML через @diplodoc/cli (yfm).
|
# Stage 1: build HTML через @diplodoc/cli (yfm).
|
||||||
# Stage 2: nginx serving static files на /docs/ path.
|
# Stage 2: nginx serving static files на /docs/ path.
|
||||||
|
|
||||||
ARG NODE_IMAGE=repo.nstart.cloud/library/node:20-alpine
|
ARG NODE_IMAGE=repo.nstart.cloud/dockerhub/library/node:20-alpine
|
||||||
ARG NGINX_IMAGE=repo.nstart.cloud/library/nginx:1.27-alpine
|
ARG NGINX_IMAGE=repo.nstart.cloud/dockerhub/library/nginx:1.27-alpine
|
||||||
|
|
||||||
# ─── Stage 1: Build HTML ─────────────────────
|
# ─── Stage 1: Build HTML ─────────────────────
|
||||||
FROM ${NODE_IMAGE} AS builder
|
FROM ${NODE_IMAGE} AS builder
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM repo.nstart.cloud/library/node:22-alpine AS build
|
FROM repo.nstart.cloud/dockerhub/library/node:22-alpine AS build
|
||||||
# Build identity для VersionBadge / UpdateBanner. Внутри Docker build context
|
# Build identity для VersionBadge / UpdateBanner. Внутри Docker build context
|
||||||
# нет .git/ (BUILD_CONTEXT=ordinis-admin-ui/), vite execSync падает →
|
# нет .git/ (BUILD_CONTEXT=ordinis-admin-ui/), vite execSync падает →
|
||||||
# fallback "unknown" / package.json. CI передаёт реальные значения через
|
# fallback "unknown" / package.json. CI передаёт реальные значения через
|
||||||
@@ -26,7 +26,7 @@ RUN --mount=type=cache,target=/root/.local/share/pnpm/store pnpm install --froze
|
|||||||
COPY . .
|
COPY . .
|
||||||
RUN pnpm build
|
RUN pnpm build
|
||||||
|
|
||||||
FROM repo.nstart.cloud/library/nginx:1.27-alpine
|
FROM repo.nstart.cloud/dockerhub/library/nginx:1.27-alpine
|
||||||
COPY --from=build /app/dist /usr/share/nginx/html
|
COPY --from=build /app/dist /usr/share/nginx/html
|
||||||
# Шаблон обрабатывается официальным entrypoint nginx-image:
|
# Шаблон обрабатывается официальным entrypoint nginx-image:
|
||||||
# /docker-entrypoint.d/20-envsubst-on-templates.sh пробегает по
|
# /docker-entrypoint.d/20-envsubst-on-templates.sh пробегает по
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
#
|
#
|
||||||
# .dockerignore исключает frontend (admin-ui), bench, docs, target/, .git/,
|
# .dockerignore исключает frontend (admin-ui), bench, docs, target/, .git/,
|
||||||
# IDE metadata — backend image остаётся компактным.
|
# IDE metadata — backend image остаётся компактным.
|
||||||
FROM repo.nstart.cloud/library/maven:3.9.9-eclipse-temurin-21 AS build
|
FROM repo.nstart.cloud/dockerhub/library/maven:3.9.9-eclipse-temurin-21 AS build
|
||||||
# Git info из CI environment (`.gitlab-ci.yml` `--build-arg`) — нужен для
|
# Git info из CI environment (`.gitlab-ci.yml` `--build-arg`) — нужен для
|
||||||
# Spring Boot build-info goal через ordinis-app/pom.xml. Внутри Docker
|
# Spring Boot build-info goal через ordinis-app/pom.xml. Внутри Docker
|
||||||
# context .git/ исключён (.dockerignore), поэтому git-commit-id-maven-plugin
|
# context .git/ исключён (.dockerignore), поэтому git-commit-id-maven-plugin
|
||||||
@@ -29,7 +29,7 @@ RUN mvn -B -pl ordinis-app -am package -DskipTests \
|
|||||||
-Dgit.tags="$GIT_TAG" \
|
-Dgit.tags="$GIT_TAG" \
|
||||||
-Dgit.commit.time="$GIT_TIME"
|
-Dgit.commit.time="$GIT_TIME"
|
||||||
|
|
||||||
FROM repo.nstart.cloud/library/eclipse-temurin:21-jre
|
FROM repo.nstart.cloud/dockerhub/library/eclipse-temurin:21-jre
|
||||||
# Non-root user — security hardening (CSO report 2026-05-27 finding #1).
|
# Non-root user — security hardening (CSO report 2026-05-27 finding #1).
|
||||||
# Eclipse-temurin runtime image не задаёт USER by default → JVM от root.
|
# Eclipse-temurin runtime image не задаёт USER by default → JVM от root.
|
||||||
# Compromise через Spring Boot CVE / Jackson deserialization без USER
|
# Compromise через Spring Boot CVE / Jackson deserialization без USER
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Liquibase migration image — запускается Helm pre-upgrade Job (1-shot, без Spring Boot)
|
# Liquibase migration image — запускается Helm pre-upgrade Job (1-shot, без Spring Boot)
|
||||||
FROM repo.nstart.cloud/liquibase/liquibase:4.27.0
|
FROM repo.nstart.cloud/dockerhub/liquibase/liquibase:4.27.0
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
COPY src/main/resources/db/changelog /liquibase/changelog
|
COPY src/main/resources/db/changelog /liquibase/changelog
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
# Multi-stage build для ordinis-projection-writer. См. ordinis-app/Dockerfile
|
# Multi-stage build для ordinis-projection-writer. См. ordinis-app/Dockerfile
|
||||||
# для rationale `COPY . ./` + `.dockerignore` подхода (single-rule,
|
# для rationale `COPY . ./` + `.dockerignore` подхода (single-rule,
|
||||||
# future-proof на новые Maven modules).
|
# future-proof на новые Maven modules).
|
||||||
FROM repo.nstart.cloud/library/maven:3.9.9-eclipse-temurin-21 AS build
|
FROM repo.nstart.cloud/dockerhub/library/maven:3.9.9-eclipse-temurin-21 AS build
|
||||||
WORKDIR /build
|
WORKDIR /build
|
||||||
COPY . ./
|
COPY . ./
|
||||||
RUN mvn -B -pl ordinis-projection-writer -am package -DskipTests
|
RUN mvn -B -pl ordinis-projection-writer -am package -DskipTests
|
||||||
|
|
||||||
FROM repo.nstart.cloud/library/eclipse-temurin:21-jre
|
FROM repo.nstart.cloud/dockerhub/library/eclipse-temurin:21-jre
|
||||||
# Non-root user — security hardening (CSO report 2026-05-27 finding #1).
|
# Non-root user — security hardening (CSO report 2026-05-27 finding #1).
|
||||||
# См. ordinis-app/Dockerfile для rationale.
|
# См. ordinis-app/Dockerfile для rationale.
|
||||||
RUN groupadd -r -g 10001 app && useradd -r -u 10001 -g app -s /sbin/nologin app
|
RUN groupadd -r -g 10001 app && useradd -r -u 10001 -g app -s /sbin/nologin app
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
# Multi-stage build для ordinis-read-api. См. ordinis-app/Dockerfile для
|
# Multi-stage build для ordinis-read-api. См. ordinis-app/Dockerfile для
|
||||||
# rationale `COPY . ./` + `.dockerignore` подхода (single-rule, future-proof
|
# rationale `COPY . ./` + `.dockerignore` подхода (single-rule, future-proof
|
||||||
# на новые Maven modules).
|
# на новые Maven modules).
|
||||||
FROM repo.nstart.cloud/library/maven:3.9.9-eclipse-temurin-21 AS build
|
FROM repo.nstart.cloud/dockerhub/library/maven:3.9.9-eclipse-temurin-21 AS build
|
||||||
WORKDIR /build
|
WORKDIR /build
|
||||||
COPY . ./
|
COPY . ./
|
||||||
RUN mvn -B -pl ordinis-read-api -am package -DskipTests
|
RUN mvn -B -pl ordinis-read-api -am package -DskipTests
|
||||||
|
|
||||||
FROM repo.nstart.cloud/library/eclipse-temurin:21-jre
|
FROM repo.nstart.cloud/dockerhub/library/eclipse-temurin:21-jre
|
||||||
# Non-root user — security hardening (CSO report 2026-05-27 finding #1).
|
# Non-root user — security hardening (CSO report 2026-05-27 finding #1).
|
||||||
# См. ordinis-app/Dockerfile для rationale (compromise → root в контейнере
|
# См. ordinis-app/Dockerfile для rationale (compromise → root в контейнере
|
||||||
# = escalation surface на ноду). UID 10001 outside system+distro reserved.
|
# = escalation surface на ноду). UID 10001 outside system+distro reserved.
|
||||||
|
|||||||
Reference in New Issue
Block a user