Jenkins流水线无法读取Kubernetes部署文件问题求助
解决Jenkins流水线找不到Kubernetes部署文件的问题
问题核心
流水线执行envsubst < Kubernetes/deployment.yml时提示文件不存在,本质是指定的文件路径与Jenkins工作区实际文件结构不匹配,或文件未被正确拉取到工作区。
排查与解决步骤
核对路径拼写与大小写
Linux环境严格区分路径和文件名的大小写,务必确认代码中Kubernetes/deployment.yml和仓库实际文件完全一致:- 检查目录名是
Kubernetes还是小写的kubernetes - 检查文件后缀是
.yml还是.yaml
- 检查目录名是
验证Jenkins工作区文件结构
在部署步骤前添加目录检查命令,直观确认工作区是否存在目标文件:script.sh "pwd && ls -R"查看输出,确认
Kubernetes目录及对应yml文件是否在工作区内。使用绝对路径引用文件
避免相对路径的歧义,改用Jenkins内置的WORKSPACE变量指定绝对路径:script.sh "envsubst < ${WORKSPACE}/Kubernetes/deployment.yml | kubectl apply -f -"检查代码拉取环节
确认Git拉取步骤是否完整:- 有没有进行全量拉取,不存在浅克隆或部分分支拉取的情况
.gitignore文件是否意外排除了Kubernetes目录,导致文件未被拉取到工作区
修改后的示例流水线代码
def kubeDeploy(String regName , String imageName , String imageVersion , String clusterCredentials , String url) { script.withKubeConfig([credentialsId: clusterCredentials, serverUrl: url]) { // 先验证文件存在性 script.sh "ls -l ${WORKSPACE}/Kubernetes/" script.sh "envsubst < ${WORKSPACE}/Kubernetes/deployment.yml | kubectl apply -f -" script.sh "envsubst < ${WORKSPACE}/Kubernetes/service.yml | kubectl apply -f -" } }
内容的提问来源于stack exchange,提问作者Emmanuel Oga
相关产品推荐
相关产品推荐

