接下来的两篇文章,会结合前面 GitHub Action 所学,实作持续整合与持续布署两个部分。因为个人最近写比较多一点 ASP.NET Core 专案,所以会以此作为范例,给有兴趣的读者参考。
在开始动手之前,先简单说明 .NET Core 专案如何编译到布署。如下图所示,每次在布署网站之前,都必须经过:
在小型/不常变动专案的专案,开发人员会透过 Visual Studio 完成上列工作,但如果需要频繁更新,则需要透过自动化工具进行上列程序,而这次,我们想透过 GitHub Action 帮我们完成这些事项。使用 .NET Core 进行上述工作时有一个好处,即是透过 .NET Core CLI 方式执行,除了简化流程、可读性高,也容易维护。下表为简单的指令说明:
指令 | 说明 |
---|---|
dotnet restore | 恢复(下载与整合)所需要的 Nuget 套件 |
dotnet build | 建置专案 |
dotnet test | 执行测试专案 |
dotnet publish | 产生可发行的专案 |
你可以直接使用我 GitHub Repo 进行练习,或者你已经很熟这一个部分,可以直接略过这一章节
GitHub 与 Visual Studio 2019 已经有相当好的整合,所以你可以直接把专案放上 GitHub Repo
步骤 1. 开启 Visual Studio 2019,点选建立新专案
步骤 2. 找到 ASP.NET Core Web 应用程序 (MVC)
步骤 3. 输入专案名称,点选下一步
步骤 4. 选择 .NET Core 版本,并且点选建立
步骤 5. 右键点选方案,加入 > 新增专案
步骤 6. 输入测试进行搜寻,加入单元测试专案
步骤 7. 输入名称与支援版本,点选建立
步骤 8. 完成建立测试专案,开启 UnitTest1.cs,加入下列方法并存档
[DataTestMethod]
[DataRow(1, 1, 2)]
[DataRow(12, 30, 42)]
[DataRow(14, 1, 15)]
public void Test_Add(int a, int b, int expected)
{
var actual = a + b;
Assert.AreEqual(expected, actual);
}
完成後你的程序码应该如下:
步骤 9. 建立专案完成後,点选上方功能列中的 检视 > Team Explorer
步骤 10. 点选上方像 "插头" 的按钮,找到 GitHub > 建立 (需要登入)
步骤 11. 输入专案相关资讯,点选建立
步骤 12. 完成上传
步骤 13. 开启你的 GitHub Repo,可以发现专案已经上传
步骤 1. 点选刚刚建立好的 Repo > Action,选择 .NET
步骤 2. 专案已经帮我们建立好 YAML 档案,内容也相当容易阅读 (若你已经阅读完 GitHub Action YAML - 语意解析与指令说明)。仔细查看,你会发现只做了 checkout, dotnet restore, dotnet build, 与 dotnet test 这几个步骤。
注意:在前面专案我们使用的版本为 ASP.NET Core 3.1,若你仔细看 YAML 档案,我们使用是 5.0.X,建议修改一致
步骤 3. 点选右上角 Start Commit,储存 YAML 档案
步骤 4. 重新点选 Action 功能,即可以看见 GitHub Action 已经在执行 (因为你的预设 workflow 是有更新就执行)
步骤 5. 可以点进去看一下执行结果 (执行时间18秒,成功)
你可以点开 Test 部分,确认你的单元测试有执行成功
经过这篇文章,你大概知道如何规划 workflow 进行持续整合工作,配合前几个章节工具使用与语法学习,你应该有能力开始为自己的专案建立简单的持续整合流程。在後续的文章,我们将实作持续布署:将应用程序上传至 Azure App Service 与 IIS。
若喜欢我的文章,欢迎点 like, 分享与订阅。
<<: Ruby on Rails Controller 是干嘛的
前一章我们采用 Proxmox VE 所提供的现成范本档,方便快速的布建完成一部 Ubuntu 2...
Day28- 新手的Web系列JSON Injection 0x1 正文 JSON 介绍 JSON ...
前言 感谢我们一同坚持到第 30 天,本篇以「团队共生」为题,总括前述所谈,萃取我认为在团队共同成长...
即使HTTP基本身份验证确实使用Base64来编码用户ID和密码,HTTP仍以明文形式传输编码,并依...
今天进入到全新的篇章 Redux 了! Redux 是 React.js 中很常拿来作为状态管理使...