多分支流水线触发后Jenkins工作区存储及checkout scm检出对象咨询
刚好我对Jenkins多分支流水线这块摸得比较透,来给你详细解答下这两个问题:
问题1:当多分支流水线任务被触发时,Jenkins工作区中会存储哪些内容?
工作区里的内容取决于你的流水线配置和执行步骤,大致可以分成这几类:
- 初始空状态:默认情况下,Jenkins会为每次构建创建一个全新的工作区,初始时是空的,没有任何代码或文件。
- 检出的代码文件:当你执行
checkout scm指令后,会把触发这次流水线的对应代码分支/PR的所有文件拉取到工作区里——比如是某个feature分支,或者PR的源分支代码。 - Jenkins内部元数据:工作区里会生成一些Jenkins自己的隐藏文件/目录,比如
.jenkins文件夹,里面存着流水线运行的元数据、SCM相关的缓存信息,用来辅助后续步骤执行。 - 流水线执行产生的产物:如果你的流水线有构建、打包、下载依赖这类步骤,那么生成的构建产物(比如jar包、dist文件夹)、下载的依赖包(比如node_modules、maven仓库缓存)也会存在工作区里。
问题2:触发多分支流水线任务时,在Jenkinsfile中执行checkout scm指令,会检出Pull Request还是Master分支加Pull Request?
这个得分情况看,关键在于你多分支流水线的分支源配置:
- 默认配置(未开启合并选项):当PR触发流水线时,
checkout scm会直接检出PR的源分支代码——也就是你提交PR的那个分支的最新版本,不会和master/main分支合并。 - 开启合并选项时:如果你在多分支流水线的分支源设置里,勾选了类似「将拉取请求与当前目标分支版本合并」的选项,那么
checkout scm会检出的是PR分支合并到目标分支(比如master/main)之后的代码状态,相当于提前模拟合并后的情况,验证合并后是否能正常构建、测试。
内容的提问来源于stack exchange,提问作者mtess
相关产品推荐
相关产品推荐

