【问题标题】:Is it possible to execute Jenkins jobs from Powershell or Bash or Groovy scripts?是否可以从 Powershell 或 Bash 或 Groovy 脚本执行 Jenkins 作业?
【发布时间】:2016-08-29 07:05:06
【问题描述】:

我已经分离了相当小的 Jenkins 工作。

现在我需要配置另一个作业,根据用户参数的选择(可能通过复选框选择?)将执行其中的一些。

我想从 Powershell 或 Bash 或 Groovy 脚本启动它们。有可能吗?

【问题讨论】:

    标签: bash powershell jenkins groovy


    【解决方案1】:

    如果您在 Postbuild/管道步骤中使用 Groovy,则可以通过 Jenkins API 启动该作业。

    例如,类似这样的无参数构建:

    import hudson.model.*
    Jenkins.instance.getItem("My Job").scheduleBuild(5)
    

    对于参数化构建,类似这样:

    import hudson.model.*
    Jenkins.instance.getItem("My Job").scheduleBuild( 5, new Cause.UpstreamCause( currentBuild ), new ParametersAction([ new StringParameterValue( "My Parameter Name", "My Parameter Value" ) ]));
    

    您也可以使用Jenkins Rest API 来完成其他操作。例如,通过点击以下网址:

    无参数:

    curl -X POST JENKINS_URL/job/JOB_NAME/build
    

    参数化:

    curl -X POST JENKINS_URL/job/JOB_NAME/buildWithParameters?MyParameterName=MyParameterValue
    

    【讨论】:

    • 谢谢!是否也可以设置 Jenkins 作业参数(Jenkins.instance.getItem("My Job").parameters ?)。我想使用当前工作的参数。
    • 是的!我已经用更多示例更新了答案。 :)
    • 能否请您在示例中添加“import hudson.model.*”以避免“无法解析类”异常?
    • // 避免 groovy.lang.MissingPropertyException: No such property: Jenkins for class: Script1 // 错误,您需要添加以下行:import jenkins.model.Jenkins 不幸的是,脚本仍然失败以下错误:没有这样的属性:currentBuild
    • 关于 currentBuild 问题,如果您不在管道步骤中,它将是未定义的。如果您在 postbuild groovy 步骤中,您可以通过“manager.build”获得相同的变量。如果您处于 groovy 系统步骤中,则可以只使用“build”变量。
    【解决方案2】:

    样本:

    import hudson.model.*
    def actions=[]
      def plist=[ ];
      ["ok":"ok","label":"master"].each {k,v->    
        plist << new hudson.model.StringParameterValue(k,"$v","");
      }
    actions.add(new hudson.model.ParametersAction(plist));
    def future = Jenkins.instance.getItemByFullName("samples/testPipeline").scheduleBuild2(0,actions as hudson.model.Action[] );
    future.get().getLog()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-17
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多