maven - 詹金斯 kubernetes 管道 dsl 不读取容器定义
问题描述
我们在 jenkins 中配置了两个 Kubernetes 云
- kubernetes:这个运行所有与设置基础设施、构建 Spring Boot 应用程序及其 Docker 映像等相关的构建作业;这是我们的 devops 自动化应用程序集群
- apps-dev:这是我们所有应用程序的部署位置,因此它是我们的运行时集群,非生产环境
我正在尝试通过 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"
解决方案
我的 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:
容器丢失了
推荐阅读
- c# - How to Implement Multibinding with combox and button?
- openssl - RSA-OAEP 和 RSAES-OAEP 有什么区别?
- php - 如何通过服务帐户身份验证获取营业地点(和评论)
- apache - Apache Httpd 从源构建:致命错误:expat.h:没有这样的文件或目录
- jenkins - 添加自定义路径到 jenkins 节点的 sh 路径
- amazon-web-services - CloudWatch Insights 语法 - Sum() 字节
- swift - 从未出现在视图中的子类创建按钮
- python-3.x - Python:如何捕获 os.chdir FileNotFoundError 执行
- php - 从json获取每天的总和值
- excel - 如何在 txt 框 vba 中搜索值的问题?