在Job DSL脚本中创建Jenkins管道

时间:2018-02-06 11:07:21

标签: jenkins continuous-integration continuous-deployment

我可以通过将以下代码放入" 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获得确切的管道?

1 个答案:

答案 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