目录
介绍
为了运行质量检查,我们需要以某种方式从存储库运行代码。我们不能直接在存储库中运行代码,需要一些服务来自动读取代码并运行它。AWS CodeBuild是我们要走的路。AWS CodeBuild旨在构建给定代码并创建构建的项目。但是,在本手册中,我们不想详细介绍整个构件构建过程,但我们将使用AWS CodeBuild作为帮助程序服务,对创建或更新的每个拉取请求启动测试。
由于我们在这里使用GitHub作为质量检查的切入点,因此应该提到的是,GitHub为我们提供了自己的工具来进行质量检查,甚至构建整个管道。但是,在本分步指南中,我们将结合GitHub研究AWS CodeBuild的使用情况,以拓宽我们的CI/CD体验。
先决条件
您将需要:
- GitHub帐户
- AWS账户
- 获得实践经验😀的强烈愿望
代码概述
我们将使用以下存储库:aws-code-build-quality-learning
您需要创建/使用自己的存储库,下载 aws-code-build-quality-learning 或将 aws-code-build-quality-learning 分叉到您的个人GitHub账户。
在存储库中,有一个简单的应用程序,具有非常基本的示例功能。此外,还有AWS CodeBuild的运行命令指南- buildspec文件quality-check.yml。
让我们来看看quality-check.yml。
只不过是AWS CodeBuild自动执行质量检查的说明。如果您想了解有关构建规范配置的更多信息,请参阅 CodeBuild的构建规范参考
AWS CodeBuild配置
要创建构建项目,我们需要按照以下步骤操作:
打开AWS CodeBuild并推送Create project。
https://us-east-2.console.aws.amazon.com/codesuite/codebuild/start?region=us-east-2
项目名称:“aws-code-build-quality-learning”(如果你愿意,可以是你自己的名字)
通过OAuth连接是一种简单的方法,但由于未知原因,它可能不起作用。在这种情况下,您必须转到GitHub存储库设置并颁发个人访问令牌。
然后,选择存储库。您的GitHub帐户的所有现有仓库都将在下拉列表中列出。
下一步是重要的一步。我们需要检查报告构建状态,以便在拉取请求中查看构建状态。否则,质量检查过程不会显示在GitHub端的PR中。
我们还必须指定何时触发质量检查版本。
必须指定以下设置。这里不需要额外的解释。
现在我们需要引用我们已经了解的buildspec文件。
buildspecs/quality-check.yml 是源代码中quality-check.yml的路径。
已创建生成项目,但到目前为止尚未生成。
现在是我们提出拉取请求的时候了。
创建拉取请求以触发质量检查
创建新的功能分支:
git checkout -b feature-branch(如果分支已存在,则没有-b选项)
一个评论行可以帮助我们查看是否在PR更新时触发了质量检查。
在app.js中添加“//feature test change 1”注释
const express = require('express');
const app = express();
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.get('/api/v1/info', (req, res) => {
res.send({ application: 'sample-app', version: '1' });
});
app.post('/api/v1/getback', (req, res) => {
res.send({ ...req.body });
});
app.listen(80, () => console.log(`Listening on: 80`));
//feature test change 1
提交和推送:
git add .
git commit -m 'add a change to trigger quality check'
git push origin feature-branch
创建 PR
注意:
问题是我们可以在质量检查仍在运行时合并拉取请求。发生这种情况是因为我们没有设置分支保护。分支保护仅在企业GitHub订阅中可用。举例来说,我们将保持原样。
AWS CodeBuild控制台。正在等待构建完成...
⚠ 请注意,作为免费套餐的一部分,CodeBuild每月为我们提供 100分钟的免费执行时间。虽然我们的脚本执行时间不到1分钟,但值得小心,以防发生挂起并增加执行时间。在这种情况下,建议手动停止该过程。
结果是“所有检查均已通过”
结论
我们找到了另一种方法来构建和检查代码的质量。我们了解到,我们可以将GitHub与AWS CodeBuild结合使用来实现此目的。这为使用亚马逊的其余服务来部署我们的代码以及无限扩展我们的应用程序提供了可能性。
https://www.codeproject.com/Articles/5375697/Code-Quality-Check-with-AWS-CodeBuild