问题描述
我在 kubernetes 集群上使用 jenkins,安装如下 helm chart,
helm install my-jenkins jenkinsci/jenkins -n jenkins \
--set controller.serviceType=LoadBalancer \
--set controller.servicePort=8888 \
--set persistence.existingClaim=jenkins-pvc \
--set persistence.accessMode=ReadWriteMany
也试过 --set agent.enabled=false 但也抓取了默认的 jnlp 图像
并尝试通过下面的管道覆盖 jnlp 代理,但它跳过了我的定义并提取了默认的 jenkins/inbound-agent:4.3-4
图像。
我的管道:
pipeline {
agent {
kubernetes {
cloud 'kubernetes'
label 'jnlp'
defaultContainer 'jnlp'
yaml """
apiVersion: v1
kind: Pod
Metadata:
labels:
label: agent
jenkins: slave
name: jnlp
spec:
containers:
- name: jnlp
image: nurhun/my_custom_jenkins_inboud_agent:v1.0
args: ['\$(JENKINS_SECRET)','\$(JENKINS_NAME)']
env:
- name: CONTAINER_ENV_VAR
value: jnlp
- name: JENKINS_AGENT_workdir
value: /home/jenkins/agent
- name: JENKINS_URL
value: http://my-jenkins.jenkins.svc.cluster.local:8888/
- name: "JENKINS_TUNNEL"
value: "my-jenkins-agent.jenkins.svc.cluster.local:50000"
volumeMounts:
- mountPath: "/home/jenkins/agent"
name: "workspace-volume"
readOnly: false
- name: jenkins-docker-cfg
mountPath: /var/run/docker.sock
volumes:
- name: jenkins-docker-cfg
hostPath:
path: /var/run/docker.sock
- emptyDir:
medium: ""
name: "workspace-volume"
"""
}
}
stages {
stage('Build') {
agent {
kubernetes {
label 'jnlp'
defaultContainer 'jnlp'
}
}
steps {
sh "docker build . -t custom_image:${IMAGE_TAG}"
}
}
}
}
我也尝试将 Defaults Provider Template Name
设置如下,但仍然不起作用。
有什么想法吗?
解决方法
我会尝试像这样指定您要使用的容器:
stages {
stage('Build') {
steps {
container('jnlp'){
sh "docker build . -t custom_image:${IMAGE_TAG}"
}
}
}
}