为多个回购配置一个 Jenkinsfile 的最佳方法是什么?
What is the best way to configure one Jenkinsfile for many repos?
简短说明:
- 我们的 Git
中有很多回购协议
- 每个 repo 都有自己的 Jenkinsfile,在 Jenkins 有自己独立的 Job
- 所有 Jenkins 文件都在做 99% 相同的事情!
我们目前想要实现的目标:
- 为所有 repo 构建一个 Jenkinsfile
- 维护 repos 之间的分支
- 如果可以,请删除每个 repo 的当前 Jenkins 文件,并使用唯一的通用新文件。
- 具有多种使用和操作参数的能力,因此 Jenkins 文件不会受到任何其他 repo 配置的影响
目前的解决方案:
- 删除所有存储库中的所有 Jenkins 文件
- 在 Jenkins gui 网站中重新配置 Jenkinsfile PATH 以指向我们的新文件
- 在每个 repo 中放置一个配置 .yaml 文件,它将包含每个 repo 的所有相关信息(如键值)
- 因此,当每个 repo 被触发时,我们新的 Jenkinsfile 将加载配置文件并使用参数来执行与配置文件相关的所有阶段。
我很高兴听到你们的想法/例子/片段!它将对我有很大帮助!
此致
尼泊尔
(评论名誉不足,请见谅)
嗨@n1vgabay
如果您的 SCM 使用 Bitbucket,那么您可以试试这些:
- 在 Jenkins 中创建组织 Folder/Bitbucket 团队项目(从 Jenkins --> 新项目--> 组织文件夹或 Bitbucket team/Project)
- 更新配置以过滤您的 SCM 中项目下的所有回购(或正则表达式)。这会将所有存储库创建为单独的 MB 管道,并将其下的所有分支作为单独的作业。同样使用 Bitbucket Server Integration plugin,它会自动为所有回购创建 Webhooks 以根据事件(推送、提交、打开 PR 等)相应地触发作业
- 使用 Remote JenkinsFile provider plugin,您可以选择将 Jenkinsfile 放在另一个 Proj/repo 的其他地方,并从此配置中调用它们。
- 这个 Jenkinsfile 可以包含您需要的所有步骤,并且 运行 对于所有 运行 作为单个 MB 作业的分支都是相同的。
可以从 here 获得更多详细信息。
现在,如果你想使用单独的 jenkinsfiles,那么你可能不得不想出每个 repo 都有特定的 Jenkinsfiles,这可能会使它变得复杂,并且根文件夹级别的 Jenkinsfile 将不得不调用你的 Jenkinsfile repo/branch 所有回购和分支的级别。
希望这对您有所帮助! :)
简短说明:
- 我们的 Git 中有很多回购协议
- 每个 repo 都有自己的 Jenkinsfile,在 Jenkins 有自己独立的 Job
- 所有 Jenkins 文件都在做 99% 相同的事情!
我们目前想要实现的目标:
- 为所有 repo 构建一个 Jenkinsfile
- 维护 repos 之间的分支
- 如果可以,请删除每个 repo 的当前 Jenkins 文件,并使用唯一的通用新文件。
- 具有多种使用和操作参数的能力,因此 Jenkins 文件不会受到任何其他 repo 配置的影响
目前的解决方案:
- 删除所有存储库中的所有 Jenkins 文件
- 在 Jenkins gui 网站中重新配置 Jenkinsfile PATH 以指向我们的新文件
- 在每个 repo 中放置一个配置 .yaml 文件,它将包含每个 repo 的所有相关信息(如键值)
- 因此,当每个 repo 被触发时,我们新的 Jenkinsfile 将加载配置文件并使用参数来执行与配置文件相关的所有阶段。
我很高兴听到你们的想法/例子/片段!它将对我有很大帮助!
此致
尼泊尔
(评论名誉不足,请见谅)
嗨@n1vgabay 如果您的 SCM 使用 Bitbucket,那么您可以试试这些:
- 在 Jenkins 中创建组织 Folder/Bitbucket 团队项目(从 Jenkins --> 新项目--> 组织文件夹或 Bitbucket team/Project)
- 更新配置以过滤您的 SCM 中项目下的所有回购(或正则表达式)。这会将所有存储库创建为单独的 MB 管道,并将其下的所有分支作为单独的作业。同样使用 Bitbucket Server Integration plugin,它会自动为所有回购创建 Webhooks 以根据事件(推送、提交、打开 PR 等)相应地触发作业
- 使用 Remote JenkinsFile provider plugin,您可以选择将 Jenkinsfile 放在另一个 Proj/repo 的其他地方,并从此配置中调用它们。
- 这个 Jenkinsfile 可以包含您需要的所有步骤,并且 运行 对于所有 运行 作为单个 MB 作业的分支都是相同的。
可以从 here 获得更多详细信息。
现在,如果你想使用单独的 jenkinsfiles,那么你可能不得不想出每个 repo 都有特定的 Jenkinsfiles,这可能会使它变得复杂,并且根文件夹级别的 Jenkinsfile 将不得不调用你的 Jenkinsfile repo/branch 所有回购和分支的级别。
希望这对您有所帮助! :)