当前位置: 首页 > 面试题库 >

在詹金斯的github pull request中添加评论

帅颖逸
2023-03-14
问题内容

我在Jenkins中使用Git Pull Request Builder插件将Pull请求链接到Jenkins。作业由钩子触发,一切运行顺利。

不过,在构建结束时,我想在失败/成功或错误时添加一条注释。

我尝试使用管道并使用

pullRequest.comment('This is a comment sent from the Pipeline')

但是它无法识别(我为github安装了管道):

groovy.lang.MissingPropertyException: No such property: pullRequest for class: groovy.lang.Binding
  at groovy.lang.Binding.getVariable(Binding.java:63)
  at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:242)
  at org.kohsuke.groovy.sandbox.impl.Checker$6.call(Checker.java:288)
  at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:292)
  at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:268)
  at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:268)
  at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:29)
  at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
  at WorkflowScript.run(WorkflowScript:5)
  at ___cps.transform___(Native Method)
  at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.get(PropertyishBlock.java:74)
  at com.cloudbees.groovy.cps.LValueBlock$GetAdapter.receive(LValueBlock.java:30)
  at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.fixName(PropertyishBlock.java:66)
  at sun.reflect.GeneratedMethodAccessor446.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:498)
  at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
  at com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21)
  at com.cloudbees.groovy.cps.Next.step(Next.java:83)
  at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:174)
  at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:163)
  at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:122)
  at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:261)
  at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:163)
  at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$101(SandboxContinuable.java:34)
  at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.lambda$run0$0(SandboxContinuable.java:59)
  at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108)
  at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:58)
  at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:174)
  at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:332)
  at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$200(CpsThreadGroup.java:83)
  at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:244)
  at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:232)
  at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64)
  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:131)
  at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
  at java.lang.Thread.run(Thread.java:748)
Finished: FAILURE

使用自由式作业:

java.lang.NullPointerException
  at org.jenkinsci.plugins.github.pullrequest.utils.JobHelper.getGhRepositoryFromPRTrigger(JobHelper.java:162)
  at org.jenkinsci.plugins.github.pullrequest.utils.JobHelper.getGhPullRequest(JobHelper.java:178)
  at org.jenkinsci.plugins.github.pullrequest.publishers.impl.GitHubPRCommentPublisher.perform(GitHubPRCommentPublisher.java:72)
  at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:81)
  at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
  at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)
  at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:690)
  at hudson.model.Build$BuildExecution.post2(Build.java:186)
  at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:635)
  at hudson.model.Run.execute(Run.java:1752)
  at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
  at hudson.model.ResourceController.execute(ResourceController.java:97)
  at hudson.model.Executor.run(Executor.java:429)
Build step 'GitHub PR: post comment' marked build as failure

现在我真的不知道在哪里找


问题答案:

我找不到执行此操作的插件,所以我确实使用了curl。这是我的常规功能

def call(def text_pr) {
  def repository_url = scm.userRemoteConfigs[0].url
  def repository_name = repository_url.replace("git@github.com:","").replace(".git","")

  withCredentials([string(credentialsId: '<YOUR-TOKEN-ID>', variable: 'GITHUB_TOKEN')]) {
    sh "curl -s -H \"Authorization: token ${GITHUB_TOKEN}\" -X POST -d '{\"body\": \"${text_pr}\"}' \"https://api.github.com/repos/${repository_name}/issues/${ghprbPullId}/comments\""
  }
}


 类似资料:
  • 有没有可能让詹金斯使用真正的浏览器而不是无头浏览器?我正在运行一些用TestNG编写的测试(使用Selenium webdriver)。当我运行testng时。在Eclipse中,浏览器启动并运行测试。但当我使用Jenkins并用maven运行测试时,它不会启动任何浏览器。

  • 问题内容: 如何轻松地将Jenkins与qUnit集成?我将使用真正的浏览器(如firefox和chrome)运行测试。我的服务器在RedHat 6.1 Linux上运行。我想我都需要插件/库,但我仍然不知道如何使其工作。我第一次与Jenkins合作(在服务器端)。 //编辑: 如果有人也可以共享想法如何构建覆盖率报告,那将是很棒的。 提前致谢 :)。 问题答案: 说詹金斯和QUnit只是难题的一

  • 我想做一些非常简单的事情,在一个文件夹中,我有一个jar文件和一个包含脚本的名为脚本的文件夹。但我可以让詹金斯拉链来做这件事。 zip目录:“awsdeploy”,排除:“”,glob:“”,“scripts/”,zipFile:“SQSToElasticProcessor.zip” 必须显式命名“zip”的参数。@ 第 31 行,第 16 列。

  • 问题内容: 我为持续集成有一个jenkins实例(实际上在docker内部运行)。 jenkins服务器在外部docker主机上构建docker映像,对其进行测试,然后将其推送到标记。 现在,当我构建发行版时,我想将docker映像从测试重新标记为。我 不 希望重建一个新的标签的形象,我想重新标记现有的图像。 詹金斯怎么办?我正在查看jenkins插件,找不到具有此功能的任何插件。 问题答案: 由

  • 问题内容: 我有一份詹金斯的工作。我想使用build参数在特定时间构建我的工作。 我想通过使用该选项。 我有这样的输入: 如果我这样做,詹金斯会显示一个错误。 是否可以 不使用任何插件 。 如果没有,那哪个插件会更好 或者,有没有办法在时间表中提供参数? 我的实际需求是这样的: 问题答案: 基本上,使用“定期构建”选项,您无法安排带有参数的Jenkins作业。 但是,要在需要使用不同环境的不同时间

  • 问题内容: 我正在尝试在詹金斯(Jenkins)中运行以下内容,但我得到任何建议的错误? 错误-为什么在shell脚本中不使用文件名重新填充? 问题答案: 我建议在双引号中运行bash命令,并转义和字符。考虑以下Jenkins管道示例脚本: 我在此示例中使用的文件包含: 当我运行它时,我得到以下控制台输出: 运行脚本文件后,将其内容更改为: 希望能帮助到你。