jenkins 如何在Bitbucket PR上“模拟”代码合并

3htmauhk  于 2023-10-17  发布在  Jenkins
关注(0)|答案(1)|浏览(156)

我们与Bitbucket和Jenkins合作。当pull request被创建时,一个web-hook会被触发来测试代码。然而,由于代码仍然没有合并,我只有功能分支代码克隆到Jenkins。在实际合并到主线分支之前,如何“模拟”合并并运行测试?是否可以只通过Bitbucket进行临时合并,而不通过Jenkins节点上的代码合并操作?

zhte4eai

zhte4eai1#

使用分支和Jenkins的主要方法是使用Multi Branch Pipline,第二种选择是使用自定义作业。让我们看看这两个选项:
在多分支管道中,你只需要设置你想要的配置,钩子和合并选项将由插件完成。
当您配置项目时,在 Behaviors 部分(discover options)中选择Discover pull requests from origin(从源站发现拉取请求)选项时,意味着仓库上的拉取请求将触发构建,您需要选择 Strategy,您需要的选项是:

合并pull request和当前目标分支版本号

发现每个pull请求一次,发现的修订版本对应于与目标分支的当前修订版本合并的结果
选择此选项意味着当创建拉取请求时,管道将检出您希望与合并目标的当前版本合并的分支的结果-这正是您希望用于测试的结果-可以在合并之前测试未来合并结果的模拟。

在第二个选项中,您使用的是由pull请求触发的常规或管道作业,并且您自己处理Git克隆,在这种情况下,git插件具有ad advance行为,允许您在克隆存储库时进行合并。
所以当你使用checkout git SCM的步骤时,会有一个Additional Behaviours部分,其中有一个名为 Merge before build 的选项:

构建前合并

这些选项允许您在生成之前执行到特定分支的合并。例如,您可以指定要构建的集成分支,并将其合并到master。在这种情况下,在每次更改集成时,Jenkins将执行与主分支的合并,如果合并成功,则尝试执行构建。如果选择了Git Push post-build操作,它可能会将合并推回远程存储库。
在管道作业中,此步骤如下所示:

checkout([$class: 'GitSCM', branches: [[name: 'PR_BRANCH']], 
         extensions: [[$class: 'PreBuildMerge', options: [mergeTarget: 'master']]], 
         userRemoteConfigs: [[credentialsId: 'GIT_CREDS', url: 'GIT_URL']]])

在UI中,它看起来像:

在这两种情况下,你会得到你想要的行为:可以在实际合并之前测试的未来合并的结果。

相关问题