标签: jenkins-job-dsl

使用Jenkins DSL插件进行稀疏结账?

有没有人有正确的代码示例

configure { ... }
Run Code Online (Sandbox Code Playgroud)

在Jenkins DSL插件中需要阻止设置git稀疏结账吗?

似乎config.xml部分看起来像这样:

<extensions>
  <hudson.plugins.git.extensions.impl.CloneOption>
    <shallow>false</shallow>
    <reference>/build/jenkins/codebase.git</reference>
  </hudson.plugins.git.extensions.impl.CloneOption>
  <hudson.plugins.git.extensions.impl.SparseCheckoutPaths>
    <sparseCheckoutPaths>
      <hudson.plugins.git.extensions.impl.SparseCheckoutPath>
        <path>BillOfMaterials.yml</path>
      </hudson.plugins.git.extensions.impl.SparseCheckoutPath>
      <hudson.plugins.git.extensions.impl.SparseCheckoutPath>
        <path>jenkins/job/</path>
      </hudson.plugins.git.extensions.impl.SparseCheckoutPath>
    </sparseCheckoutPaths>
  </hudson.plugins.git.extensions.impl.SparseCheckoutPaths>
</extensions>
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-plugins jenkins-job-dsl

2
推荐指数
1
解决办法
1733
查看次数

Groovy:如何从另一个闭包中调用顶级范围内的闭包

我正在尝试将利用Jenkins Job DSL插件的代码分解为可重用的部分,并且我怀疑我的问题是Groovy的通用问题,而不是Jenkins特定的问题。例如,我想重用此块的某些部分:

freeStyleJob() {
    //generic stuff
    name "something"
    description "something else"

    //custom stuff
    scm {
       svn {
           //etc....
       }
    }
}
Run Code Online (Sandbox Code Playgroud)

通过将名称和描述放在实用程序方法中(显然,我不仅想在现实生活中做更多的事情)。但是,我找不到合适的语法来创建当前作用域的闭包。这是我认为的样子:

def jobCommonItems() {
    return {
        //generic stuff
        name "something"
        description "something else"
    }
}


freeStyleJob() {
    jobCommonItems().call()

    //custom stuff
    scm {
       svn {
           //etc....
       }
    }
}
Run Code Online (Sandbox Code Playgroud)

(也许有一个closure.delegate =这个在某处)

但是,这不适用于闭包。它适用于方法,如下所示:https : //dzone.com/articles/groovy-closures-owner-delegate

为了说明这一点,下面的测试显示了三种可能的语法组合:

String myString = "Top Level: string"
def myMethod() {
    println "Top Level: Method"
}
def myClosure = { println "Top Level: Class"}

class …
Run Code Online (Sandbox Code Playgroud)

groovy closures jenkins jenkins-job-dsl

2
推荐指数
1
解决办法
3556
查看次数

如何在Jenkins中使用Job DSL插件删除脚本?

我对Jenkins和Job DSL插件很陌生。经过一些研究,我发现了如何使用DSL创建作业,现在我正尝试使用DSL删除作业。我知道使用以下代码禁用作业:

//create new job
//freeStyleJob("MyJob1", closure = null);

job("MyJob1"){
  disabled(true);
}
Run Code Online (Sandbox Code Playgroud)

运行正常。但是,我找不到在詹金斯删除其他工作的任何方法。

请帮忙!

谢谢!

jenkins jenkins-plugins jenkins-job-dsl

2
推荐指数
2
解决办法
6161
查看次数

Jenkins工作dsl和MSTest集成

Jenkins Job DSL插件是一种非常好的方式,可以在repo中存储CI配置,并在分支之间进行更改.

问题是 - 是否有一种自然或接近自然的方式来运行MSTest测试,解析结果并显示它们.

现在我做了一个powershell调用,但这只给了我日志,而不是UI集成.

def testSomeProjectJob =  job(testSomeProjectJobName) {
    steps { 
      powerShell("& ${vstest} '${root}/SomeProject/SomeProject.Tests/bin/Debug/SomeProject.Tests.dll' ")
    }
}
Run Code Online (Sandbox Code Playgroud)

可能有一个出版商或一个带模板的技巧,或者为JOB DSL编写插件的一些技巧


UPD:使用@daspilker回答,jenkins xUnit插件archiveXUnit的 MSTest和VSTest的最终脚本模板

  job('RunTests') {
      steps {
           // VSTEST
           powerShell("& ${vstest} 'path/to/Tests.dll' /logger:trx ")
           // Or MSBUILD
            powerShell("& ${msbuild} /testcontainer:'path/to/Tests.dll' ")
      }
      publishers {
        archiveXUnit {
          msTest {
            pattern('**/*.trx')
            // deleteOutputFiles()
          }
        }
      }
    }
Run Code Online (Sandbox Code Playgroud)

mstest jenkins jenkins-plugins jenkins-job-dsl jenkins-mstest

2
推荐指数
1
解决办法
851
查看次数

2
推荐指数
1
解决办法
4475
查看次数

Groovy脚本无法从Jenkins DSL作业调用Slack通知参数

我尝试第一次使用Jenkins Job DSL插件来创建一些基本的作业“模板”,然后再介绍更复杂的内容。

Jenkins在Windows 2012服务器上运行。Jenkins版本是1.650,我们正在使用Job DSL插件版本1.51。

理想情况下,我希望对种子作业进行参数化,以便在运行该种子时,用户可以输入四项内容:作业DSL脚本位置,生成的作业的名称,用于通知失败的Slack通道以及一封电子邮件。故障通知的地址。

前两个很好:我可以在groovy脚本中调用参数,例如,脚本可以理解job("${JOB_NAME}")并使用我在运行种子作业时为作业输入的名称。

但是,当我尝试使用Slack频道执行相同的操作时,groovy脚本似乎不想播放。请注意,如果我指定一个Slack通道而不是尝试调用一个参数,它将正常工作。

我的Job DSL脚本在这里:

job("${JOB_NAME}") {
    triggers {
        cron("@daily")
    }
    steps {
        shell("echo 'Hello World'")
    }
    publishers {
    slackNotifier {
      room("${SLACK_CHANNEL}")
      notifyAborted(true)
      notifyFailure(true)
      notifyNotBuilt(false)
      notifyUnstable(true)
      notifyBackToNormal(true)
      notifySuccess(false)
      notifyRepeatedFailure(false)
      startNotification(false)
      includeTestSummary(false)
      includeCustomMessage(false)
      customMessage(null)
      buildServerUrl(null)
      sendAs(null)
      commitInfoChoice('NONE')
      teamDomain(null)
      authToken(null)
    }
  }
    logRotator {
        numToKeep(3)
        artifactNumToKeep(3)
    publishers {
        extendedEmail {
            recipientList('me@mydomain.com')
            defaultSubject('Seed job failed')
            defaultContent('Something broken')
            contentType('text/html')
            triggers {
              failure ()
              fixed ()
              unstable ()
                stillUnstable {
                    subject('Subject')
                    content('Body')
                    sendTo {
                        developers()
                        requester()
                        culprits() …
Run Code Online (Sandbox Code Playgroud)

groovy jenkins-job-dsl slack

2
推荐指数
1
解决办法
1371
查看次数

Jenkins:普通的DSL:使用三元运算符区分FreeStyleJob和MatrixJob

我正在尝试为詹金斯编写一个groovy-dsl脚本以生成两个作业:

  • 第一份工作是FreestyleJob
  • 第二个是MatrixJob

它们的定义几乎相同。它们之间只有微小的差异。因此,我想重用大多数工作代码,然后进入以下重构场景(请关注第五行的三元运算符):

[
    ['toolchainsBuild': false],
    ['toolchainsBuild': true],
].each { Map config ->
    config.toolchainsBuild ? job("job1") : matrixJob("job2") {
        // job definition follows...for example:
        out.println("debug")
        steps {
            cmake {
                buildToolStep {}
            }
        }
        // if (config.toolchainsBuild) {
        //     ... // different actions, depending on the job type
        // }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用。证明:debug仅在日志文件中打印一次(它应该出现两次,因为我希望定义两个不同的作业)。

我还尝试将三元运算符及其操作数包装在括号中,如下所示:

(config.toolchainsBuild ? job("job1") : matrixJob("job2")) {
// ...
Run Code Online (Sandbox Code Playgroud)

但是,这会导致语法错误:

Processing provided DSL script
ERROR: (script, line 20) No signature of …
Run Code Online (Sandbox Code Playgroud)

groovy ternary-operator jenkins groovydsl jenkins-job-dsl

2
推荐指数
1
解决办法
3807
查看次数

如何在 Jenkins DSL 中添加上游作业

我可以使用 Jenkins 的 DSL 插件完成下游工作:

https://github.com/jenkinsci/job-dsl-plugin/wiki/Job-reference#downstream

我怎样才能做一个上游工作(同样的事情......只是在不同的地方指定)?

在 UI 中,它位于 Triggers 下:“在构建其他项目后构建”。

jenkins jenkins-job-dsl

1
推荐指数
1
解决办法
1944
查看次数

用于在 jenkins 中定期启用 Build 的 DSL

我知道如何使用轮询来做到这一点,

triggers
{
  scm("H/15 * * * *")
}
Run Code Online (Sandbox Code Playgroud)

如何指定触发器定期构建? 在此处输入图片说明

dsl jenkins-job-dsl

1
推荐指数
1
解决办法
2998
查看次数

使用Jenkins Job DSL在Jenkins中使用Artifactory配置作业

我正在尝试在使用Job DSL插件生成的Jenkins作业中设置Artifactory.

配置如下所示:

  wrappers {
    colorizeOutput 'xterm'
    buildName '#${BUILD_NUMBER}-release'
    artifactoryGenericConfigurator {
      // Repository to deploy to.
      details {
        artifactoryName('artifactory.foo.bar.com')
        artifactoryUrl('https://artifactory.foo.bar.com/artifactory')
        deployReleaseRepository {
          keyFromSelect('')
          keyFromText('')
          dynamicMode(false)
        }
        deploySnapshotRepository {
          keyFromSelect('')
          keyFromText('')
          dynamicMode(false)
        }
        resolveReleaseRepository() {
          keyFromText('')
          keyFromSelect('')
          dynamicMode(false)
        }
        resolveSnapshotRepository() {
          keyFromText('')
          keyFromSelect('')
          dynamicMode(false)
        }
        userPluginKey('')
        userPluginParams('')

        useSpecs(true)
        uploadSpec {
          spec('''{
            "files": [
              {
                  "pattern": "app.tar.gz",
                  "target": "myrepo/app/${BUILD_NUMBER}-release",
                  "flat" : "false"
              }
            ]
          }''')
          filePath(null)
        }
        downloadSpec {
          spec('')
          filePath(null)
        }
      }

      deployPattern('')
      deployBuildInfo(true)
      includeEnvVars(false)
      discardOldBuilds(false)
      discardBuildArtifacts(false) …
Run Code Online (Sandbox Code Playgroud)

groovy artifactory gradle jenkins jenkins-job-dsl

1
推荐指数
1
解决办法
1096
查看次数

Jenkins DSL Pipeline:从其管道中删除作业

我有一个 Jenkins 管道作业(除其他外)使用Job DSL plugin创建另一个 pipelineJob (以在之后清理所有内容) 。

pipeline {

    agent { label 'Deployment' }

    stages {
        stage('Clean working directory and Checkout') {
            steps {
                deleteDir()
                checkout scm
            }
        }

        // Complex logic omitted

        stage('Generate cleanup job') {
            steps {
                build job: 'cleanup-job-template',
                        parameters: [
                                string(name: 'REGION', value: "${REGION}"),
                                string(name: 'DEPLOYMENT_TYPE', value: "${DEPLOYMENT_TYPE}")
                        ]
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,我只需要构建这个新生成的作业一次,然后,如果构建成功,则应删除该作业。

pipeline {
   stages {
        stage('Cleanup afterwards') {
            // cleanup logic
        }
   }
    post { 
        success { 
            // delete this …
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-job-dsl jenkins-pipeline

1
推荐指数
1
解决办法
7483
查看次数

Jenkins使用DSL将git子模块添加到multibranchPipelineJob

我有一个DSL脚本来创建我的Jenkins管道作业。

String[] repos =
    ['xxx']    

for (int i = 0; i < repos.length; i++) {
    repoName = repos[i];    
    multibranchPipelineJob('PIPELINE-'+repoName) {
        branchSources {
            git {
                remote('git@github.com:yyy/'+repoName+'.git')
                credentialsId('112233445566')
            }
        }
        description ("""<p> <b>generate by DSL - DO NOT CHANGE Manually </b> <p>""")
        triggers {
            periodic(2)
        }
        orphanedItemStrategy {
            discardOldItems {
                numToKeep(0)
                daysToKeep(0)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我要添加其他行为 -高级子模块行为在此处输入图片说明

jenkins jenkins-job-dsl

0
推荐指数
1
解决办法
1601
查看次数