e
再扩展一下
这部分的重点是建立一个简单、有效和强大的CI系统,帮助开发人员一起工作,保持代码质量,并安全部署。还能有什么要求呢?在现实世界中,除了开发人员和用户之外,还有更多的手指参与其中。即使这不是真的,即使对开发人员来说,从CI系统中获得的价值也远不止上述内容。
Visibility and Understanding
除了最小的公司之外,所有的公司都不是完全由开发人员来决定开发什么。术语"利益相关者"经常被用来指开发团队内部和外部的人,他们可能对关注开发的进展有一些兴趣。为此,git和团队正在使用的任何项目管理/bug跟踪软件之间经常会有集成。
这方面的一个常见用途是在git拉动请求或提交中对跟踪系统有一些参考。这样一来,例如,当你在处理123号问题时,你可以将你的拉动请求命名为BUG-123。修复用户拷贝问题
,错误跟踪系统会注意到PR名称的第一章节,并在PR被合并时自动将问题移至Done
。
Notifications
当CI过程快速完成时,只看它执行并等待结果是很方便的。随着项目变得更加复杂,构建和测试代码的过程也变得更加复杂。这可能很快就会导致这样一种情况:生成构建结果需要足够长的时间,以至于开发人员可能想开始处理另一项任务。这反过来又导致了一个被遗忘的构建。
如果我们谈论的是合并可能影响另一个开发者的工作的PR,这就特别有问题,可能会给他们带来问题或延误。这也可能导致这样一种情况:你认为你已经部署了一些东西,但实际上还没有完成部署,这可能导致与队友和客户的错误沟通(例如,"继续,再试一次,这个错误应该被修复")。
对于这个问题有几种解决方案,从简单的通知到更复杂的流程,如果满足某些条件,就简单地合并传递代码。我们将把通知作为一个简单的解决方案来讨论,因为它是对团队工作流程干扰最小的一个。
默认情况下,GitHub Actions会在构建失败时发送一封邮件。这可以改变为无论构建状态如何都会发送通知,也可以配置为在GitHub网页界面上提醒你。很好。但如果我们想要更多呢?如果由于某种原因,这对我们的用例不适用呢。
有一些集成,例如与各种消息应用的集成,如Slack或Discord,来发送通知。这些集成仍然根据GitHub的逻辑来决定发送什么和何时发送。
Metrics
在上一节中,我们提到随着项目变得越来越复杂,它们的构建也越来越复杂,构建的时间也越来越长。这显然是不理想的。反馈回路越长,开发速度就越慢。
虽然有一些事情可以解决构建时间增加的问题,但对整体情况有一个更好的认识是很有用的。了解几个月前的构建时间和现在的构建时间,是非常有用的。进展是线性的还是突然跳跃的?知道是什么导致了构建时间的增加,对于帮助解决这个问题非常有用。如果构建时间在去年从5分钟线性增加到10分钟,也许我们可以预计再过几个月就会达到15分钟,我们就可以知道花时间加快CI过程有多大价值。
指标可以是自我报告的(也称为"推"指标,即每次构建都报告它花了多长时间),也可以是事后从API中获取数据(有时称为"拉"指标)。自我报告的风险在于,自我报告本身需要时间,可能会对 "所有构建的总时间 "产生重大影响。
这些数据可以被发送到一个时间序列数据库或另一种类型的档案。有很多云服务,你可以很容易地汇总这些指标,一个好的选择是Datadog。
Periodic tasks
在软件开发团队中经常有一些定期任务需要完成。其中有些可以用常用的工具自动完成,有些你需要自己来自动完成。
前一类包括检查软件包的安全漏洞等事情。一些工具已经可以为你做到这一点。其中一些工具甚至对某些类型的项目(如开放源代码)是免费的。GitHub提供了一个这样的工具,Dependabot。
需要考虑的建议的话。如果你的预算允许,使用一个已经完成工作的工具几乎总是比推出你自己的解决方案要好。例如,如果安全不是你的目标行业,那么使用Dependabot来检查安全漏洞,而不是制作你自己的工具。
那那些没有工具的任务呢?你也可以自己用GitHub Actions来实现这些任务的自动化。GitHub Actions 提供了一个预定的触发器,可以用来在特定时间执行任务。
Submitting exercises and getting the credits
这一部分的练习是通过提交系统提交的,就像前面几部分一样,但与0到7部分不同的是,提交到不同的 "课程实例"。请记住,你必须完成所有的练习才能通过这一部分!
你的解决方案在两个仓库中(pokedex和你自己的项目),由于你只能向提交系统返回一个仓库,请将另一个仓库的链接放在你填写的提交表格中
一旦你完成了练习并想获得学分,通过练习提交系统让我们知道你已经完成了课程。
注意,"在Moodle中完成的考试 "说明是指全栈开放课程的考试,在你从这部分获得学分之前必须完成。
注意你需要注册相应的课程部分以获得注册的学分,更多信息见这里。
你可以通过点击其中一个标志图标来下载完成这部分的证书。旗帜图标与证书的语言相对应。