From d72eb8f32e56dcc2cbdf428bcd16c4076e55e45b Mon Sep 17 00:00:00 2001 From: Sergey Antropoff Date: Mon, 27 Jul 2026 15:17:12 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=81=D0=B2=D1=8F=D0=B7=D0=BA=D0=B0=20Build=20?= =?UTF-8?q?=E2=86=92=20Deploy:=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20push=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=80=D0=B0=D0=B7=D0=B0=20=D1=82=D1=80=D0=B8=D0=B3?= =?UTF-8?q?=D0=B3=D0=B5=D1=80=D0=B8=D1=82=D1=81=D1=8F=20Helm=20upgrade.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Jenkinsfile | 34 +++++++++++++++++++++++++++++++++- Jenkinsfile.deploy | 4 +++- README.md | 4 +++- 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 1433054..fbfcba3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,6 +1,7 @@ // Wrapped — CI: multi-arch (amd64+arm64) build & push to Harbor + Docker Hub // // Триггер: push в main (webhook Gitea → Jenkins Multibranch / Pipeline from SCM). +// После успешного Build & push → trigger job DEPLOY_JOB (Jenkinsfile.deploy). // // Credentials в Jenkins (Manage Credentials → System → Global): // harbor-devops-tools-push-pull-access — Username with password (Harbor devops-tools) @@ -11,6 +12,10 @@ // Образы: // hub.antropoff.ru/devops-tools/wrapped: // inecs/wrapped: +// +// Связка Build → Deploy: +// Multibranch Deploy job, Script Path = Jenkinsfile.deploy +// путь по умолчанию: «Devops Tools/Wrapped Deploy/main» (поменяй DEPLOY_JOB при другом имени) pipeline { agent { label 'docker' } @@ -29,6 +34,8 @@ pipeline { IMAGE_VERSION = '0.1.0' RELEASE_TAG = "${env.GIT_COMMIT?.take(7) ?: 'dev'}" BUILDX_BUILDER = "jenkins-wrapped-${env.BUILD_NUMBER}" + // Multibranch: Folder/Job/branch — как в UI «Devops Tools » Wrapped Deploy » main» + DEPLOY_JOB = 'Devops Tools/Wrapped Deploy/main' TZ = 'Europe/Moscow' } @@ -106,15 +113,40 @@ pipeline { } } } + + stage('Trigger deploy') { + when { + anyOf { + branch 'main' + branch 'master' + } + } + steps { + script { + echo "Triggering ${DEPLOY_JOB} → ${DOCKERHUB_IMAGE}:${IMAGE_VERSION}" + build( + job: env.DEPLOY_JOB, + wait: true, + propagate: true, + parameters: [ + string(name: 'IMAGE_REPOSITORY', value: env.DOCKERHUB_IMAGE), + string(name: 'IMAGE_TAG', value: env.IMAGE_VERSION), + string(name: 'IMAGE_PULL_POLICY', value: 'Always'), + ] + ) + } + } + } } post { success { echo "✓ Harbor: ${HARBOR_IMAGE}:{${RELEASE_TAG},${IMAGE_VERSION},latest}" echo "✓ Docker Hub: ${DOCKERHUB_IMAGE}:{${RELEASE_TAG},${IMAGE_VERSION},latest}" + echo "✓ Deploy: ${DEPLOY_JOB} (${DOCKERHUB_IMAGE}:${IMAGE_VERSION})" } failure { - echo "✗ Сборка или push не удались — см. лог стадии Build & push" + echo "✗ Сборка, push или trigger deploy не удались — см. лог стадий" } always { script { diff --git a/Jenkinsfile.deploy b/Jenkinsfile.deploy index 4ab839c..c0f065c 100644 --- a/Jenkinsfile.deploy +++ b/Jenkinsfile.deploy @@ -4,7 +4,9 @@ // (секреты, Ingress, Postgres, MinIO). Этот pipeline лишь обновляет image.* // через helm --reuse-values, не затирая values с кластера. // -// Job: отдельный Pipeline / Multibranch, Script Path = Jenkinsfile.deploy +// Job: отдельный Multibranch Pipeline, Script Path = Jenkinsfile.deploy +// Имя по умолчанию (см. DEPLOY_JOB в Jenkinsfile): «Devops Tools/Wrapped Deploy» +// Триггер: вручную (Build with Parameters) или автоматически из Jenkinsfile после Build & push // Credentials: // k3s-kubeconfig — Secret file (kubeconfig), как у devops.org.ru // diff --git a/README.md b/README.md index bc310c1..5a27af7 100644 --- a/README.md +++ b/README.md @@ -476,7 +476,9 @@ kubectl -n wrapped rollout status deployment/wrapped Credential: `k3s-kubeconfig` (Secret file) — тот же, что у devops.org.ru. -Рекомендуемая связка job’ов: после успешного **Wrapped Builder** (build) → триггер **Wrapped Deploy** (этот `Jenkinsfile.deploy`), либо ручной **Build with Parameters**. +Рекомендуемая связка job’ов уже в [`Jenkinsfile`](Jenkinsfile): после успешного **Build & push** стадия **Trigger deploy** вызывает Multibranch job `Devops Tools/Wrapped Deploy/main` с параметрами `inecs/wrapped` / `0.1.0` / `Always` (`wait: true`). Если имя folder/job другое — поменяй `DEPLOY_JOB` в `Jenkinsfile`. + +Ручной запуск Deploy по-прежнему: **Build with Parameters**. ### Git (`make push`)