AspNetCore&Coding持续集成

目录

对于现有很多持续集成工具来讲,功能越来越高级,使用了 Coding 有大半年时间,越发觉好用,特别是没钱续费服务器时,找到了新的羊毛。

 

众多持续集成工具

现在可用的持续集成工具繁多,各大云服务商都推出了持续集成,甚至是一定条件内都是免费使用。比如 Azure 提供每个月 1800 分钟的免费时长,支持单项目并行构建,GitHub的GitHubActions,华为云的 DevCloud,阿里云的云效,腾讯云与 Coding 合作的Coding.DevOps 等等。在此推荐一波 Coding: https://coding.net/

对于个人开发者而言,能够薅到羊毛,是最为实在的。最近,自己买的的两台羊毛机将到期,没钱续费,并且看到各大云服务商的提供的各种福利,干脆放弃自己搭建持续集成服务。特别是半年前开始接触到 Coding,看到其中许多 Azure 的影子,并且上手后发现很好用(关键是免费),当时只是想要提供的制品库功能用来保存 Docker 镜像(源于 TencentHub 服务的关闭)。

Coding提供5人以下免费,每周200次持续集成次数,每次限时30分钟,并行任务数1个。 090137039_1cbf5cb9-fdaf-4a54-98f9-7433b47b0e43

 

Coding 的使用

  1. 注册团队账号,填写团队域名,5 人以下团队免费。

090138776_936d6819-afd3-4050-b7bb-098ac1079401

  1. 建立项目,选择模板,提供了各种场景下需要的模板,都是在完整模板上依据功能精简的,不管选择哪个模板,都可以通过功能开关获取到所有功能。 

090140687_9a08d1aa-7ea8-4a46-9704-448155fd1f13 选择第二个项目模板,等会更改功能开关获取其他功能。填写项目名称,如 StarCity.Standard090142221_6c093b03-de44-494b-9758-069ff62d2557

  1. 配置功能开关,开放更多功能。左下角选择并点击项目设置,跳转到设置页面中。

090143965_8df12507-08b0-402a-af10-2e1488fb9b94 选择功能开关 Tab,开放更多功能,这些操作和 Azure 中的操作都是差不多的。本次只选择持续集成和制品库,其他关闭。090145519_4714006d-0b8f-49d8-b2e0-31de3053aa4d

项目搭建及基础配置

  1. 首先在代码仓库中新建项目,对于代码仓库的选择随意,我更倾向于使用 Gitee,当然也可直接使用 Coding 提供的代码仓库。此处新建了一个仓库方便对照: StarCity.Standard

  2. 新建 AspNetCore 并增加 Dockerfile,整理成常用的目录形式。增加 gitignore、Dockerfile。

090147682_72c2ff55-8892-4c4a-8d0d-53b260fcb11d 注意:此处 Dockerfile 中我使用腾讯云 Hub 中的一个源,方便构建镜像。 090148759_fa37fe71-fee5-4c26-a315-30b38e8fedef

  1. 新建制品库,用来保存持续集成后我们需要的目标产物。依据具体用途选择仓库及权限范围。

090150444_53710388-dcb6-499e-bdfb-29732e02d366

  1. 开始配置持续集成,点击构建计划,新建计划配置,开始进行持续集成基础配置工作。

090151800_af2dc9c5-732d-43f1-9e9b-ca1a7cba4a20 选择持续集成模板,Coding 提供了十几种模板类型,但是没得 AspNetCore 的模板,选择自定义模板,进行配置,当然,已有的这些模板可以点进去看看,学习其中的配置方式。090153685_c6370813-d4ad-4ad2-8a95-099ee294fa8f

配置自定义模板,选择 Gitee 中的代码仓库,注意需要按照提示配置 OAuth,此处主要是依赖 Jenkinsfile 的完成持续集成功能。通过在 Coding 中配置 Jenkinsfile 减少对项目内的倾入(我个人更喜欢这种方式)。

090155918_9a648d65-56cf-48b7-82a4-ca0b9fb95869 点击设置按钮,跳转配置 Jenkinsfile 内容。090157307_7dce8dce-3d54-44fe-96e0-270d2e09cb0d

 

配置 Jenkinsfile

对于配置 Jenkinsfile内容,Coding 提供了两种方式,直接图形化配置生成 Jenkinsfile 与文本化配置。两种方式可切换使用,内容保持中立。(我更推荐方式二,方式一不太中意)。

**方式一:**提供了图形化编辑器来构建流程配置。其中对于开始与检出两个步骤,直接忽视,从第三个自定义构建过程开始构建需要的流程。090158700_e54184db-b7f3-45fa-9f4a-9f41f37a81d1

点击自定义构建过程,右侧弹出具体配置弹框。本次使用指定 Dockerfile 来构建镜像。其中 Dockerfile 文件名称指定的是项目中 Dockerfile 的相对位置。Dockerfile 所在文件夹是针对于 Build Context 来讲,我们所期望的是针对于整个项目,因此直接使用.(点)。090200032_ba7bcacd-3782-474b-b448-9154b76f47ad

**方式二:**使用文本编辑器方式手动构建。此时先忘记方式一的配置,重新开始配置。

  1. 构建:通过使用环境变量填充具体参数,对于 env 需要的参数在环境变量中进行配置。

090201559_0743b1fd-bdfe-4e83-b19c-de4134ab079b 配置环境变量名称及默认值,其中有些如 PROJECT_NAME 等环境变量在该构建计划的系统参数中,无需配置。 090203154_6e1b9273-b4c5-4d5f-aa6d-afa0c3bfc25b

  1. 推送:通过将构建环节的产物推送到制品库中。增加 Stage,其中需要的环境变量已在构建中配置完毕,并且部分新增加的环境变量为系统变量,无需配置,推送环节也就搞定了。

090204341_0a7e564e-d99e-45b8-8e5f-0f7887998ade

  1. 保存并开始构建。

090205950_917257f9-a66a-420f-9dee-2b9f8d5c1b96 可点击当前构建记录,查看具体构建过程。如构建过程某环节出问题,则整个构建结束。090207163_38473979-4dbd-4dbc-b49f-793c9b69419e

构建全部通过,构建环节顺利完成,对于构建过程还可以增加更多,如单元测试步骤等,本次不添加。 090208831_c4b2158a-1c8c-493c-a2fd-e1d9b782acf8

  1. 查看构建产物,点击制品库,查看刚推送过来的镜像

090210142_ab1614ab-b325-40e9-be17-184301f3599a

  1. 在项目设置中,有些方便我们去调用外部服务的功能。如WebHook,在产物构建完毕,可以回调CD服务器,完成后续部署操作,很是方便,当然如果使用其他更高级的编排工具如K8S,则直接忽视吧。

090211781_793212e0-5070-4aa7-98d2-ccaf10144ae8

Coding提供了更多丰富的功能可待挖掘,如邮件通知等,这些都可配置齐全。

 

2020-08-09,望技术有成后能回来看见自己的脚步