Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
alexanderbazhenoff committed Feb 23, 2024
1 parent 7fff06a commit 2373446
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 28 deletions.
4 changes: 2 additions & 2 deletions .github/linters/.markdown-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ MD013:
# Number of characters
line_length: 120
# Number of characters for headings
heading_line_length: 80
heading_line_length: 120
# Number of characters for code blocks
code_block_line_length: 80
code_block_line_length: 120
# Include tables
tables: false
# Include headings
Expand Down
18 changes: 9 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<div style='text-align: center;'>
<!-- markdownlint-disable MD041 -->
<div align='center'>

# Jenkins Universal Wrapper Pipeline

Expand All @@ -15,7 +16,7 @@ The way to create Jenkins pipelines much easier and faster by configuring yaml f
## About

Jenkins Universal Wrapper Pipeline allows you to create multistage pipelines by describing actions in a stages in yaml
files. You don't need Groovy programming language knowledge, even declarative Jenkins pipeline style. Just create
files. You don't need Groovy programming language knowledge, even declarative Jenkins pipeline style. Just create
configuration file and describe all stages and actions should be done.The syntax and structure of the configs is in many
ways reminds of the GitLab, GitHub or Travis CI. It's very similar writing stages, actions then action description what
each of them should do.
Expand All @@ -30,14 +31,14 @@ each of them should do.
- Working with file-artifacts.
- Able to run actions in a stages in parallel or sequentially.
- Inject pipeline parameters on the first pipeline run by specifying them inside yaml config file.
- You can also extend a pipeline features code and run native language 'as part of pipeline' (e.g. Groovy for
- You can also extend a pipeline features code and run native language 'as part of pipeline' (e.g. Groovy for
Jenkins) by adding code in pipeline actions inside yaml config.

## Requirements

1. Jenkins version 2.x or higher (perhaps lower versions are also fine, but tested on versions 2.190.x).
2. [Linux jenkins node(s)](https://www.jenkins.io/doc/book/installing/linux/) to run pipeline. Most of built-in actions
except scripts and ansible playbook run (such as getting sources, stash/unstash files, node selection, working with
except scripts and ansible playbook run (such as getting sources, stash/unstash files, node selection, working with
artifacts files, inject pipeline parameters and running code 'as a prt of pipeline') probably also works on
Windows nodes, but it wasn't tested.
3. This pipeline requires [jenkins shared library](https://github.com/alexanderbazhenoff/jenkins-shared-library)
Expand All @@ -57,12 +58,11 @@ each of them should do.
4. Read [detailed manual](https://github.com/alexanderbazhenoff/universal-wrapper-pipeline-settings) with pipeline
config format description to create your own, or use example configs (e.g.
['example-pipeline'](https://github.com/alexanderbazhenoff/universal-wrapper-pipeline-settings/blob/main/settings/example-pipeline.yaml).
You should create pipeline from SCM with the same name as your config file (except name prefix and extension - see
You should create pipeline from SCM with the same name as your config file (except name prefix and extension - see
'PipelineNameRegexReplace' in ['Pipeline constants'](#pipeline-constants)) pointed to this repository and code in
[jenkins-universal-wrapper-pipeline.groovy](jenkins-universal-wrapper-pipeline.groovy) file.
5. Some used methods in pipeline code may require administrators to approve a usage of them (see
["In-process Script Approval"](https://www.jenkins.io/doc/book/managing/script-approval/) in official
documentation).
["In-process Script Approval"](https://www.jenkins.io/doc/book/managing/script-approval/) in official documentation).

## Pipeline constants

Expand All @@ -84,7 +84,7 @@ constant values.
- `PipelineNameRegexReplace` list constant or `JUWP_PIPELINE_NAME_REGEX_REPLACE` environment variable (comma separated
list of regular expressions, e.g: `'value1, value2, value3'`): regular expression for jenkins pipeline name, a
string that will be cut from pipeline name to become a filename of yaml pipeline settings to be loaded.
- `AnsibleInstallationName` constant: ansible installation name from jenkins Global Configuration Tool or empty for
- `AnsibleInstallationName` constant: ansible installation name from jenkins Global Configuration Tool or empty for
defaults from jenkins shared library (see ['Ansible Jenkins plugin'](https://plugins.jenkins.io/ansible/)
documentation).
- `BuiltinPipelineParameters` constant contains a built-in pipeline parameters, which are mandatory and not present in
Expand All @@ -93,7 +93,7 @@ constant values.

## Constants override

You can also override [pipeline constants](#pipeline-constants) without code pipeline changes using predefined
You can also override [pipeline constants](#pipeline-constants) without code pipeline changes using predefined
environment variable(s). Set them in node settings (via selecting node in "Manage Jenkins Nodes" menu), or better in an
option 'Prepare an environment for the run' in your pipeline settings. As official Jenkins manual of
[Environment Injector](https://plugins.jenkins.io/envinject/) described, enable 'Prepare an environment for the run'
Expand Down
35 changes: 18 additions & 17 deletions README_RUS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<div style='text-align: center;'>
<!-- markdownlint-disable MD041 -->
<div align='center'>

# Jenkins Universal Wrapper Pipeline

Expand Down Expand Up @@ -34,9 +35,9 @@ Jenkins Universal Wrapper Pipeline позволяет создавать multist
## Требования

1. Jenkins версии 2.x, или выше (возможно, версии ниже так же подойдут, но тестировалось на версиях 2.190.x).
2. [Linux ноды Jenkins](https://www.jenkins.io/doc/book/installing/linux/) для запуска pipeline. Большинство
"встроенных" в pipeline действий за исключением запуска скриптов и ansible-playbook'ов (таких, как получение
исходников, перемещение файлов между нодами, выбор ноды, работа с файлами-артефактами, добавление параметров
2. [Linux ноды Jenkins](https://www.jenkins.io/doc/book/installing/linux/) для запуска pipeline. Большинство
"встроенных" в pipeline действий за исключением запуска скриптов и ansible-playbook'ов (таких, как получение
исходников, перемещение файлов между нодами, выбор ноды, работа с файлами-артефактами, добавление параметров
pipeline, запуск кода "как часть pipeline"), скорей всего, так же работаю на Windows node'ах, но не тестировалось.
3. Этот pipeline требует подключения
[jenkins shared library](https://github.com/alexanderbazhenoff/jenkins-shared-library).
Expand All @@ -53,10 +54,10 @@ Jenkins Universal Wrapper Pipeline позволяет создавать multist
['Требования'](#требования)).
3. Установите значения всех констант pipeline'а (особенно репозитории) (см.
["константы pipeline"](#константы-pipeline)).
4. Прочтите [подробную инструкцию](https://github.com/alexanderbazhenoff/universal-wrapper-pipeline-settings) с
4. Прочтите [подробную инструкцию](https://github.com/alexanderbazhenoff/universal-wrapper-pipeline-settings) с
описанием формата конфигурационных файлов, чтобы создать свой, или используйте уже готовые примеры (например,
['example-pipeline'](https://github.com/alexanderbazhenoff/universal-wrapper-pipeline-settings/blob/main/settings/example-pipeline.yaml).
Для этого вам нужно создать "pipeline из SCM" (pipeline from SCM) с тем же именем, что и конфигурационный файл
Для этого вам нужно создать "pipeline из SCM" (pipeline from SCM) с тем же именем, что и конфигурационный файл
(за исключением префикса имени и расширения - см. 'PipelineNameRegexReplace' в
["Константы pipeline"](#константы-pipeline)), который указывает на этот репозиторий и код в файле
[jenkins-universal-wrapper-pipeline.groovy](jenkins-universal-wrapper-pipeline.groovy).
Expand All @@ -76,34 +77,34 @@ Jenkins Universal Wrapper Pipeline позволяет создавать multist
для загрузки настроек текущего pipeline.
- Константа `DefaultSettingsGitBranch`, или переменная окружения `JUWP_DEFAULT_SETTINGS_GIT_BRANCH`: ветка в репозитории
['universal-wrapper-pipeline-settings'](https://github.com/alexanderbazhenoff/universal-wrapper-pipeline-settings/tree/main).
- Константа `SettingsRelativePathPrefix`, или переменная окружения `JUWP_RELATIVE_PATH_PREFIX`: префикс, или
- Константа `SettingsRelativePathPrefix`, или переменная окружения `JUWP_RELATIVE_PATH_PREFIX`: префикс, или
относительный путь (relative path) к yaml файлам внутри репозитория
['universal-wrapper-pipeline-settings'](https://github.com/alexanderbazhenoff/universal-wrapper-pipeline-settings/tree/main),
который будет автоматически подставлен при загрузке yaml (например: папка `settings`).
- Константа `PipelineNameRegexReplace` (с типом "список"), или переменная окружения`JUWP_PIPELINE_NAME_REGEX_REPLACE`
(с разделенным запятыми списком регулярных выражений, например: `'value1, value2, value3'`): регулярные выражения
для имени Jenkins pipeline'а, строка, которая будет отрезана из имени pipeline'а, прежде, чем станет именем
(с разделенным запятыми списком регулярных выражений, например: `'value1, value2, value3'`): регулярные выражения
для имени Jenkins pipeline'а, строка, которая будет отрезана из имени pipeline'а, прежде, чем станет именем
загружаемых настроек pipeline'а.
- Константа `BuiltinPipelineParameters`: встроенные параметры pipeline, которые обязательны, но не присутствуют в
- Константа `BuiltinPipelineParameters`: встроенные параметры pipeline, которые обязательны, но не присутствуют в
настройках pipeline ('universal-wrapper-pipeline-settings'): заданные здесь параметры pipeline `UPDATE_PARAMETERS`,
`SETTINGS_GIT_BRANCH`, `NODE_NAME`, `NODE_TAG`, `DRY_RUN` и `DEBUG_MODE` являются системными. Их изменение не
`SETTINGS_GIT_BRANCH`, `NODE_NAME`, `NODE_TAG`, `DRY_RUN` и `DEBUG_MODE` являются системными. Их изменение не
рекомендуется.

## Переопределение констант

Вы можете переопределить [константы pipeline](#константы-pipeline) без изменения кода pipeline, используя
предустановленные переменные окружения. Установите их в настройках ноды (через выбор ноды в меню "Manage Jenkins
Nodes"), или лучше всего - в опции "Prepare an environment for the run" в настройках pipeline. Как описывает
официальная документация [Environment Injector'а](https://plugins.jenkins.io/envinject/), включите опцию "Prepare an
environment for the run" и в поле "Properties Content" выпадающего меню впишите ваши значения переменных окружения,
Вы можете переопределить [константы pipeline](#константы-pipeline) без изменения кода pipeline, используя
предустановленные переменные окружения. Установите их в настройках ноды (через выбор ноды в меню "Manage Jenkins
Nodes"), или лучше всего - в опции "Prepare an environment for the run" в настройках pipeline. Как описывает
официальная документация [Environment Injector'а](https://plugins.jenkins.io/envinject/), включите опцию "Prepare an
environment for the run" и в поле "Properties Content" выпадающего меню впишите ваши значения переменных окружения,
например:

```properties
JUWP_SETTINGS_GIT_URL=http://github.com/my_usrrname/my_universal-wrapper-pipeline-settings-repository
JUWP_DEFAULT_SETTINGS_GIT_BRANCH=my_branch
```

## Ссылки:
## Ссылки

- [Universal wrapper pipeline settings](https://github.com/alexanderbazhenoff/universal-wrapper-pipeline-settings/tree/main)
репозиторий с описанием формата конфигурационных файлов и примерами настроек.

0 comments on commit 2373446

Please sign in to comment.