【问题标题】:How to create jenkins job to deploy on multiple ec2 instances如何创建 jenkins 作业以部署在多个 ec2 实例上
【发布时间】:2019-02-10 19:04:07
【问题描述】:

我是云新手,我创建了一个 Jenkins 服务器和 tomcat 服务器, 我已经成功测试了简单的 CICD 实现。 现在我想知道如何将我的代码部署到多个服务器。 例如。如果我有 4 个不同的安装 tomcat 的实例。那么如何将单个源代码部署到不同的服务器上呢?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 jenkins-pipeline tomcat8


    【解决方案1】:

    您没有提到,但我假设您正在使用带有声明性管道的 Jenkinsfile,因为您确实应该这样做。不要尝试在网页上配置所有内容,它不可扩展且没有版本控制。

    首先,对于多次使用的步骤,我总是将其设置为共享库。基本上,您为共享库设置了一个 git 存储库并将其导入到 Jenkinsfile 中。阅读此official document 以获取详细说明。 快速完成此操作的更简单方法是将它们作为函数放在 Jenkinsfile 的末尾

    在我必须部署到多个位置的 Jenkinsfile 中,这是我要做的一个最小示例。

    @Library('shared-library') _
    
    pipeline {
        agent any
        environment
        {
            DEPLOYMENT_URL_A = 'a.example.com'
            DEPLOYMENT_URL_B = 'b.example.com'
        }
        stages {
            stage ('Build') {
                steps {
                    script {
                        YOUR BUILD STEPS HERE
                    }
                }
            }
        }
        stage ('Deployment') {
            steps {
                script {
                        deployment("${deploymentUrlA}")
                        deployment("${deploymentUrlB}")
                        }
                    }
                }
            }
        }
        post {
            always {
                deleteDir()
            }
        }
    }
    

    请注意,deploymentshared-library 中的一种方法。可能是这样的(我在所有服务器上都设置了 jenkins 用户以进行远程部署)。

    #!/usr/bin/env groovy
    def call(deploymentUrl) {
        sh """ssh -o StrictHostKeyChecking=no \\
            jenkins@${deploymentUrl} \\
            YOUR DEPLOYMENT STEP HERE"""
    }
    

    但这绝对不是一个可扩展的解决方案。对于更大的动态服务器集,您可能希望将服务器列表存储在其他位置,然后在运行时获取它,并将其作为列表传递给部署函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-20
      • 2015-12-03
      • 2019-06-10
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      • 2019-05-17
      相关资源
      最近更新 更多