簡體   English   中英

Jenkins Kube.netes pod 沒有指定container('name')時使用什么容器?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM