跳过正文
  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 Linux Agent 配置
·353 字·1 分钟
本文提供了 Jenkins Linux Agent 的逐步配置指南,包括 Java 运行时的准备、节点创建以及常见问题的排查方法。
Jenkins Windows Agent 配置
·608 字·2 分钟
本文提供 Jenkins Windows Agent 的详细配置步骤,包括 Java 运行时准备、节点创建以及常见问题的排查方法。
如何启用、配置和禁用 Jenkins LDAP
·311 字·1 分钟
本文介绍如何在 Jenkins 中启用和配置 LDAP 身份验证,以及在需要时临时禁用它的方法。
在 Jenkins 上用了这么久的 Groovy,是时候认识一下它了
·1673 字·4 分钟
Groovy 是一种强大的动态语言,适用于 Java 平台,本文介绍了 Groovy 的特性、与 Java 的区别以及在 Jenkins 中的应用场景。
Jenkins 作业超时后让构建失败的方法(已解决)
·331 字·1 分钟
本文介绍如何在 Jenkins 流水线中正确处理超时场景,通过 try 和 catch 结合 error 确保超时后作业会失败。
Jenkins 升级后 Windows Agent 无法启动的解决方法
·325 字·1 分钟
本文介绍 Jenkins 升级后 Windows Agent 无法启动的问题,以及通过更新 Windows Slaves 插件和修改配置文件来解决的步骤。