Вы не упомянули, но я предполагаю, что вы используете Jenkinsfile с декларативным конвейером, потому что вы действительно должны. Не пытайтесь настроить все на веб-странице, она не масштабируется и не имеет контроля версий.
Во-первых, для шагов, которые используются более одного раза, я всегда настраиваю его как разделяемую библиотеку. По сути, вы настраиваете репозиторий git для разделяемой библиотеки и импортируете его в файл Jenkinsfile. Прочитайте официальный документ для получения подробных инструкций. Более простой способ сделать это быстро - просто поместить их в конец вашего Jenkinsfile как функции .
В моем Jenkinsfile, где мне нужно развернуть более чем в одном месте, это минимальный пример того, что я бы сделал.
@Library('shared-library') _
pipeline {
agent any
environment
{
DEPLOYMENT_URL_A = 'a.master.motif.org'
DEPLOYMENT_URL_B = 'b.master.motif.org'
}
stages {
stage ('Build') {
steps {
script {
YOUR BUILD STEPS HERE
}
}
}
}
stage ('Deployment') {
steps {
script {
deployment("${deploymentUrlA}")
deployment("${deploymentUrlB}")
}
}
}
}
}
post {
always {
deleteDir()
}
}
}
Обратите внимание, что развертывание - это метод из shared-library . Это может быть что-то вроде этого (у меня есть настройка пользователя jenkins на всех серверах для удаленного развертывания).
#!/usr/bin/env groovy
def call(deploymentUrl) {
sh """ssh -o StrictHostKeyChecking=no \\
jenkins@${deploymentUrl} \\
YOUR DEPLOYMENT STEP HERE"""
}