在 Jenkins 管道阶段隐式加载子模块
Implicitly loading submodules in Jenkins pipeline stages
有没有办法使用 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 生成器。
您还可以配置流水线 SCM 检出功能以使用 Jenkins 项目配置获取所有子模块,并保留 Jenkinsfile 简短。找到 Jenkins 管道 SCM 配置项 Additional Behaviors
并单击添加按钮,选择 Advanced sub-modules behaviors
,然后在出现的选项列表中,选中选项 Recursively update submodules
和选项 Use credentials from default remote of parent repository
.我附上了我的 Jenkins(版本 2.303.1)的屏幕截图,其中显示了已选中所需框的选项列表。
有没有办法使用 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 生成器。
您还可以配置流水线 SCM 检出功能以使用 Jenkins 项目配置获取所有子模块,并保留 Jenkinsfile 简短。找到 Jenkins 管道 SCM 配置项 Additional Behaviors
并单击添加按钮,选择 Advanced sub-modules behaviors
,然后在出现的选项列表中,选中选项 Recursively update submodules
和选项 Use credentials from default remote of parent repository
.我附上了我的 Jenkins(版本 2.303.1)的屏幕截图,其中显示了已选中所需框的选项列表。