Я новичок в трубопроводе Дженкинса; Я определяю декларативный синтаксический конвейер и не знаю, смогу ли я решить мою проблему, потому что я не нашел решения.
В этом примере мне нужно передать переменную в ansible плагин (в старой версии я использую ENV_VAR или вставлять его из файла с помощью плагина inject), эта переменная происходит из скрипта.
Это мой идеальный сценарий (но он не работает, потому что среда {}):
pipeline {
agent { node { label 'jenkins-node'}}
stages {
stage('Deploy') {
environment {
ANSIBLE_CONFIG = '${WORKSPACE}/chimera-ci/ansible/ansible.cfg'
VERSION = sh("python3.5 docker/get_version.py")
}
steps {
ansiblePlaybook credentialsId: 'example-credential', extras: '-e version=${VERSION}', inventory: 'development', playbook: 'deploy.yml'
}
}
}
}
Я попробовал другие способы проверить работу env vars в другом посте, например:
pipeline {
agent { node { label 'jenkins-node'}}
stages {
stage('PREPARE VARS') {
steps {
script {
env['VERSION'] = sh(script: "python3.5 get_version.py")
}
echo env.VERSION
}
}
}
}
но "echo env.VERSION" возвращает ноль.
Также попробовал тот же пример с: - VERSION = python3.5 get_version.py
- VERSION = python3.5 get_version.py
> props.file (и попытаться внедрить его, но не нашел как)
Если это невозможно, я сделаю это в роли.
ОБНОВИТЬ
В Ansible Plugin есть еще одна "проблема": чтобы использовать переменные в дополнительных переменных, они должны иметь двойные кавычки вместо одинарных.
ansiblePlaybook credentialsId: 'example-credential', extras: "-e version=${VERSION}", inventory: 'development', playbook: 'deploy.yml'