在 Jenkins 管道中查找先前运行的 git 提交哈希

问题描述 投票:0回答:1

我在 Jenkins 工作,旨在构建多个 Docker 容器镜像和图表。我希望这项工作检查 git 树的差异,以了解是否应该构建新版本的图像。

最初我有 Jenkins 版本号,然后我使用 currentBuild 运行此函数以递归搜索以前的版本。

def findBuildByNumber (build, buildNo) {
    if (build == null) {
        error "FATAL: Called with null searching for $buildNo"
    }
    if (build.number == buildNo) {
        return build
    }
    return findBuildByNumber (build.getPreviousBuild(), buildNo)
}
buildFound = findBuildByNumber(currentBuild, buildNo)

此代码返回先前构建的

build
对象,现在我想知道其中设置了什么
GIT_COMMIT
变量。

buildFound.buildVariables.GIT_COMMIT
buildFound.getBuildVariables()?.GIT_COMMIT
都给出 null。在此对象上调用
dump()
会产生较差的输出:

org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper@5d8bc8d0 
externalizableId=devops/arc/main#125
currentBuild=false

如何访问特定构建的构建变量(通过编号可知),在同一作业中运行了什么?

git jenkins jenkins-groovy
1个回答
0
投票

您可以访问已完成构建的参数 (

build.getAction(ParametersAction.class).getParameter('PARAM_NAME')
),但不能访问其环境变量。您可以参考
build.xml
查看实际保存到磁盘的内容。

在您的情况下,您可以访问 scm

build.getActions(hudson.plugins.git.util.BuildData.class)[0].getLastBuiltRevision().getSha1String()
。如果您有多个结账,您可能需要选择使用哪个
BuildData
,而不仅仅是
[0]

© www.soinside.com 2019 - 2024. All rights reserved.