【问题标题】:Creating Jenkins Pipeline inside Job DSL script在 Job DSL 脚本中创建 Jenkins Pipeline
【发布时间】:2018-02-06 11:07:21
【问题描述】:

我可以通过将以下代码放入我的存储库(称为 repo1)中的“Jenkinsfile”中并通过 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 创建相同的管道,但是我找不到所有东西的相应语法,例如,我找不到 'agent' DSL 命令。

这是我试图更改的作业 DSL 代码。

pipelineJob('the-same-pipeline') {
  definition {
    cps {
      sandbox()
      script("""

        node {

          stage('prepare') {
              steps {
                  sh '''echo 'hello''''
              }
          }
        }
      """.stripIndent())      
    }
  }
}

例如,我找不到“代理”命令。使用job DSL真的可以得到准确的流水线吗?

【问题讨论】:

    标签: jenkins continuous-integration continuous-deployment


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-22
      • 1970-01-01
      • 2017-12-17
      • 1970-01-01
      • 2018-08-10
      • 2016-02-20
      • 2020-02-06
      相关资源
      最近更新 更多