跳过正文
Background Image
  1. Posts/

如何在 Jenkins 多分支流水线中实现 [skip ci]

·420 字·1 分钟· ·
沈显鹏
作者
沈显鹏
目录

在 Jenkins 多分支流水线中实现 [skip ci][ci skip] 时,现有插件似乎已不可用。

建议:如果可能,尽量不要依赖 Jenkins 插件。

于是,我决定自己实现一个 [skip ci] 功能。


在 Jenkins Shared Library 中创建函数
#

如果你和我一样使用 Jenkins Shared Library,可以在 src/org/cicd/utils.groovy 中创建一个 SkipCI 函数,这样其他任务也可以复用。

// src/org/cicd/utils.groovy
def SkipCI(number = "all"){
  def statusCodeList = []

  String[] keyWords = ['ci skip', 'skip ci'] // 可根据需要添加更多关键词
  keyWords.each { keyWord ->
    def statusCode = null
    if (number == "all") {
      statusCode = sh script: "git log --oneline --all | grep \'${keyWord}\'", returnStatus: true
    } else {
      statusCode = sh script: "git log --oneline -n ${number} | grep \'${keyWord}\'", returnStatus: true
    }
    statusCodeList.add(statusCode)
  }

  return statusCodeList.contains(0)
}

在其他任务中调用
#

// 以下为示例代码,并非完整可运行的版本
import org.cicd.utils

def call(){

  pipeline {
    agent {
      node {
        label 'linux'
      }
    }

    parameters {
      booleanParam defaultValue: true, name: 'Build', summary: '取消勾选以跳过构建。'
    }

    def utils = new org.cicd.utils()

    stage("Checkout") {
      checkout scm

      // 仅检查最新一次提交信息
      SkipCI = utils.SkipCI('1')
    }

    stage("Build"){
      when {
        beforeAgent true
        expression { return params.Build && !SkipCI }
      }

      steps {
        script {
          sh "make build"
        }
      }
    }
  }
}

总结
#

通过这种方式,你可以在不依赖插件的情况下,在 Jenkins 多分支流水线中灵活地实现 [skip ci] 功能。 如果有任何问题或建议,欢迎留言交流。


转载本文请注明作者与出处,禁止商业用途。欢迎关注公众号「DevOps攻城狮」。

相关文章

如何通过 Jenkins 进行资源的锁定和释放
·901 字·2 分钟
本文介绍了如何使用 Jenkins 的 Lockable Resources 插件来管理和锁定资源,确保在多任务环境中资源的独占性和安全性。
通过 Jenkins 来提交修改的代码 git push by Jenkins
·439 字·1 分钟
如何通过 Jenkins Pipeline 脚本来提交修改的代码到 Git 仓库,包括克隆仓库、修改代码和推送更改等步骤。
Jenkins Linux Agent 配置
·353 字·1 分钟
本文提供了 Jenkins Linux Agent 的逐步配置指南,包括 Java 运行时的准备、节点创建以及常见问题的排查方法。
Jenkins Windows Agent 配置
·608 字·2 分钟
本文提供 Jenkins Windows Agent 的详细配置步骤,包括 Java 运行时准备、节点创建以及常见问题的排查方法。
Jenkinsfile 配置
·256 字·1 分钟
本文介绍了如何使用 Jenkinsfile 配置 Jenkins Pipeline,包括构建、测试和发布阶段的示例,以及如何处理邮件通知。
如何启用、配置和禁用 Jenkins LDAP
·311 字·1 分钟
本文介绍如何在 Jenkins 中启用和配置 LDAP 身份验证,以及在需要时临时禁用它的方法。