首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用“标签”或者在jenkinsfile中定义一个用于kubernetes-plugin的荚模板?

使用“标签”或者在jenkinsfile中定义一个用于kubernetes-plugin的荚模板?
EN

Stack Overflow用户
提问于 2020-04-23 11:16:33
回答 1查看 21.6K关注 0票数 0

总体而言

在为Jenkins使用kubernetes插件时,我试图使用标签,但我有点困惑。在我的pipeline中,我试图用不同的标签(代理)在parallel步骤中构建测试作业。

我已经在Jenkins配置中配置了带有pod模板和容器的插件,在这里我使用了与管道podTemplate定义的相同的设置。

问题

问题是,当我在第二阶段使用agent label时,会有jnpl映像运行,而不是我在配置someimage:latest中指向的映像。

stage 1中,我在管道中定义了吊舱,没有问题,所需的映像运行良好。

问题

我做错什么了?以下是我在Jenkins中的jenkinsfilekubernetes插件配置:

代码语言:javascript
复制
def podTemplate = """
apiVersion: v1
kind: Pod
spec:
  containers:
  - name: k8s
    image: someimage:latest
    command:
    - sleep
    args:
    - infinity
    volumeMounts:
      - name: workspace-volume
        mountPath: /home/jenkins/agent
    workingDir: "/home/jenkins/agent"
  volumes:
      - name: "workspace-volume"
        persistentVolumeClaim:
          claimName: "jenkins-worker-pvc"
          readOnly: false
"""
pipeline {
    agent none
    stages {
        stage("Parallel") {
            parallel {
                stage("1.k8s") {
                    agent {
                        kubernetes {
                            yaml podTemplate
                            defaultContainer 'k8s'
                        }
                    }
                    steps {
                        sh """
                            mvn -version
                        """
                    }
                }
                stage("2. k8s") {
                    agent { label 'k8s' }
                    steps {
                        sh """
                            mvn -version
                        """
                    }
                }
                stage("win") {
                    agent { label 'windows' }
                    steps {
                        bat "dir"
                    }
                }
            }
        }
    }
}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-23 14:03:07

您没有使用labelk8swindowslabelk8swindows指定图像。

您可以在文档中读到:

该插件为每个启动的代理创建一个Kubernetes Pod,由Docker映像定义以运行,并在每次构建后停止它。 代理是使用JNLP启动的,因此预计图像将自动连接到Jenkins主服务器。

您使用的是podTemplate,我建议设置container,如下所示:

代码语言:javascript
复制
podTemplate(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(POD_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
                    """
                }
            }
        }

    }
}

您可以阅读更多关于容器配置集装箱组支持的内容。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61385922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档