git - 在 Jenkins 流水线阶段隐式加载子模块
问题描述
有没有办法使用 Git 存储库修改 Jenkins 管道脚本以自动初始化子模块?
pipeline {
stages {
stage('Something A') {
steps {
sh 'git submodule update --init'
// stuff
}
}
stage('Something B') {
steps {
sh 'git submodule update --init'
// stuff
}
}
}
}
最好应该更新为类似
pipeline {
options { submodule auto }
stages {
stage('Something A') {
steps {
// stuff
}
}
stage('Something B') {
steps {
// stuff
}
}
}
}
有执行此操作的方法吗?我找不到任何东西。
解决方案
我假设您到目前为止一直在使用该git
步骤来克隆存储库。
但是对于高级功能(如子模块),有checkout
可用的步骤:
https ://jenkins.io/doc/pipeline/steps/workflow-scm-step/
结帐步骤提供了更新所有子模块的选项,甚至可以递归更新子模块,例如:
checkout([$class: 'GitSCM',
branches: [[name: '*/master']],
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'SubmoduleOption',
disableSubmodules: false,
parentCredentials: false,
recursiveSubmodules: false,
reference: '',
trackingSubmodules: false
]],
submoduleCfg: [],
userRemoteConfigs: [[url: 'ssh://myserver/myrepo']]
])
实际上启用子模块克隆的是SubmoduleOption
上面示例中所见的扩展。
由于语法 - 比方说 - 稍微复杂一点,我建议使用 snipped 生成器。
推荐阅读
- mfc - MFC 对话框显示 8 位缓冲区
- angular - afterAll TypeError 中引发错误:无法读取未定义的属性“ids”
- c++ - 使用模板参数为链表传递节点类型和数据类型
- javascript - ReactJS 管理大量的选择状态
- python - Python递归函数(扁平化(数据))
- html - 顶部导航栏项目背景不覆盖整个空间,它只覆盖文本
- duplicates - Redshift 删除重复记录但保持最新
- node.js - 使用 NestJs 连接到 SQL Server
- mongodb - MongoDB:写关注 w:[number>1] - 为什么?
- node.js - Kinesis Lambda 源转换:数据属性未经过 base64 编码