如何使用Jenkins api创建参数化作业

时间:2016-06-27 15:10:22

标签: python jenkins continuous-integration

我使用Jenkins python api创建参数化作业,我可以使用以下config.xml创建一个带有一个参数的作业

<?xml version='1.0' encoding='UTF-8'?>
<project>
  <actions/>
  <description>A build that explores the wonderous possibilities of parameterized builds.</description>
  <keepDependencies>false</keepDependencies>
  <properties>
    <hudson.model.ParametersDefinitionProperty>
      <parameterDefinitions>
        <hudson.model.StringParameterDefinition>
          <name>B</name>
          <description>B, like buzzing B.</description>
          <defaultValue></defaultValue>
        </hudson.model.StringParameterDefinition>
      </parameterDefinitions>
    </hudson.model.ParametersDefinitionProperty>
  </properties>
  <scm class="hudson.scm.NullSCM"/>
  <canRoam>true</canRoam>
  <disabled>false</disabled>
  <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
  <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
  <triggers class="vector"/>
  <concurrentBuild>false</concurrentBuild>
  <builders>
    <hudson.tasks.Shell>
      <command>ping -c 1 localhost | tee out.txt
echo $A &gt; a.txt
echo $B &gt; b.txt</command>
    </hudson.tasks.Shell>
  </builders>
  <publishers>
    <hudson.tasks.ArtifactArchiver>
      <artifacts>*</artifacts>
      <latestOnly>false</latestOnly>
    </hudson.tasks.ArtifactArchiver>
    <hudson.tasks.Fingerprinter>
      <targets></targets>
      <recordBuildArtifacts>true</recordBuildArtifacts>
    </hudson.tasks.Fingerprinter>
  </publishers>
  <buildWrappers/>
</project>

我真正想要的是创建一个包含多个参数的作业,我尝试在此xml中添加并行<name>标记,但它实际上在新作业中创建了一个参数。我错误地更改了xml吗?

还有什么可以在api中的参数字段中添加预定义值?例如,参数B在创建作业后将具有值b

1 个答案:

答案 0 :(得分:4)

每个参数都需要自己的hudson.model.StringParameterDefinition部分。听起来你正试图在一个StringParameterDefintion部分中放置多个名称,这将不起作用。

如果有疑问,请手动创建作业,然后转到该作业的页面并附加“/config.xml”。您将获得该作业的XML。让你的Python复制它,你就完全了。