我可以通过将以下代码放入" Jenkinsfile"来创建管道。在我的存储库(称为repo1)中,通过Jenkins GUI创建一个新项目来轮询存储库。
pipeline {
agent {
docker {
image 'maven:3-alpine'
args '-v /root/.m2:/root/.m2'
}
}
stages {
stage('Build') {
steps {
sh 'mvn -B -DskipTests clean package'
}
}
stage('Test') {
steps {
sh 'mvn test'
}
post {
always {
junit 'target/surefire-reports/*.xml'
archiveArtifacts artifacts: 'target/*.jar', fingerprint: true
}
}
}
stage('Deploy') {
steps {
sh 'echo \'uploading artifacts to some repositories\''
}
}
}
}
但我有一个案例,我不允许通过Jenkins GUI创建新项目,但有一个预定义的作业,它在我提供的存储库中读取JobDSL文件。所以,我需要通过JobDSL创建相同的管道,但我无法找到所有事情的相应语法,例如,我找不到代理商' DSL命令。
这是我试图改变的DSL代码。
pipelineJob('the-same-pipeline') {
definition {
cps {
sandbox()
script("""
node {
stage('prepare') {
steps {
sh '''echo 'hello''''
}
}
}
""".stripIndent())
}
}
}
例如,我找不到代理商'命令。是否真的可以通过使用作业DSL获得确切的管道?
答案 0 :(得分:-1)
我找到了通过jobDSL创建管道项的方法。因此,以下jobDSL正在创建另一个只是管道的项目。
pipelineJob('my-actual-pipeline') {
definition {
cpsScmFlowDefinition {
scm {
gitSCM {
userRemoteConfigs {
userRemoteConfig {
credentialsId('')
name('')
refspec('')
url('https://github.com/muatik/jenkins-as-code-example')
}
}
branches {
branchSpec {
name('*/master')
}
}
browser {
gitWeb {
repoUrl('')
}
}
gitTool('')
doGenerateSubmoduleConfigurations(false)
}
}
scriptPath('Jenkinsfile')
lightweight(true)
}
}
}
您可以在此处找到Jenkinsfile
和我的测试版:https://github.com/muatik/jenkins-as-code-example