[英]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.