使用管道作业初始化Jenkins

问题描述:

我正在用Dockerfile构建Jenkins,并且在Docker构建期间,我想让Jenkins预先配置一组作业。我发现这与乔布斯DSL的工作很好,工作是播种,但我还没有预先配置“管道”DSL。鉴于詹金斯的方向和使用Jenkisfile,管道等,我认为必须有一些办法可以让詹金斯自动与一组作业是用流水线的方式使用管道作业初始化Jenkins

例管道建成运行:

pipeline { 
     agent { 
      label 'cft' 
     } 
parameters { 
     string(name: 'StackName', defaultValue: 'cft-stack', description: 'The name to give the CFT stack.') 
     string(name: 'KeyName', defaultValue: 'ACCOUNT', description: 'The account key to use for encryption.') 
     string(name: 'VpcId', defaultValue: 'vpc-1234', description: 'The VPC to assign to the cluster resources.') 
     string(name: 'SubnetID', defaultValue: 'subnet-1234, subnet-6789', description: 'The subnet(s) to assign to the cluster resources.') 
    stages { 

     stage('Build') { 

      steps { 

       s3Download(file:'cft.yaml' 
        , bucket:'cft-resources' 
        , path:'cft.yaml' 
        , force:true) 

       cfnUpdate(stack:"${params.StackName}" 
        , file:"cft.yaml" 
        , params:[ 
        "SnapshotId=${params.SnapshotId}", 
        "KeyName=${params.KeyName}", 
        "VpcId=${params.VpcId}" 
        ] 
        , timeoutInMinutes: 20 
       ) 
      } 
     } 
    } 
    post { 
     failure { 
      echo 'FAILURE' 
      cfnDelete(stack:"${params.StackName}") 
     } 
    }  
} 

Dockerfile:

COPY ./groovy/*.groovy /usr/share/jenkins/ref/init.groovy.d/

管道的Groovy文件从可以执行的配置詹金斯的Groovy代码不同。您不能按照您尝试的方式添加管道。

您的选项包括

  • 副本任务定义XML文件(指向您的回购,作为管道应在Jenkinsfile在回购)
  • 使用Groovy创建一个作业并对其进行配置(不是真正可行的IMHO)
  • 使用JobDSL(再次,以XML为出发点)指定您的Jenkins作业。自动添加此示例可以在tknerr/jenkins-pipes-infra中找到。