jenkins和github的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jenkins和github的区别相关的知识,希望对你有一定的参考价值。
参考技术A Github Jenkins SendGrid New Relic Searchify BlazeMeter mysql PostgreSQL MS SQL Server mongoDB redis cleardb RabbitMQ hadoop TREASUREDATA使用 Jenkins 和 Github 构建一次部署多个(特定的分支工作流程)
【中文标题】使用 Jenkins 和 Github 构建一次部署多个(特定的分支工作流程)【英文标题】:Build once deploy many with Jenkins and Github (specific branching workflow) 【发布时间】:2017-09-20 09:24:04 【问题描述】:我正在创建 Jenkins 管道以构建和部署我们的应用。 我想为登台和生产环境使用相同的构建(buld-once-deploy-many 方法)。
将功能分支合并到 staging
分支将构建一个用于暂存和生产的应用程序,但它只会将其部署到 staging
存储桶。
经过测试,开发人员最好将staging
分支合并到master
中,这将采用之前的staging
构建并将其部署到生产环境中。
另一种选择是拥有一个分支,开发人员将手动触发 Jenkins 上的另一项工作,将构建部署到生产环境。 我想避免开发人员进入 jenkins 并触发构建,因为他们中的大多数人觉得它很吓人,他们还需要通过一些讨厌的 *** 配置步骤才能访问 Jenkins 等。
这是一个不好的做法吗?您对如何实现这样的目标有任何建议吗?
谢谢
【问题讨论】:
您应该检查多分支管道。然后根据分支名称,您可以做出决定。 stage('build and package') when expression BRANCH_NAME ==~ /(master|staging|develop)/ steps //do something 【参考方案1】:这更像是一个 devops 问题而不是 Jenkins 问题,但这是我的看法......
我无法确定您是说要从 master 分支重新构建,还是只使用对 master 分支的提交来触发原始暂存工件的部署。所以我会同时解决这两个问题。
对于这种情况:
如果您在暂存分支中构建工件并对其进行测试。在测试中,一切看起来都是绿色的。因此,您将这些更改合并到另一个分支,重新构建并部署到生产环境。
问题:您能否100%确定 master 分支中没有其他内容与在 staging 中构建和测试的内容没有什么不同?
您正在冒着 jello 视图反模式的风险,因为未知和未经测试的更改可能会潜入您的生产工件。很难解决为什么它在登台时运行良好,但现在在生产中失败了。
对于第二种情况:
如果你说你不会从 master 分支重建,那么合并回 master 不会给你带来任何东西,只会触发一个新的构建,因为你永远不会从 Master 生成工件。
如果你打算这样做,我认为你可以提交到一个分支,然后标记一个打算投入生产的版本,然后触发标记。
无论哪种方式,这似乎都是一种奇怪的模式,并且很难在 Jenkins 中以自动化方式完成。不知何故,新触发的构建必须找到以前构建的工件并将其部署到生产中。
可能的解决方案:
有几种方法可以解决这个问题,但最简单的方法之一是构建一次并一直部署相同的工件,正如您提到的替代选项。但这可能需要在 Jenkins 中获得一些批准或额外触发。
如果您不希望开发人员不得不接触 Jenkins,那么更有可能的解决方案是在暂存环境中构建和运行您的单元测试和冒烟测试。然后,当开发人员想要将构建推广到生产环境时,他们会将其提交到 master 分支,在那里启动相同的构建,并再次执行测试,此外还有更高级的集成、功能和验收测试。如果不通过,则不会投入生产。
您在暂存阶段的初始测试可以为开发人员提供快速反馈,但不能作为仅在生产版本上运行的官方测试。
使用流水线脚本,您可以通过单个 Jenkinsfile 和单个多分支流水线作业轻松完成此任务,其中的阶段仅在分支模式匹配时运行。
stage ("Acceptance Testing" )
when branch "master"
echo "Do testing here"
【讨论】:
以上是关于jenkins和github的区别的主要内容,如果未能解决你的问题,请参考以下文章
GitHub Actions 与 Jenkins 等其他 CI 工具有啥区别?