如何使用Jenkins kubernetes插件模板化Pod定义?

时间:2019-04-02 10:13:24

标签: jenkins kubernetes

我正在使用Jenkins kubernetes plugin运行管道构建:

pipeline {
  agent {
    kubernetes {
      label 'kind'
      defaultContainer 'jnlp'
      yaml """
apiVersion: v1
kind: Pod
metadata:
  labels:
    name: dind
... 

我想用一个0到5之间的整数对yaml的特定字段进行模板化,并以循环方式旋转(即,第一个内部版本使用0进行模板化,第二个内部版本使用1进行模板化,等等,然后再次返回0) 4)之后。

我该如何实现?

1 个答案:

答案 0 :(得分:1)

您可以使用podTemplates,下一个代码来自https://github.com/jenkinsci/kubernetes-plugin,可以使用变量准备所需的任何类型的pod。 如果这不是您所需要的,是否可以提供您要尝试做的事的例子?

def label = "mypod-${UUID.randomUUID().toString()}"
podTemplate(label: label, containers: [
  containerTemplate(name: 'maven', image: 'maven:3.3.9-jdk-8-alpine', ttyEnabled: true, command: 'cat'),
  containerTemplate(name: 'golang', image: 'golang:1.8.0', ttyEnabled: true, command: 'cat')
]) {

node(label) {
    stage('Get a Maven project') {
        git 'https://github.com/jenkinsci/kubernetes-plugin.git'
        container('maven') {
            stage('Build a Maven project') {
                sh 'mvn -B clean install'
            }
        }
    }

    stage('Get a Golang project') {
        git url: 'https://github.com/hashicorp/terraform.git'
        container('golang') {
            stage('Build a Go project') {
                sh """
                mkdir -p /go/src/github.com/hashicorp
                ln -s `pwd` /go/src/github.com/hashicorp/terraform
                cd /go/src/github.com/hashicorp/terraform && make core-dev
                """
            }
        }
    }

}

}