标签: jenkins-job-dsl

使用Jenkins Job DSL为Git插件设置"Polling忽略某些路径中的提交"

我有一个使用MultiScm来克隆2个git存储库的Jenkins作业.在轮询期间,我希望它忽略2个回购中的一个.我可以在配置中手动设置"轮询忽略某些路径中的提交"以使其工作(使用".*"作为排除路径).

我希望通过job-dsl启用它,因为它创建了工作; 但是,我找不到已更改的配置.作业的config.xml与"Polling ignores ..."设置相同或不相同.

有关如何通过job-dsl启用此功能的任何想法?

jenkins-job-dsl

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

使用Jenkins DSL添加参数"用于复制工件的构建选择器"

我正在将Jenkins的工作从手动配置转换为DSL,这意味着我正在尝试创建一个DSL脚本来创建今天的工作.

该作业当前已参数化,其中一个参数的类型为"用于复制工件的构建选择器".我可以在作业XML中看到它是copyartifact插件,特别是我需要使用BuildSelectorParameter.

然而,Jenkins DSL API没有使用此插件设置参数的指导 - 它只是帮助使用它来创建构建步骤,这不是我需要的.

我也无法在API中的参数选项下找到任何与此相关的内容.

我想在DSL种子脚本中包含一些内容,它将在生成的作业中创建一个与图像中的参数匹配的参数.

参数

如果我需要使用配置块,那么欢迎使用任何提示,因为对于初学者来说,这方面的文档是没有用的.

groovy jenkins-plugins jenkins-job-dsl

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

如何将作业放在jenkins的文件夹中?

我正在尝试使用jenkins DSL脚本将作业放入文件夹中现在,我创建一个listView并将我使用的代码放入作业中

listView('MyJobsList') {
  jobs {
     map.each{
       name((it.key).trim())
     }
  }
   columns{
        status()
        weather()
        name()
        lastSuccess()
        lastFailure()
        lastDuration()
        buildButton()
    }
}
Run Code Online (Sandbox Code Playgroud)

我想做同样的事情,但是这次我想把工作放在一个文件夹中!

groovy jenkins jenkins-job-dsl jenkins-pipeline

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

jenkins如何为pipelineJob启用结帐轻量级?

这是我的工作DSL,它创建了管道作业,其中脚本来自scm本身。

pipelineJob ("${jobName}_deploy") {
  description("built by seed")

definition {
     cpsScm {
        scm {
            git {
                remote {
                    url('gitUrl')
                    credentials('user_creds')
                }
              branch('master')
            }
        }
        scriptPath "scripts/pipeline/jenkinsfile_deploy"
    }
 }
 }
Run Code Online (Sandbox Code Playgroud)

我需要轻型结帐时应自动检查。 在此处输入图片说明

任何帮助将不胜感激。我有很多工作,我需要打开每个工作,然后单击该复选框很痛苦。

jenkins jenkins-job-dsl jenkins-pipeline

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

除了Jenkins Job DSL中的命名分支外,还添加了抑制自动scm触发功能吗?

如何添加默认的Suppress自动scm触发,但命名分支-Job DSL中的开发除外?

我尝试了文档 https://jenkinsci.github.io/job-dsl-plugin/#path/multibranchPipelineJob。没多说。似乎不被支持。

因此,我想我唯一的方法是通过configure块将自定义属性直接添加到XML。

我想要的是:

    <strategy class="jenkins.branch.NamedExceptionsBranchPropertyStrategy">
      <defaultProperties class="java.util.Arrays$ArrayList">
        <a class="jenkins.branch.BranchProperty-array">
          <jenkins.branch.NoTriggerBranchProperty/>
        </a>
      </defaultProperties>
      <namedExceptions class="java.util.Arrays$ArrayList">
        <a class="jenkins.branch.NamedExceptionsBranchPropertyStrategy$Named-array">
          <jenkins.branch.NamedExceptionsBranchPropertyStrategy_-Named>
            <props class="empty-list"/>
            <name>development</name>
          </jenkins.branch.NamedExceptionsBranchPropertyStrategy_-Named>
        </a>
      </namedExceptions>
    </strategy>
Run Code Online (Sandbox Code Playgroud)

我尝试过的

multibranchPipelineJob(jobName) {    
    branchSources {
        git {
            remote(gitRepo)
            credentialsId(credentials)
            includes('*')
            configure {
             it / "sources  class='jenkins.branch.MultiBranchProject$BranchSourceList'" / 'data' / 'jenkins.branch.BranchSource' / "strategy class='jenkins.branch.DefaultBranchPropertyStrategy'" << name('development')               
            }        
        }           
    }
}
Run Code Online (Sandbox Code Playgroud)

这很有用,但会不断崩溃http://job-dsl.herokuapp.com/ 这不是很有用https://github.com/jenkinsci/job-dsl-plugin/blob/master/docs/The-Configure-块.md

我不知道我在做什么,文档,手册和教程根本没有帮助。

编辑:

现在我有了这个。它可以工作,有点...

我能够生成作业,但是当我尝试重新保存作业时,詹金斯抛出错误。输出XML有所不同。

multibranchPipelineJob(jobName) {

        configure { 
            it / sources(class: 'jenkins.branch.MultiBranchProject$BranchSourceList') / 'data' / 'jenkins.branch.BranchSource' << {
                source(class: …
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-job-dsl jenkins-groovy jenkins-pipeline

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

退出代码以设置构建不稳定-Jenkins DSL脚本

我试图利用退出代码job-> publishers-> postBuildScripts-> steps-> shell->高级选项中设置构建不稳定,以根据情况将构建不稳定。我有下面的脚本。

...
postBuildScripts {
                onlyIfBuildSucceeds(false)
                steps {
                  shell('echo "Before exit 1"\n' +
                        'if [ ! condition ]; then\n' +
                        'echo failed-condition\n' +
                        'exit 1\n' +
                        'fi'
                       )
                }
            }
...
Run Code Online (Sandbox Code Playgroud)

执行上面的DSL脚本后,我在jenkins中得到如下信息 在此处输入图片说明

使用以上脚本exit 1,构建失败。但我想让它不稳定,我不要想用markBuildUnstable(true)。我只想根据某些退出代码将构建标记为不稳定。我可以将退出代码手动设置为1,如下所示 在此处输入图片说明 此后,将构建标记为不稳定。

我正在寻找脚本来通过脚本而不是手动设置此字段,因为我有很多工作。

有人可以在建议方面帮助我吗?

jenkins jenkins-plugins jenkins-job-dsl

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

如何使用凭据参数设置git凭据

我正在写一个job-dsl种子作业。种子作业需要能够从github.com或从我公司的github企业服务器中生成。我想保留一份工作,而不是两份。

在每种情况下,我都希望詹金斯获得认证。为此,我将凭据硬编码到了脚本中。但是我对此不满意。我希望在种子作业上添加一个Credentials参数。

问题是,Creds参数似乎将ENV变量添加到包含USERID / PASSWORD的脚本中。 http://steve-jansen.github.io/blog/2014/12/16/parsing-jenkins-secrets-in-a-shell-script/

但是,git jobdsl似乎需要凭据ID,而不是USERID / PASSWORD。

如何解决这种僵局?

scm {
    git {
        remote {
            name('origin')
                url(repo)
                credentials(myCredential)
        }
        branch('master')
    }
}
Run Code Online (Sandbox Code Playgroud)

jenkins-job-dsl

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

Jenkins 作业 DSL:在作业步骤中使用 groovyScript 中的参数

对于我的构建作业“ generated-job-1”,我需要几个参数,这些参数是在通过 URL 触发构建(生成的 job-1)时传入的。

这是我的作业定义,其中包含 SeedJob DSL 中的参数:

job('generated-job-1'){
label ('master')
parameters{
    stringParam('DEPLOY_URI', 'https://192.168.200.176/hyperManager', 'Provide the URL where DeploymentManager can be accessed.')
    stringParam('REG_ID', '12', 'The id of the owner (Registration) of this deployment.')
}
steps {
    groovyCommand(readFileFromWorkspace('stepscript.groovy')){
        prop('name', 'value')
        prop('DEPLOY_URI', $DEPLOY_URI)
    }
}
Run Code Online (Sandbox Code Playgroud)

}

我尝试使用 DEPLOY_URI、$DEPLOY_URI 和 ${DEPLOY_URI} ,但构建失败并显示不同的错误消息,例如 No such property: DEPLOY_URI for class: javaposse.jobdsl.dsl.helpers.step.GroovyContext

或错误:(脚本,第 12 行)没有这样的属性:类的 $DEPLOY_URI:javaposse.jobdsl.dsl.helpers.step.GroovyContext

或错误:(脚本,第 12 行)没有方法签名:javaposse.jobdsl.dsl.helpers.step.GroovyContext.$() 适用于参数类型:(script$_run_closure1$_closure3$_closure4$_closure5) 值:[script $_run_closure1$_closure3$_closure4$_closure5@1a11cf0]

  1. 如何定义这些参数并将其传递给我的 step-script.groovy?
  2. 如何在其他步骤(例如 shell 或 batchFile)中使用这些参数?
  3. 如何访问我的 step-script.groovy 中的这些参数以处理给定的数据?

我搜索了一段时间并努力让它工作......没有成功。

非常感谢您的帮助,因为我是 Job DSL …

groovy jenkins jenkins-job-dsl

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

如何设置 Job DSL 创建的多分支作业的发现模式

我是詹金斯的新手,我正在尝试解决一些问题。

有没有办法通过 Groovy 添加分支源行为。这是使用 Jenkins 分析 SonarQube 中的 GitHub 项目。

我正在创建一个多分支管道,但似乎无法弄清楚如何添加以下行为。 行为

在 UI 中创建作业时,这些行为默认出现,但通过 Groovy 创建作业时不会出现。

我已将其定义为我的管道。知道如何添加这些其他参数吗?

multibranchPipelineJob('Foo') {
    displayName('Foo')
    description('Jenkins')
    branchSources {
        branchSource {
            source {
                github {
                    id('15')
                    repoOwner('12345')
                    repository('foo')
                    repositoryUrl('https://example.com')
                    configuredByUrl(true)
                    credentialsId('foo')

                traits {
                    gitBranchDiscovery()
                }
                    
                }
            }
        }
    }
    orphanedItemStrategy {
        discardOldItems {
            numToKeep(10)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试添加以下参数,但它会引发错误。

import jenkins.plugins.git.traits.*

def traits = []
traits.add(new TagDiscoveryTrait())
traits.add(new LocalBranchTrait())
gitSCMSource.setTraits(traits)
Run Code Online (Sandbox Code Playgroud)

有没有办法通过 Groovy 创建作业,但使用在 UI 中创建作业时出现的默认设置?

jenkins jenkins-job-dsl jenkins-groovy jenkins-pipeline

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

如何在 Jenkinsfile 声明式管道中动态更改阶段名称?

我有Jenkinsfile(脚本化管道)

def template1 = "spread_sshkeys"

node {
    // Clean before build
    stage('Checkout') {
        deleteDir()
        checkout scm
        sh "git submodule foreach --recursive git pull origin master";
    }
    stage("import template ${template1}") {
            script{
                sh "ls -las; cd jenkins-ci-examples; ls -las";
                jenkins_ci_examples.sub_module = load "jenkins-ci-examples/${template1}"
            }
    }
    stage("run template ${template1}") {
sh "echo ${jenkins_ci_examples.sub_module}";
    }
}
Run Code Online (Sandbox Code Playgroud)

想要转换为声明式之后

def template1 = "spread_sshkeys"

pipeline {
    agent any

    stages {
        stage ("Checkout") {
            steps {
                deleteDir()
                checkout scm
                sh "git submodule foreach --recursive git pull …
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-job-dsl jenkins-groovy jenkins-pipeline jenkins-declarative-pipeline

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