栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Jenkinsfile-获取构建之间的所有更改

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Jenkinsfile-获取构建之间的所有更改

我找到了一种似乎对我们有用的解决方案。它围绕着获取

currentBuild
提交哈希值,然后是
lastSuccessfulBuild
提交哈希值。首先,我们编写了一个实用程序方法来获取给定Jenkins构建对象的提交哈希:

def commitHashForBuild(build) {  def scmAction = build?.actions.find { action -> action instanceof jenkins.scm.api.SCMRevisionAction }  return scmAction?.revision?.hash}

然后使用它来获取

lastSuccessfulBuild
的哈希值:

def getLastSuccessfulCommit() {  def lastSuccessfulHash = null  def lastSuccessfulBuild = currentBuild.rawBuild.getPreviousSuccessfulBuild()  if ( lastSuccessfulBuild ) {    lastSuccessfulHash = commitHashForBuild(lastSuccessfulBuild)  }  return lastSuccessfulHash}

最后将两者结合在一个

sh
函数中以获取提交列表

  def lastSuccessfulCommit = getLastSuccessfulCommit()  def currentCommit = commitHashForBuild(currentBuild.rawBuild)  if (lastSuccessfulCommit) {    commits = sh(      script: "git rev-list $currentCommit "^$lastSuccessfulCommit"",      returnStdout: true    ).split('n')    println "Commits are: $commits"  }

然后,您可以根据需要使用

commits
数组在Git中查询各种内容。例如,您可以使用此数据获取自上次成功构建以来所有已更改文件的列表。

我已将其放入一个完整的示例Jenkinsfile
Gist中,以显示它如何在上下文中融合在一起。

可能的改进是使用Java / Groovy本机Git库,而不是

sh
逐步进行。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/636596.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号