From 1080e6a79281c845b884eeb90f915361352ea269 Mon Sep 17 00:00:00 2001 From: Sergey Antropoff Date: Sat, 25 Apr 2026 18:53:46 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D1=80=D0=B0=D1=81=D1=88=D0=B8=D1=80?= =?UTF-8?q?=D0=B5=D0=BD=20=D1=81=D0=BF=D0=B8=D1=81=D0=BE=D0=BA=20Jenkins?= =?UTF-8?q?=20plugins=20=E2=80=94=20Vault,=20RBAC,=20=D1=83=D0=B2=D0=B5?= =?UTF-8?q?=D0=B4=D0=BE=D0=BC=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F,=20quality?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлены плагины по категориям: - Секреты: hashicorp-vault-plugin, kubernetes-credentials - Права: role-strategy, ldap - VCS: bitbucket - Build tools: maven-plugin, gradle, nodejs, ansible - Quality: sonar, warnings-ng, jacoco, cobertura, htmlpublisher - Artifacts: nexus-artifact-uploader, artifactory, publish-over-ssh - Уведомления: email-ext, slack, telegram-notifications, mattermost - Pipeline: pipeline-utility-steps, job-dsl, copyartifact, build-name-setter, throttle-concurrents, parameterized-trigger, docker-plugin JCasC: при addon_vault: true автоматически настраивает hashicorpVault URL Добавлена секция jenkins_vault_url в defaults --- addons/jenkins/role/defaults/main.yml | 85 ++++++++++++++++--- .../role/templates/jenkins-values.yaml.j2 | 11 +++ 2 files changed, 83 insertions(+), 13 deletions(-) diff --git a/addons/jenkins/role/defaults/main.yml b/addons/jenkins/role/defaults/main.yml index cca7d58..dde6e80 100644 --- a/addons/jenkins/role/defaults/main.yml +++ b/addons/jenkins/role/defaults/main.yml @@ -10,22 +10,81 @@ jenkins_admin_password: "{{ vault_jenkins_admin_password | default('changeme-jen # ── Plugins ─────────────────────────────────────────────────────────────────── jenkins_plugins: + # ── Core / Pipeline ───────────────────────────────────────────────────────── - kubernetes # динамические агенты в k8s подах - workflow-aggregator # Pipeline (Scripted + Declarative) - - git # Git SCM - - configuration-as-code # JCasC — конфиг как код - pipeline-stage-view # визуализация стадий Pipeline - - blueocean # современный UI (опционально) - - credentials-binding # переменные окружения из Credentials - - ssh-agent # SSH ключи в Pipeline - - docker-workflow # docker.build/push в Pipeline - - ansicolor # цветной вывод консоли - - build-timeout # таймаут сборки - - timestamper # временные метки в логах - - github # GitHub интеграция и webhooks - - gitlab-plugin # GitLab интеграция (опционально) - - gitea-plugin # Gitea интеграция (опционально) - - matrix-auth # ролевые права доступа + - pipeline-utility-steps # readFile/writeFile/zip/tar/findFiles в Pipeline + - job-dsl # создание jobs ч��рез Groovy DSL (JobDSL) + - configuration-as-code # JCasC — конфиг Jenkins как код (YAML) + + # ── Source Control ─────────────────────────────────────────────────────────── + - git # Git SCM + - github # GitHub webhooks, Pull Request builder + - gitlab-plugin # GitLab MR integration, webhooks + - gitea-plugin # Gitea webhooks, Pull Request + - bitbucket # Bitbucket webhooks и SCM + - ssh-agent # SSH ключи в Pipeline шагах + + # ── Секреты и Credentials ───────────────────────────────────────────────── + - credentials-binding # переменные окружения из Jenkins Credentials + - hashicorp-vault-plugin # HashiCorp Vault — чтение секретов в Pipeline + - kubernetes-credentials # ServiceAccount токены из k8s в Credentials + + # ── Права доступа ──────────────────────────────────────────────────────────── + - matrix-auth # ролевая матрица прав (per-user/per-job) + - role-strategy # RBAC с глобальными и project-level ролями + - ldap # LDAP / Active Directory авторизация + + # ── Docker и контейнеры ─────────────────────────────────────────────────── + - docker-workflow # docker.build/push/run в Pipeline + - docker-plugin # Docker Cloud — агенты в Docker-контейнерах + + # ── Build Tools ────────────────────────────────────────────────────────────── + - maven-plugin # Maven проекты (mvn goals в Pipeline) + - gradle # Gradle wrapper поддержка + - nodejs # NodeJS installations, npm/yarn в Pipeline + - ansible # Ansible playbook шаги в Pipeline + + # ── Code Quality ───────────────────────────────────────────────────────────── + - junit # публикация JUnit XML отчётов + - htmlpublisher # публикация HTML отчётов (coverage, docs) + - sonar # SonarQube/SonarCloud интеграция + - warnings-ng # статический анализ (checkstyle, spotbugs, pylint и др.) + - jacoco # JaCoCo code coverage отчёты + - cobertura # Cobertura XML coverage (Python, Ruby) + + # ── Артефакты и хранилища ──────────────────────────────────────────────────── + - nexus-artifact-uploader # публикация артефактов в Nexus Repository + - artifactory # JFrog Artifactory интеграция + - publish-over-ssh # деплой файлов по SSH + + # ── Уведомления ────────────────────────────────────────────────────────────── + - email-ext # расширенные email уведомления (шаблоны, триггеры) + - slack # уведомления в Slack каналы + - telegram-notifications # уведомления в Telegram + - mattermost # уведомления в Mattermost + + # ── Pipeline утилиты ───────────────────────────────────────────────────────── + - ws-cleanup # очистка workspace после сборки + - copyartifact # копирование а��тефактов между jobs + - build-name-setter # динамическое имя сборки (#42 → v1.2.3-abc1234) + - throttle-concurrents # ограничение параллельных сборок + - build-timeout # таймаут сборки (abort зависших jobs) + - parameterized-trigger # запуск downstream jobs с параметрами + + # ── UI и логи ───────────────────────────────────────────────────────────────── + - blueocean # современный Pipeline UI + - ansicolor # цветной вывод ANSI в консоли + - timestamper # временные метки в логах сборки + +# ── HashiCorp Vault ─────────────────────────────────────────────────────────── +# При addon_vault: true — JCasC автоматически настраивает Vault URL в Jenkins. +# Создай AppRole Credentials вручную после установки: +# Jenkins → Manage Credentials → Add → Vault App Role Credential +# id: vault-approle, role_id + secret_id из Vault +# В Pipeline: withVault(configuration: [...], vaultSecrets: [...]) { ... } +jenkins_vault_url: "http://vault.vault.svc.cluster.local:8200" # ── Ingress ─────────────────────────────────────────────────────────────────── jenkins_ingress_enabled: true diff --git a/addons/jenkins/role/templates/jenkins-values.yaml.j2 b/addons/jenkins/role/templates/jenkins-values.yaml.j2 index 553a348..02da345 100644 --- a/addons/jenkins/role/templates/jenkins-values.yaml.j2 +++ b/addons/jenkins/role/templates/jenkins-values.yaml.j2 @@ -57,6 +57,17 @@ controller: unclassified: location: url: "http{{ 's' if jenkins_ingress_tls else '' }}://{{ jenkins_ingress_host }}/" +{% if addon_vault | default(false) | bool %} + vault-config: | + unclassified: + hashicorpVault: + configuration: + vaultUrl: "http://vault.vault.svc.cluster.local:8200" + vaultCredentialId: "vault-approle" + engineVersion: 2 + skipSslVerification: true + timeout: 60 +{% endif %} # Хранилище Jenkins Home persistence: