首页 > 解决方案 > 詹金斯 kubernetes 管道 dsl 不读取容器定义

问题描述

我们在 jenkins 中配置了两个 Kubernetes 云

我正在尝试通过 maven 运行黄瓜测试,但由于我们不通过应用程序开发集群中的 alb 公开服务,我想将 maven 作业作为apps-dev集群上的 pod 运行。

我们在模板中添加了 pod 标签,但 jenkins 管道仅从 jnlp 容器开始。

pipeline {
    agent {
        kubernetes {
            cloud 'apps-dev'
            yamlFile '''
                apiVersion: v1
                kind: Pod
                metadata:
                  labels:
                    jenkins/label: jenkins-apps-dev-agent
                    namespace: jenkins-jobs
                  containers:     
                    - name: mavenjdk11
                      image: maven:3.8.2-adoptopenjdk-11
                      resources:
                        limits:
                          memory: "512Mi"
                          cpu: "500m"
                        requests:
                          memory: "256Mi"
                          cpu: "100m"
                      command:
                        - sleep
                      args:
                        - 99d 
                  volumes:
                    - name: sharedvolume
                      emptyDir: {}                             
            '''
        }
    }
    ...

和日志

Created Pod: foo jenkins-jobs/foo-foo-integration-foo-feature-tests-17-m-4hhpq
[Normal][jenkins-jobs/foo-foo-integration-foo-feature-tests-17-m-4hhpq][LoggingEnabled] Successfully enabled logging for pod
Still waiting to schedule task
‘foo-foo-integration-foo-feature-tests-17-m-4hhpq’ is offline
[Normal][jenkins-jobs/foo-foo-integration-foo-feature-tests-17-m-4hhpq][Scheduled] Successfully assigned jenkins-jobs/foo-foo-integration-foo-feature-tests-17-m-4hhpq to fargate-ip-176-24-3-48.ec2.internal
[Normal][jenkins-jobs/foo-foo-integration-foo-feature-tests-17-m-4hhpq][Pulling] Pulling image "jenkins/inbound-agent:4.3-4"
[Normal][jenkins-jobs/foo-foo-integration-foo-feature-tests-17-m-4hhpq][TaintManagerEviction] Cancelling deletion of Pod jenkins-jobs/foo-foo-integration-foo-feature-tests-17-m-4hhpq
[Normal][jenkins-jobs/foo-foo-integration-foo-feature-tests-17-m-4hhpq][Pulled] Successfully pulled image "jenkins/inbound-agent:4.3-4" in 15.29095263s
[Normal][jenkins-jobs/foo-foo-integration-foo-feature-tests-17-m-4hhpq][Created] Created container jnlp
[Normal][jenkins-jobs/foo-foo-integration-foo-feature-tests-17-m-4hhpq][Started] Started container jnlp
Agent foo-foo-integration-foo-feature-tests-17-m-4hhpq is provisioned from template foo_foo-integration_foo-feature-tests_17-mnscq-lz8wj
---
apiVersion: "v1"
kind: "Pod"
metadata:
  annotations:
    buildUrl: "https://jenkins.cloud.bar.com/job/foo/job/foo-integration/job/foo-feature-tests/17/"
    runUrl: "job/foo/job/foo-integration/job/foo-feature-tests/17/"
  labels:
    jenkins/label-digest: "baf69ff51703705e7e8252b6f5a54fc663dae21d"
    jenkins/label: "foo_foo-integration_foo-feature-tests_17-mnscq"
  name: "foo-foo-integration-foo-feature-tests-17-m-4hhpq"
spec:
  containers:
  - env:
    - name: "JENKINS_SECRET"
      value: "********"
    - name: "JENKINS_AGENT_NAME"
      value: "foo-foo-integration-foo-feature-tests-17-m-4hhpq"
    - name: "JENKINS_WEB_SOCKET"
      value: "true"
    - name: "JENKINS_NAME"
      value: "foo-foo-integration-foo-feature-tests-17-m-4hhpq"
    - name: "JENKINS_AGENT_WORKDIR"
      value: "/home/jenkins/agent"
    - name: "JENKINS_URL"
      value: "https://jenkins.cloud.bar.com/"
    image: "jenkins/inbound-agent:4.3-4"
    name: "jnlp"
    resources:
      limits: {}
      requests:
        memory: "256Mi"
        cpu: "100m"
    volumeMounts:
    - mountPath: "/home/jenkins/agent"
      name: "workspace-volume"
      readOnly: false
  nodeSelector:
    kubernetes.io/os: "linux"
  restartPolicy: "Never"
  volumes:
  - emptyDir:
      medium: ""
    name: "workspace-volume"

 

标签: mavenjenkinskubernetesjenkins-pipeline

解决方案


我的 yaml 有错误,应该是

apiVersion: v1
kind: Pod
metadata:
  labels:
    jenkins/label: jenkins-apps-dev-agent
    namespace: jenkins-jobs
spec:
  containers:     
    - name: mavenjdk11
      image: maven:3.8.2-adoptopenjdk-11
      resources:
        limits:
          memory: "512Mi"
          cpu: "500m"
        requests:
          memory: "256Mi"
          cpu: "100m"
      command:
        - sleep
      args:
        - 99d 
  volumes:
    - name: sharedvolume
      emptyDir: {} 

之前的spec:容器丢失了


推荐阅读