Добавлена связка Build → Deploy: после push образа триггерится Helm upgrade.

This commit is contained in:
2026-07-27 15:17:12 +03:00
parent b20f12e52e
commit d72eb8f32e
3 changed files with 39 additions and 3 deletions
Vendored
+33 -1
View File
@@ -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:<sha|0.1.0|latest>
// inecs/wrapped:<sha|0.1.0|latest>
//
// Связка 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 {
+3 -1
View File
@@ -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
//
+3 -1
View File
@@ -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`)