C++ 在两个Jenkins版本中的文件之间运行特定的diff命令

C++ 在两个Jenkins版本中的文件之间运行特定的diff命令,c++,c,jenkins,abi,C++,C,Jenkins,Abi,我最近发现了阿比迪夫;一种以两个二进制文件作为输入并描述ABI差异的工具。这对于检测何时需要更改ABI版本号非常有用 理想情况下,我们会将其集成到基于Jenkins的CI中,但我无法立即看到一种简单的方法来对当前构建中的文件和上次成功构建中的相应文件(理想情况下是在同一个分支上)运行命令 我确实使用了一个exceuteshell构建步骤,但看不到一个明显的方法来获得上一个成功的构建编号,从中我最终能够获得要比较的文件的路径。有没有关于如何获取此信息的建议/指针?有一个GIT\u PREVIOUS

我最近发现了阿比迪夫;一种以两个二进制文件作为输入并描述ABI差异的工具。这对于检测何时需要更改ABI版本号非常有用

理想情况下,我们会将其集成到基于Jenkins的CI中,但我无法立即看到一种简单的方法来对当前构建中的文件和上次成功构建中的相应文件(理想情况下是在同一个分支上)运行命令


我确实使用了一个
exceuteshell
构建步骤,但看不到一个明显的方法来获得上一个成功的构建编号,从中我最终能够获得要比较的文件的路径。有没有关于如何获取此信息的建议/指针?有一个
GIT\u PREVIOUS\u SUCCESSFUL\u COMMIT
环境变量,但据我所知,这没有多大用处,因为将SHA解析为磁盘上的文件需要将SHA解析为内部版本号。

您可以找到最后一个这样成功的内部版本(如果使用管道)

导入jenkins.model*
def job=jenkins.model.jenkins.instance.getItemByFullName(“”)
def buildNumber=job.getLastSuccessfulBuild().getNumber()
sh“阿比迪夫../builds/$buildNumber”
您可能还想看看:


或者你可能会想到

1。为什么这个标签是C/C++?abidiff是一个用于C和/或C++的工具,其实并不重要。运行diff的行为与它所运行的文件类型不同。嗯,我遇到过类似的东西,但不幸的是我们没有使用管道。那么看看其他stackoverflow链接。它只使用外壳。
import jenkins.model.*

def job = jenkins.model.Jenkins.instance.getItemByFullName('<jobname>')
def buildNumber = job.getLastSuccessfulBuild().getNumber()
sh "abidiff <my-file> ../builds/$buildNumber"