当我尝试在Jenkins上访问MERCURIAL_REVISION时,为什么会返回NULL值?

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

在Mercurial上,我在我的hgrc文件中实现了一个钩子,当Jenkins中发生某种变化时(如标记或提交),它就会激活。这是我的钩子代码。

curl -X POST http://tokenusername:[email protected]:8080/job/pipelinejob/buildWithParameters/mercurial/notifyCommit?url=http://127.0.0.1:85/hg/experimentrepoistory?token=1247

所以,我的钩子通知Jenkins发生了变化,管道执行没有任何问题,但由于某些原因,我无法获得提交ID或任何提交的作者姓名等。我去jenkins的脚本控制台,用groovy写了下面的代码,看看Mercurial的变化集数据是否传输到Jenkins。同时,所有的库都被导入了

def job = hudson.model.Hudson.instance.getItem("pipelinejob")
def builds = job.getBuilds()
def thisBuild = builds[0]
println('Lets test Mercurial fields ' + thisBuild.getEnvironment()['MERCURIAL_REVISION']) //Lets test Mercurial fields null

这让我觉得MERCURIAL_REVISION由于某种原因没有被定义,即使我提供了一个有变化集信息的作业。我读了这个文档 https:/javadoc.jenkins.iopluginmercurialhudsonpluginsmercurialMercurialChangeSet.html#MercurialChangeSet--。 列出了一堆函数,其中有很多函数,如 getCommitId() getNode() 等得到我需要的信息。问题是我不太清楚如何用jenkin jobs pipelinejob实例化MercurialChangeSet,理论上应该有Mercurial commitId信息。这就是为什么我想知道我在访问MERCURIAL_REVISION时是否遗漏了一些明显的东西。

jenkins jenkins-pipeline mercurial jenkins-groovy mercurial-hook
1个回答
0
投票

所以我发现我需要启用SCM的Pipeline脚本,并且我需要把带有Pipeline代码的Jenkins文件放在我的工作区目录下,以便获得变化集信息。我不太清楚为什么会这样,因为我认为Jenkinsfile需要放在SCM的repo目录下。

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