我已经从这里安装了Jenkins https://charts.jenkins.io,阅读Kubernetes插件页面https://plugins.jenkins.io/kubernetes/,您可以将Jenkinsfile定义为
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"'
}
谢谢
1条答案
按热度按时间zy1mlcev1#
通过声明性管道,您可以声明pod定义并使用
defaultContainer
设置默认值。Jenkins Kubernetes插件还将在运行Jenkins代理节点的所有pod定义中注入一个jnlp
容器,这是默认容器。您可以使用K8s插件在作业的控制台日志上检查集群请求和示例化的最终pod定义。