# Jenkins pipelines Репозиторий с пайплайнами Avroid --- Джобы в репозитории должны соответствовать той же ирархии каталогов что и в **Jenkins**. ```bash ├── jobs-dsl │ ├── folders │ │ └── Docker.groovy │ ├── jobs │ │ └── Docker │ │ └── build_docker_image.groovy │ └── views │ └── devops.groovy └── pipelines └── Docker └── build_docker_image.groovy ``` На изображении выше показана иерархия рабочих каталогов: Каталог **jobs-dsl** содержит в себе 3 каталога folders, jobs, views. В каждом из них содержиться описание сущностей jenkins. Далее идет каталог **pipelines**, в нем содержаться рабочии пайплайны. После создания джобы **pipeline**, необходимо добавить **job dsl** в директории **jobs-dsl** --- ## jenkins-job-dsl Репозиторий для реализации методологии **IaC** для управления задачами в Jenkins c использованием плагина [Job DSL](https://plugins.jenkins.io/job-dsl/) [Ссылка](https://jenkins.avroid.tech/plugin/job-dsl/api-viewer/index.html) на локальную документацию. Джобы **dsl** должны называться через "_" пробелы и "-" запрещены, потому что у **job dsl** проблемы с парсингом. --- ## Триггер джобы jobs-dsl Джоба [jobs-dsl](https://jenkins.avroid.tech/job/jobs-dsl/job/jobs-dsl/) вызывается через джобу [jobs-runner](https://jenkins.avroid.tech/job/gitea-events/job/jobs-runner/), которая в свою очередь вызывается по **webhook** из **gitea**. --- ## WebHook job В репозитории есть [джоба](pipelines/gitea-events/jobs-runner.groovy) которая запускает другие джобы в зависомости от условий. Джоба имеет следующий мапинг ```bash Map projects = [ // при такой конфигурации будет запускаться только одна джоба с проекта 'devops/jenkins-pipeline-shared-lib' // из мастер ветки. Можно добавлять сюда еще и другие ветки. 'devops/jenkins-pipeline-shared-lib': [ 'branches': ['master'], 'jobs': ['Docs/create_shared_libs_docs'] ], // при такой конфигурации будет запускаться только одна джоба с проекта 'antiq/tsnative' на любой ветке 'antiq/tsnative': [ 'branches': [], 'jobs': ['gitea-events/add-git-tags-to-jira'] ] ] ```