Добавлена связка Build → Deploy: после push образа триггерится Helm upgrade.
This commit is contained in:
Vendored
+33
-1
@@ -1,6 +1,7 @@
|
|||||||
// Wrapped — CI: multi-arch (amd64+arm64) build & push to Harbor + Docker Hub
|
// Wrapped — CI: multi-arch (amd64+arm64) build & push to Harbor + Docker Hub
|
||||||
//
|
//
|
||||||
// Триггер: push в main (webhook Gitea → Jenkins Multibranch / Pipeline from SCM).
|
// Триггер: push в main (webhook Gitea → Jenkins Multibranch / Pipeline from SCM).
|
||||||
|
// После успешного Build & push → trigger job DEPLOY_JOB (Jenkinsfile.deploy).
|
||||||
//
|
//
|
||||||
// Credentials в Jenkins (Manage Credentials → System → Global):
|
// Credentials в Jenkins (Manage Credentials → System → Global):
|
||||||
// harbor-devops-tools-push-pull-access — Username with password (Harbor devops-tools)
|
// 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>
|
// hub.antropoff.ru/devops-tools/wrapped:<sha|0.1.0|latest>
|
||||||
// inecs/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 {
|
pipeline {
|
||||||
agent { label 'docker' }
|
agent { label 'docker' }
|
||||||
@@ -29,6 +34,8 @@ pipeline {
|
|||||||
IMAGE_VERSION = '0.1.0'
|
IMAGE_VERSION = '0.1.0'
|
||||||
RELEASE_TAG = "${env.GIT_COMMIT?.take(7) ?: 'dev'}"
|
RELEASE_TAG = "${env.GIT_COMMIT?.take(7) ?: 'dev'}"
|
||||||
BUILDX_BUILDER = "jenkins-wrapped-${env.BUILD_NUMBER}"
|
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'
|
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 {
|
post {
|
||||||
success {
|
success {
|
||||||
echo "✓ Harbor: ${HARBOR_IMAGE}:{${RELEASE_TAG},${IMAGE_VERSION},latest}"
|
echo "✓ Harbor: ${HARBOR_IMAGE}:{${RELEASE_TAG},${IMAGE_VERSION},latest}"
|
||||||
echo "✓ Docker Hub: ${DOCKERHUB_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 {
|
failure {
|
||||||
echo "✗ Сборка или push не удались — см. лог стадии Build & push"
|
echo "✗ Сборка, push или trigger deploy не удались — см. лог стадий"
|
||||||
}
|
}
|
||||||
always {
|
always {
|
||||||
script {
|
script {
|
||||||
|
|||||||
+3
-1
@@ -4,7 +4,9 @@
|
|||||||
// (секреты, Ingress, Postgres, MinIO). Этот pipeline лишь обновляет image.*
|
// (секреты, Ingress, Postgres, MinIO). Этот pipeline лишь обновляет image.*
|
||||||
// через helm --reuse-values, не затирая values с кластера.
|
// через 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:
|
// Credentials:
|
||||||
// k3s-kubeconfig — Secret file (kubeconfig), как у devops.org.ru
|
// k3s-kubeconfig — Secret file (kubeconfig), как у devops.org.ru
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -476,7 +476,9 @@ kubectl -n wrapped rollout status deployment/wrapped
|
|||||||
|
|
||||||
Credential: `k3s-kubeconfig` (Secret file) — тот же, что у devops.org.ru.
|
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`)
|
### Git (`make push`)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user