总体介绍
我尝试在Jenkins中使用kubernetes-plugin时使用label,但我有点困惑。在我的pipeline
bellow中,我试图使用不同的标签(代理)在parallel
步骤中构建测试作业。
我已经在我的Jenkins配置中使用pod模板和容器配置了插件,在那里我使用了与管道podTemplate
中定义的相同的设置。
问题
问题是,当我在第二阶段使用agent label
时,运行的是jnpl镜像,而不是我在配置someimage:latest
中指向的镜像。
在stage 1
中,我在管道中定义了pod,没有问题,所需的映像运行良好。
提问
我做错了什么?* 以下是我在Jenkins中的jenkinsfile
和kubernetes-plugin的配置:
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"
}
}
}
}
}
}
1条答案
按热度按时间px9o7tmv1#
您没有为
stage
指定label
k8s
和windows
的映像。你可以在docs中读到:
该插件为每个启动的代理创建一个Kubernetes Pod,由Docker镜像定义运行,并在每次构建后停止它。
代理是使用JNLP启动的,因此预计镜像会自动连接到Jenkins主服务器。
您正在使用
podTemplate
,我建议设置container
,这可能看起来像下面这样:您可以阅读有关容器配置和容器组支持的更多信息