Как создать задание jenkins для развертывания на нескольких экземплярах ec2 - PullRequest
0 голосов
/ 05 сентября 2018

Я новичок в облаке, я создал один сервер Jenkins и серверы Tomcat, Я успешно протестировал простую реализацию CICD. Теперь я хочу знать, как развернуть мой код на нескольких серверах. например если у меня есть 4 разных экземпляра с установкой Tomcat. Тогда как мне развернуть один исходный код на разных серверах?

1 Ответ

0 голосов
/ 05 сентября 2018

Вы не упомянули, но я предполагаю, что вы используете 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"""
}
...