首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以编程方式触发通过github组织管理的特定jenkins构建?

如何以编程方式触发通过github组织管理的特定jenkins构建?
EN

Stack Overflow用户
提问于 2016-03-30 14:54:15
回答 2查看 3.5K关注 0票数 3

我正在使用github组织插件来管理来自github的jenkins作业,但是我发现Jenkins API没有报告这些构建。

实际上,API将整个组织作为一个单一作业列出。

如何使用API构建特定的存储库和分支?

为了清楚起见,我正在寻找一些在Jenkinsfile中添加的groovy代码。

代码语言:javascript
复制
#!groovy

stage 'test-downstream'
node {
    def job = build job: 'some-job'
}

现在,问题是Jenkins把整个组织看作是一个单一的工作!

如果我使用Jenkins来检索作业,它将只返回组织,而不是返回其中的所有存储库和作业。

我怀疑这是因为这个插件的实现方式,我想我需要提供一些额外的参数来指定我想要在组织内部构建的存储库和分支.建立一个组织没有多大意义。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-31 11:35:13

这个问题很模糊,但我猜这个上下文中的“API”意味着REST将触发构建。例如,您可以使用

代码语言:javascript
复制
curl -X POST -u user:apitoken http://jenkins/job/yourorg/job/yourrepo/job/master/build
票数 5
EN

Stack Overflow用户

发布于 2016-08-25 08:43:31

下面的代码通过System构建步骤触发作业。请注意,系统groovy总是在主程序上运行,因此从前面的构建步骤传递信息可能很棘手。

代码语言:javascript
复制
import jenkins.model.*
import hudson.model.*
import java.util.concurrent.*

def run_job(job_name) {
  def currentBuild = Thread.currentThread().executable
  def jenkins = jenkins.model.Jenkins.getInstance();

  def job = jenkins.getItemByFullName(job_name);
  if (job == null)
      throw new hudson.AbortException("Cannot find job:" + job_name);

  def params =[
    new StringParameterValue('PARAMETER1', "invoke 1 param1"), 
    new StringParameterValue('PARAMETER2', ",invoke 1 param2")
  ]

  def paramsAction = new ParametersAction(params) 
  def cause = new hudson.model.Cause.UpstreamCause(currentBuild)
  def causeAction = new hudson.model.CauseAction(cause)     

  def future_build = job.scheduleBuild2(0,causeAction,paramsAction);
  def running_build = future_build.waitForStart()
  return running_build
}

run_job("runner1")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36312502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档