[英]Jenkins Kubernetes pod what container is used when no container('name') is specified?
我已经从这里安装了 Jenkins https://charts.jenkins.io ,阅读 Kube.netes 插件页面https://plugins.jenkins.io/kube.netes/你可以定义为一个 Jenkins 文件
podTemplate(yaml: '''
apiVersion: v1
kind: Pod
spec:
containers:
- name: maven
image: maven:3.8.1-jdk-8
command:
- sleep
args:
- 99d
- name: golang
image: golang:1.16.5
command:
- sleep
args:
- 99d
''') {
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 -ntp clean install'
}
}
}
stage('Get a Golang project') {
git url: 'https://github.com/hashicorp/terraform-provider-google.git', branch: 'main'
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
'''
}
}
}
}
}
问题是,如果您将指令包含在容器 ('name') 中,指令将与该容器一起运行。 但是,如果您不指定容器,它就可以工作。 我假设选择了一个随机容器来运行 sh 命令? 例如:
stage('example stage') {
sh 'echo "hello world"'
}
谢谢
使用声明式管道,您可以声明 pod 定义并使用defaultContainer
设置默认值。 Jenkins Kube.netes 插件还将在所有运行 Jenkins 代理节点的 pod 定义中注入一个jnlp
容器,这是默认容器。
您可以使用 K8s 插件检查作业的控制台日志,集群请求和实例化的最终 Pod 定义是什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.