jenkins - 在 Jenkinsfile 中签出 scm
问题描述
我在 Jenkinsfile 中有以下高级脚本管道:
stage('Generate') {
node {
checkout scm
}
parallel windows: {
node('windows') {
sh 'cmake . -Bbuild.windows -A x64'
}
},
macos: {
node('apple') {
sh '/usr/local/bin/cmake . -DPLATFORM="macos" -Bbuild.macos -GXcode'
}
},
ios: {
node('apple') {
sh '/usr/local/bin/cmake . -DPLATFORM="ios" -Bbuild.ios -GXcode'
}
}
}
node
请注意并行 windows/macos/ios 节点之前的顶部。这是否意味着checkout scm
在执行并行步骤之前,将在每个后续构建节点(Windows/Apple)上调用?换句话说,上面的脚本是否保证将在此构建的任何阶段涉及的每个节点上签出存储库?
非常感谢。
解决方案
第一步node
将分配任何构建代理并检查源代码。稍后,将分配额外的节点,我可以向你保证这cmake
将失败,因为它适用于空目录。
您可以使用stash
和unstash
复制构建(和后续阶段)所需的文件:
stage('Generate') {
node {
checkout scm
stash 'source'
}
parallel windows: {
node('windows') {
unstash 'source'
sh 'cmake . -Bbuild.windows -A x64'
}
},
macos: {
node('apple') {
unstash 'source'
sh '/usr/local/bin/cmake . -DPLATFORM="macos" -Bbuild.macos -GXcode'
}
},
ios: {
node('apple') {
unstash 'source'
sh '/usr/local/bin/cmake . -DPLATFORM="ios" -Bbuild.ios -GXcode'
}
}
}
推荐阅读
- python - Pandas:从 DataFrame 分配 MultiIndex 列
- c# - JetBrain Rider:在调试期间查看 List<>
- python - 如何从依赖解析器的输出中生成树?
- c - 在C中的链表中打印节点的十六进制内存地址
- javascript - 多个按钮,将使用 javascript 中的一个函数将一个文本字段更改为该按钮的值
- spring-webflux - WebFlux:如何为不同的 RestController 应用不同的 WebFilters 集
- node.js - 无法从 Azure Cosmos DB 上的 mongodb 获取所有文档
- spring-security - 使用 spring 响应式/webflux 安全性登录用户
- ruby - 将可枚举中的每个项目传递给另一个方法的简写
- html - 如何设置管理面板的内容区域占据剩余宽度