繁体   English   中英

如何创建 jenkins 作业以部署在多个 ec2 实例上

[英]How to create jenkins job to deploy on multiple ec2 instances

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

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

首先,对于多次使用的步骤,我总是将其设置为共享库。 基本上,您为共享库设置了一个 git 存储库并将其导入到 Jenkinsfile 中。 阅读此官方文档以获取详细说明。 快速完成此操作的更简单方法是将它们作为函数简单地放在 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()
        }
    }
}

请注意,部署是来自shared-library 的一种方法。 它可能是这样的(我在所有服务器上都有一个 jenkins 用户设置来远程部署)。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM