我有一个使用MultiScm来克隆2个git存储库的Jenkins作业.在轮询期间,我希望它忽略2个回购中的一个.我可以在配置中手动设置"轮询忽略某些路径中的提交"以使其工作(使用".*"作为排除路径).
我希望通过job-dsl启用它,因为它创建了工作; 但是,我找不到已更改的配置.作业的config.xml与"Polling ignores ..."设置相同或不相同.
有关如何通过job-dsl启用此功能的任何想法?
我正在将Jenkins的工作从手动配置转换为DSL,这意味着我正在尝试创建一个DSL脚本来创建今天的工作.
该作业当前已参数化,其中一个参数的类型为"用于复制工件的构建选择器".我可以在作业XML中看到它是copyartifact插件,特别是我需要使用BuildSelectorParameter.
然而,Jenkins DSL API没有使用此插件设置参数的指导 - 它只是帮助使用它来创建构建步骤,这不是我需要的.
我也无法在API中的参数选项下找到任何与此相关的内容.
我想在DSL种子脚本中包含一些内容,它将在生成的作业中创建一个与图像中的参数匹配的参数.
如果我需要使用配置块,那么欢迎使用任何提示,因为对于初学者来说,这方面的文档是没有用的.
我正在尝试使用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)
我想做同样的事情,但是这次我想把工作放在一个文件夹中!
这是我的工作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)
任何帮助将不胜感激。我有很多工作,我需要打开每个工作,然后单击该复选框很痛苦。
如何添加默认的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) 我试图利用退出代码在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)
使用以上脚本exit 1,构建失败。但我想让它不稳定,我不要想用markBuildUnstable(true)。我只想根据某些退出代码将构建标记为不稳定。我可以将退出代码手动设置为1,如下所示
此后,将构建标记为不稳定。
我正在寻找脚本来通过脚本而不是手动设置此字段,因为我有很多工作。
有人可以在建议方面帮助我吗?
我正在写一个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) 对于我的构建作业“ 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]
我搜索了一段时间并努力让它工作......没有成功。
非常感谢您的帮助,因为我是 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 中创建作业时出现的默认设置?
我有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