jenkins 多分支构建(9)

1.创建多分支pipeline

  前面所有例子都是单分支pipeline项目,而在实际项目中,往往需要多分支同时进行开发。如果为每个分支都分别创建一个jenkins项目,实在有些多余。幸好jenkins支持多分支pipeline(Multibranch Pipeline)。在创建此类项目时,就需要选择Multibranch Pipeline,如下所示:

  下面创建了一个项目叫multibranch-jenkenhellowrold, 配置好git仓库,在腾讯工蜂的jenkenhellowrold项目上增加一个develop开发分支,继承来自master分支。点击scan多分支时,会自动加载一个develop任务,如果git仓库删除一个分支,这里也会自动删除一个任务。jenkins界面中如下所示:

     下面是配置定时扫描分支,不需要人工去点击,如下所示:

      孤儿项任务策略:如果代码仓库删除了release分支,那么在多分支任务页面上,该分支任务也应该被删除,至于什么时候删除,取决于下次分支扫描的时间,如果jenkins上相应任务还没有被删除,那么这个任务就叫"孤儿项任务"。

    如下图所示,旧的流水线是指孤儿项任务

 

2. 根据分支部署到不同的环境

  git分支可以用于对代码进行物理隔离。对分支的管理有很多方法,比如主干开发,发布分支以及gitflow法等,但不论使用哪种分支管理,都会有根据不同的分支部署到不同的环境,类似使用if-else来实现。

   2.1 when指令

    when指令允许pipeline根据给定的条件,决定是否执行阶段内的步骤。when指令必须至少包含一个条件。

    下面编写一个pipeline文件,上传到devlop和master分支,保持多分支下pipeline文件相同

pipeline {
    agent any
    stages {
        //部署到生产环境
        stage('deploy to pro'){
           when{
                branch  'master'
           }
           steps{
                echo "deploy to pro" 
            }
        }
        stage('deploy to dev'){
            when{
                branch 'develop'
            }
            steps{
                echo "deploy to dev" 
            }
        }
    }
}

    下面点击一个任务进去,开始构建,如下图

 

     构建日志,如下说明,当前构建跳过了 阶段“deploy to pro ”,在deploy to dev阶段中执行了,打印了echo deploy to dev

[Pipeline] stage
[Pipeline] { (deploy to pro)
Stage "deploy to pro" skipped due to when conditional
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (deploy to dev) (hide)
[Pipeline] echo
deploy to dev

 

   2.2 when其它判断 

    when指令除了支持branch判断条件,还支持多种条件判断。

    1)changelog:如果版本控制库的changlog符合正则表达式,则执行。

    2)changeset: 如果版本控制库的变更集合中包含一个或多个文件符合的Ant风格路径表达式,则执行。

    3)environment:如果环境变量的值与给定的值相同,则执行。

    4)equals:如果期望值与给定的值相同,则执行。

    5)expression:如果Groovy表达式返回true,则执行。

    6)tag:如果pipeline所执行的代码被打了tag,且tag名称符合规则,则执行。

  

 

posted on 2022-11-30 17:14  花阴偷移  阅读(112)  评论(0编辑  收藏  举报

导航