如何让Jenkins代理拉取脚本化流水线的代码仓库?
解决Jenkins脚本化流水线在Agent拉取代码仓库的问题
脚本化流水线默认会在Master节点拉取流水线脚本所在的仓库(因为要先加载执行脚本),所以Agent节点拿不到代码和Makefile。要让Agent也获取仓库,直接在Agent的执行块里显式执行checkout操作即可,具体方法如下:
直接复用任务配置的SCM信息
在脚本的node块(指定Agent的部分)里添加checkout scm命令,它会自动使用你在Jenkins任务中配置的SCM参数拉取代码到Agent工作目录:node('your-agent-label') { // 显式在Agent上拉取仓库代码 checkout scm // 现在可以正常调用Makefile sh 'make your-target' }自定义SCM配置(可选)
如果需要指定特定分支、凭据或者其他SCM参数,可以手动编写checkout的详细配置:node('your-agent-label') { checkout([ $class: 'GitSCM', branches: [[name: '*/develop']], // 指定分支 userRemoteConfigs: [[ url: 'https://your-repo-url.git', credentialsId: 'your-credential-id' // 配置凭据ID ]] ]) sh 'make build' }
另外你之前用的skipDefaultCheckout()是声明式流水线的语法,脚本化流水线本身就没有默认的Agent checkout行为,所以这个命令对你的场景无效。
内容的提问来源于stack exchange,提问作者Tom Mekken
相关产品推荐
相关产品推荐

