Jenkins DSL 管道问题
Jenkins DSL pipeline issue
所以我得到了这个 groovy 脚本,它应该为我的 DSL 作业播种,但我不确定在获取凭据并将它们分配给环境变量时我做错了什么:
for(job in product_base_jobs) {
pipelineJob("${job}") {
definition{
cpsScm {
scm {
git {
branches('staging')
remote {
credentials('jenkins-git')
url("git@gitty.local/${job}.git")
}
}
}
scriptPath("./Jenkinsfile")
}
triggers {
}
}
wrappers{
colorizeOutput()
timestamps()
credentialsBinding{
usernamePassword('ARTIFACTORY_USER','ARTIFACTORY_PASS','JenkinsArtifactoryCredentials')
usernamePassword('ACCESS_KEY','SECRET_KEY','Jenkins_S3')
}
}
environmentVariables{
env('ARTIFACTORY_USER',"${ARTIFACTORY_USER}")
env('ARTIFACTORY_PASS',"${ARTIFACTORY_PASS}")
env('ACCESS_KEY',"${ACCESS_KEY}")
env('SECRET_KEY',"${SECRET_KEY}")
}
}
}
我也试过用另一种方法失败:
credentialsBinding{
usernamePassword{
usernameVariable('ARTIFACTORY_USER')
passwordVariable('ARTIFACTORY_PASS')
credentialsId('JenkinsArtifactoryCredentials')
}
usernamePassword{
usernameVariable('ACCESS_KEY')
passwordVariable('SECRET_KEY')
credentialsId('Jenkins_S3')
}
}
environmentVariables{
env('ARTIFACTORY_USER',"${ARTIFACTORY_USER}")
env('ARTIFACTORY_PASS',"${ARTIFACTORY_PASS}")
env('ACCESS_KEY',"${ACCESS_KEY}")
env('SECRET_KEY',"${SECRET_KEY}")
}
}
这是我遇到的错误:
Processing DSL script jobs.groovy
Warning: (jobs.groovy, line 30) acceptMergeRequestOnSuccess is deprecated
Warning: (jobs.groovy, line 34) addNoteOnMergeRequest is deprecated
Warning: (jobs.groovy, line 35) addVoteOnMergeRequest is deprecated
Warning: (jobs.groovy, line 36) acceptMergeRequestOnSuccess is deprecated
ERROR: (jobs.groovy, line 50) No such property: ARTIFACTORY_USER for class: javaposse.jobdsl.dsl.helpers.toplevel.EnvironmentVariableContext
Finished: FAILURE
我正在处理的是错误还是只是错误的方法。通常我会使用 WitchCredentials 作为脚本时尚的一部分,但我想合并一些有很多共同点的工作。
管道作业类型不支持 wrappers
和 environmentVariables
。这些方法可用是 Job DSL 中的一个问题,请参阅 JENKINS-31832。
不要使用 Job DSL 添加凭据,而是使用 Jenkinsfile
中的管道代码来访问任何凭据。见 Credentials Binding:
node {
withCredentials([usernameColonPassword(credentialsId: 'mylogin', variable: 'USERPASS')]) {
sh '''
set +x
curl -u $USERPASS https://private.server/ > output
'''
}
}
所以我得到了这个 groovy 脚本,它应该为我的 DSL 作业播种,但我不确定在获取凭据并将它们分配给环境变量时我做错了什么:
for(job in product_base_jobs) {
pipelineJob("${job}") {
definition{
cpsScm {
scm {
git {
branches('staging')
remote {
credentials('jenkins-git')
url("git@gitty.local/${job}.git")
}
}
}
scriptPath("./Jenkinsfile")
}
triggers {
}
}
wrappers{
colorizeOutput()
timestamps()
credentialsBinding{
usernamePassword('ARTIFACTORY_USER','ARTIFACTORY_PASS','JenkinsArtifactoryCredentials')
usernamePassword('ACCESS_KEY','SECRET_KEY','Jenkins_S3')
}
}
environmentVariables{
env('ARTIFACTORY_USER',"${ARTIFACTORY_USER}")
env('ARTIFACTORY_PASS',"${ARTIFACTORY_PASS}")
env('ACCESS_KEY',"${ACCESS_KEY}")
env('SECRET_KEY',"${SECRET_KEY}")
}
}
}
我也试过用另一种方法失败:
credentialsBinding{
usernamePassword{
usernameVariable('ARTIFACTORY_USER')
passwordVariable('ARTIFACTORY_PASS')
credentialsId('JenkinsArtifactoryCredentials')
}
usernamePassword{
usernameVariable('ACCESS_KEY')
passwordVariable('SECRET_KEY')
credentialsId('Jenkins_S3')
}
}
environmentVariables{
env('ARTIFACTORY_USER',"${ARTIFACTORY_USER}")
env('ARTIFACTORY_PASS',"${ARTIFACTORY_PASS}")
env('ACCESS_KEY',"${ACCESS_KEY}")
env('SECRET_KEY',"${SECRET_KEY}")
}
}
这是我遇到的错误:
Processing DSL script jobs.groovy
Warning: (jobs.groovy, line 30) acceptMergeRequestOnSuccess is deprecated
Warning: (jobs.groovy, line 34) addNoteOnMergeRequest is deprecated
Warning: (jobs.groovy, line 35) addVoteOnMergeRequest is deprecated
Warning: (jobs.groovy, line 36) acceptMergeRequestOnSuccess is deprecated
ERROR: (jobs.groovy, line 50) No such property: ARTIFACTORY_USER for class: javaposse.jobdsl.dsl.helpers.toplevel.EnvironmentVariableContext
Finished: FAILURE
我正在处理的是错误还是只是错误的方法。通常我会使用 WitchCredentials 作为脚本时尚的一部分,但我想合并一些有很多共同点的工作。
管道作业类型不支持 wrappers
和 environmentVariables
。这些方法可用是 Job DSL 中的一个问题,请参阅 JENKINS-31832。
不要使用 Job DSL 添加凭据,而是使用 Jenkinsfile
中的管道代码来访问任何凭据。见 Credentials Binding:
node {
withCredentials([usernameColonPassword(credentialsId: 'mylogin', variable: 'USERPASS')]) {
sh '''
set +x
curl -u $USERPASS https://private.server/ > output
'''
}
}