GitHub Action 实作持续整合 - 以 ASP.NET Core 专案为例

接下来的两篇文章,会结合前面 GitHub Action 所学,实作持续整合持续布署两个部分。因为个人最近写比较多一点 ASP.NET Core 专案,所以会以此作为范例,给有兴趣的读者参考。

.NET Core 持续整合流程

在开始动手之前,先简单说明 .NET Core 专案如何编译到布署。如下图所示,每次在布署网站之前,都必须经过:

  1. Restore: 将参考的套件下载下来
  2. Build: 建置专案
  3. Test: 执行测试
  4. Publish: 发布可执行档案/网站
  5. Deploy: 布署至站台

https://ithelp.ithome.com.tw/upload/images/20210918/200914944b1v7qCPHe.png

在小型/不常变动专案的专案,开发人员会透过 Visual Studio 完成上列工作,但如果需要频繁更新,则需要透过自动化工具进行上列程序,而这次,我们想透过 GitHub Action 帮我们完成这些事项。使用 .NET Core 进行上述工作时有一个好处,即是透过 .NET Core CLI 方式执行,除了简化流程、可读性高,也容易维护。下表为简单的指令说明:

指令 说明
dotnet restore 恢复(下载与整合)所需要的 Nuget 套件
dotnet build 建置专案
dotnet test 执行测试专案
dotnet publish 产生可发行的专案

前置作业 - 透过 Visual Studio 2019 建立 ASP.NET Core MVC/MS Test 专案

你可以直接使用我 GitHub Repo 进行练习,或者你已经很熟这一个部分,可以直接略过这一章节

GitHub 与 Visual Studio 2019 已经有相当好的整合,所以你可以直接把专案放上 GitHub Repo

步骤 1. 开启 Visual Studio 2019,点选建立新专案
https://ithelp.ithome.com.tw/upload/images/20210915/20091494EVj4okd76c.png

步骤 2. 找到 ASP.NET Core Web 应用程序 (MVC)
https://ithelp.ithome.com.tw/upload/images/20210915/200914940etSxjimWq.png

步骤 3. 输入专案名称,点选下一步
https://ithelp.ithome.com.tw/upload/images/20210915/20091494ae9zpdrv9Y.png

步骤 4. 选择 .NET Core 版本,并且点选建立
https://ithelp.ithome.com.tw/upload/images/20210915/20091494XRwPH5kjcJ.png

步骤 5. 右键点选方案,加入 > 新增专案
https://ithelp.ithome.com.tw/upload/images/20210915/20091494vIMfeU6V99.png

步骤 6. 输入测试进行搜寻,加入单元测试专案
https://ithelp.ithome.com.tw/upload/images/20210915/200914947s0GhQzDJW.png

步骤 7. 输入名称与支援版本,点选建立
https://ithelp.ithome.com.tw/upload/images/20210915/20091494ewPiZOPGOv.png

https://ithelp.ithome.com.tw/upload/images/20210915/20091494T2AEnGhslp.png

步骤 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);
}

完成後你的程序码应该如下:
https://ithelp.ithome.com.tw/upload/images/20210915/20091494gX3SezEn7J.png

步骤 9. 建立专案完成後,点选上方功能列中的 检视 > Team Explorer
https://ithelp.ithome.com.tw/upload/images/20210915/20091494D4G0nDHdKg.png

步骤 10. 点选上方像 "插头" 的按钮,找到 GitHub > 建立 (需要登入)
https://ithelp.ithome.com.tw/upload/images/20210915/20091494qT9dvCO4s4.png

步骤 11. 输入专案相关资讯,点选建立
https://ithelp.ithome.com.tw/upload/images/20210915/20091494m5YSfQSRQx.png

步骤 12. 完成上传
https://ithelp.ithome.com.tw/upload/images/20210915/20091494J8z3lGbsca.png

步骤 13. 开启你的 GitHub Repo,可以发现专案已经上传
https://ithelp.ithome.com.tw/upload/images/20210915/200914946TKQ9tYr01.png


建立 GitHub Action workflow for .NET Core

步骤 1. 点选刚刚建立好的 Repo > Action,选择 .NET
https://ithelp.ithome.com.tw/upload/images/20210915/200914941gk0jhDNSe.png

步骤 2. 专案已经帮我们建立好 YAML 档案,内容也相当容易阅读 (若你已经阅读完 GitHub Action YAML - 语意解析与指令说明)。仔细查看,你会发现只做了 checkout, dotnet restore, dotnet build, 与 dotnet test 这几个步骤。

注意:在前面专案我们使用的版本为 ASP.NET Core 3.1,若你仔细看 YAML 档案,我们使用是 5.0.X,建议修改一致

https://ithelp.ithome.com.tw/upload/images/20210915/20091494saeZmAWaSC.png

步骤 3. 点选右上角 Start Commit,储存 YAML 档案
https://ithelp.ithome.com.tw/upload/images/20210915/20091494OEU4uNTz1i.png

步骤 4. 重新点选 Action 功能,即可以看见 GitHub Action 已经在执行 (因为你的预设 workflow 是有更新就执行)
https://ithelp.ithome.com.tw/upload/images/20210915/2009149454Ho1Jd8NN.png

步骤 5. 可以点进去看一下执行结果 (执行时间18秒,成功)
https://ithelp.ithome.com.tw/upload/images/20210915/20091494nZNsKcgB7q.png

你可以点开 Test 部分,确认你的单元测试有执行成功
https://ithelp.ithome.com.tw/upload/images/20210915/20091494t0QAGUycQu.png


经过这篇文章,你大概知道如何规划 workflow 进行持续整合工作,配合前几个章节工具使用与语法学习,你应该有能力开始为自己的专案建立简单的持续整合流程。在後续的文章,我们将实作持续布署:将应用程序上传至 Azure App Service 与 IIS。

若喜欢我的文章,欢迎点 like, 分享与订阅。


<<:  Ruby on Rails Controller 是干嘛的

>>:  【Day1】: STM32前言

Proxmox VE 安装容器:Rocky Linux 8.4 及其它应用 (WordPress, Nextcloud, Odoo)

前一章我们采用 Proxmox VE 所提供的现成范本档,方便快速的布建完成一部 Ubuntu 2...

[Day28]- 新手的Web系列JSON Injection 0x1

Day28- 新手的Web系列JSON Injection 0x1 正文 JSON 介绍 JSON ...

团队共生

前言 感谢我们一同坚持到第 30 天,本篇以「团队共生」为题,总括前述所谈,萃取我认为在团队共同成长...

Base64

即使HTTP基本身份验证确实使用Base64来编码用户ID和密码,HTTP仍以明文形式传输编码,并依...

[ Day 22 ] React 中的 State 管理 - Redux

今天进入到全新的篇章 Redux 了! Redux 是 React.js 中很常拿来作为状态管理使...