jenkins - Groovy 如何在 Jenkins 共享库中检出源代码?
问题描述
我正在阅读 Jenkins 管道库的源代码,并看到了这个名为checkoutRepo.groovy
. 我可以看到 groovy 代码正在使用 git 来签出一个 repo,但是这是怎么发生的呢?逐行执行的语法是什么?它看起来很神秘,我以前从未见过它,更不用说逐行理解它的作用了。
checkoutRepo.groovy
def call(Map stageParams){
//Setting up variables
def branchName = stageParams["branchName"]
def appName = stageParams["appName"]
dir("${appName}") {
checkout(
[
$class: 'GitSCM',
branches: [[name: branchName]],
doGenerateSubmoduleConfigurations: false,
extensions: [],
gitTool: 'Default',
submoduleCfg: [],
userRemoteConfigs: [[credentialsId: 'PSCODE_CREDS', url: 'https://pscode.lioncloud.net/mcmessaging/' + appName + '.git']]
]
)
}
}
解决方案
您可能知道 Jenkins 架构是基于插件构建的,这些插件公开了可用于管道作业和共享库代码的关键字。
在这种情况下,checkout是一个内置关键字,用于通过配置的 scm 检出代码。
在您的示例代码中,选择的 SCM 配置是 Git,它由Git Plugin提供。
所以它实际上并不是纯 groovy 代码,而是 Jenkins 添加的一个关键字(方法)。
传递给checkout
代码的行是此管道步骤接受的参数。
此链接显示该步骤的所有相关文档checkout
,包括该步骤的所有可用参数。
推荐阅读
- java - 如何在android中使用opencv java对两张图像进行人脸识别
- java - 如何临时从演员那里取出动作并将其分配回去
- php - 用于在特定级别限制分层注释的数据库/代码设计?
- python - Python多处理代码比单线程运行慢
- excel - 为什么VBA双击突然停止工作?
- javascript - 无法在电子应用程序中使用 worker_threads
- elasticsearch - 如何在 Kubernetes 中使用弹性搜索节点附加存储卷?
- json - 使用列表映射解析 JSON
- php - 检查重复并仅在表中插入唯一项目,但这仅适用于第一项
- swift - 冒号(:) 和 eqaul 到运算符(==)之间的区别 - 通用 Where 子句:我希望 Array 有条件地符合协议