как получить шаблон модуля агента из другого репозитория в конвейере Дженкинса
Я хочу сохранить шаблоны агентов конвейера jenkins (kubernetes pod) в репо A. Файл jenkins находится в репо B. Чтобы запустить этап ci в репо B, мне нужна папка агентов, извлеченная из репо A.
pipeline {
agent none
stages {
stage('ci') {
agent {
kubernetes {
yamlFile "agents/ci.yaml"
}
}
steps {
}
}
stage('staging deploy') {
agent {
kubernetes {
yamlFile "agents/stage-deploy.yaml"
}
}
steps {
}
}
}
}
Когда я запускаю задание конвейера jenkins, оно проверяет Repo B (имя ветки = develop). Но я не могу проверить репо A (имя ветки = master), чтобы получить шаблоны агентов. Любая помощь здесь была бы замечательной. Я много боролся с этим.
1 ответ
вам нужно сначала вытащить репо с шаблонами pod, а затем сослаться на содержимое желаемого файла yaml. Первый этап нужно выполнить на главном узле. Вот пример конвейера:
def currentLabel = "${UUID.randomUUID().toString()}"
def podTemplate
pipeline {
agent any
stages {
stage('Checkout pod templates') {
agent {
label 'master'
}
steps {
sh "mkdir podTemplates"
dir("podTemplates") {
git branch: "master",
url: "git@github.com/your-pod-templates.git",
credentialsId: "$REPO_CREDS"
}
script {
podTemplate = new File("${WORKSPACE}/podTemplates/pod-template.yml").text
}
}
}
stage('Second stage') {
agent {
kubernetes {
label currentLabel
defaultContainer 'jnlp'
yaml podTemplate
}
}
steps {
script {
...
do something here
...
}
}
}
}
}
Я думаю, вы можете создать столько переменных podTemplate, сколько вам нужно.