Reviewed-on: https://git.avroid.tech/DevOps/jenkins-pipelines/pulls/30 Co-authored-by: aleksandr.vodyanov <aleksandr.vodyanov@avroid.tech> Co-committed-by: aleksandr.vodyanov <aleksandr.vodyanov@avroid.tech>
Jenkins pipelines
Репозиторий с пайплайнами Avroid
Джобы в репозитории должны соответствовать той же ирархии каталогов что и в Jenkins.
├── 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
Ссылка на локальную документацию.
Джобы dsl должны называться через "_" пробелы и "-" запрещены, потому что у job dsl проблемы с парсингом.
Триггер джобы jobs-dsl
Джоба jobs-dsl вызывается через джобу jobs-runner, которая в свою очередь вызывается по webhook из gitea.
WebHook job
В репозитории есть джоба которая запускает другие джобы в зависомости от условий.
Джоба имеет следующий мапинг
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']
]
]