尝试了解Groovy语法

时间:2018-07-31 15:01:22

标签: jenkins groovy jenkins-job-dsl

我对Jenkins(使用Job DSL插件)下的时髦语言不熟悉,并且试图理解另一个人编写的旧脚本,我无法弄清楚第3行发生了什么。请:

<listener>
    <listener-class>ch.qos.logback.classic.selector.servlet.ContextDetachingSCL</listener-class>
</listener>

1 个答案:

答案 0 :(得分:1)

这是詹金斯(Jenkins)工作DSL脚本,而不是管道作为代码。他的脚本是生成XML代码段,该代码段将作为作业的config.xml的一部分。

假设您有一份工作:测试,并且其URL为https://myjenkins.abc.com/Dev/test,则可以打开以下URL:https://myjenkins.abc.com/Dev/test/config.xml以获取工作的config.xml。

这是一个从作业DSL:http://job-dsl.herokuapp.com/生成Jenkins作业XML的工具,通过它您可以预先检查DSL脚本是否正确。

将DSL下面的内容复制到工具的左侧文本框中。

job('test') {

    configure { project ->

          def properties = project / 'properties'
          def mantisProject = properties / 'hudson.plugins.mantis.MantisProjectProperty' {
              siteName(MANTIS_URL)
              projectId('1')
              category('General')
              pattern('"[%ID%]"')
              linkEnabled('true')
              regex("[^0-9]?([0-9]?[0-9]?[0-9][0-9][0-9][0-9][0-9])[^0-9]?[^0-9]+.*")
              regexpPattern {
                  pattern("[^0-9]?([0-9]?[0-9]?[0-9][0-9][0-9][0-9][0-9])[^0-9]?[^0-9]+.*")
                  flags(0)
              }
          }           

   }
}

点击运行,您将获得相应的XML:

<project>
    <actions></actions>
    <description></description>
    <keepDependencies>false</keepDependencies>
    <properties>
        <hudson.plugins.mantis.MantisProjectProperty>
            <siteName>MANTIS_URL</siteName>
            <projectId>1</projectId>
            <category>General</category>
            <pattern>"[%ID%]"</pattern>
            <linkEnabled>true</linkEnabled>
            <regex>[^0-9]?([0-9]?[0-9]?[0-9][0-9][0-9][0-9][0-9])[^0-9]?[^0-9]+.*</regex>
            <regexpPattern>
                <pattern>[^0-9]?([0-9]?[0-9]?[0-9][0-9][0-9][0-9][0-9])[^0-9]?[^0-9]+.*</pattern>
                <flags>0</flags>
            </regexpPattern>
        </hudson.plugins.mantis.MantisProjectProperty>
    </properties>
    <scm class='hudson.scm.NullSCM'></scm>
    <canRoam>true</canRoam>
    <disabled>false</disabled>
    <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
    <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
    <triggers></triggers>
    <concurrentBuild>false</concurrentBuild>
    <builders></builders>
    <publishers></publishers>
    <buildWrappers></buildWrappers>
</project>

您可以查看post1post2

的更多详细信息