+ Added jobs-dsl and gitea events Co-authored-by: aleksandr.vodyanov <aleksandr.vodyanov@avroid.tech> Co-committed-by: aleksandr.vodyanov <aleksandr.vodyanov@avroid.tech>
73 lines
3.0 KiB
Markdown
73 lines
3.0 KiB
Markdown
# 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.devos.club/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']
|
||
]
|
||
]
|
||
```
|