具有多个部署的单个 Jenkins 作业

Posted

技术标签:

【中文标题】具有多个部署的单个 Jenkins 作业【英文标题】:Single Jenkins job with multiple deployment 【发布时间】:2018-05-29 13:19:21 【问题描述】:

我们如何为不同的环境配置 Jenkins 作业。我们正在使用具有不同分支的 git 存储库,例如 master 、 test 和 devl ,这些环境部署在不同的服务器中。我已经使用参数选项配置了构建,因此我可以使用单选按钮从该作业构建任何分支。 当我选择 devl 分支时,工作需要从 devl 分支获取最新代码并构建它,然后需要部署到 devl 服务器中。如果我们选择测试,则需要部署到测试服务器。我们如何在同一个作业中配置这种多重部署?

【问题讨论】:

【参考方案1】:

您可以使用https://wiki.jenkins.io/display/JENKINS/Pipeline+Multibranch+Plugin。 该插件将监视您的 repo 的所有分支,并基于 Jenkinsfile 构建不同的分支。

在 Jenkinsfile 中你可以使用when 表达式:

   stage('Deploy devl') 
        when 
            expression  env.BRANCH_NAME == 'devl' 
        
        steps 
            sh 'deploy devl'
        
    

【讨论】:

【参考方案2】:
    您为什么选择在一份工作中做,而不是不同的工作? 您使用什么工具进行部署?

我可以建议 - 不要深入了解细节(因为我没有它们)。

为每个不同的环境都有一个作业,将每个作业连接到相关的 git 存储库和分支,每当构建此作业时,它将执行 scm 签出(您也可以使用钩子在更改时触发它)并部署到相关环境。

如果您回答 #2,我可能会建议其他选项来管理此问题(可能在同一工作下 - 如果您出于某种原因需要此选项)。

【讨论】:

以上是关于具有多个部署的单个 Jenkins 作业的主要内容,如果未能解决你的问题,请参考以下文章

docker部署Jenkins

实战练习通过docker部署jenkins

Jenkins - 同时运行单个构建的实例

自动化部署之jenkins升级和备份

Jenkins自动化部署Jenkins Master修改工作空间

Centos7安装部署Jenkins