AspNetCore&Coding持续集成
目录
对于现有很多持续集成工具来讲,功能越来越高级,使用了 Coding 有大半年时间,越发觉好用,特别是没钱续费服务器时,找到了新的羊毛。
众多持续集成工具
现在可用的持续集成工具繁多,各大云服务商都推出了持续集成,甚至是一定条件内都是免费使用。比如 Azure 提供每个月 1800 分钟的免费时长,支持单项目并行构建,GitHub的GitHubActions,华为云的 DevCloud,阿里云的云效,腾讯云与 Coding 合作的Coding.DevOps 等等。在此推荐一波 Coding: https://coding.net/
对于个人开发者而言,能够薅到羊毛,是最为实在的。最近,自己买的的两台羊毛机将到期,没钱续费,并且看到各大云服务商的提供的各种福利,干脆放弃自己搭建持续集成服务。特别是半年前开始接触到 Coding,看到其中许多 Azure 的影子,并且上手后发现很好用(关键是免费),当时只是想要提供的制品库功能用来保存 Docker 镜像(源于 TencentHub 服务的关闭)。
Coding提供5人以下免费,每周200次持续集成次数,每次限时30分钟,并行任务数1个。
Coding 的使用
- 注册团队账号,填写团队域名,5 人以下团队免费。
- 建立项目,选择模板,提供了各种场景下需要的模板,都是在完整模板上依据功能精简的,不管选择哪个模板,都可以通过功能开关获取到所有功能。
选择第二个项目模板,等会更改功能开关获取其他功能。填写项目名称,如 StarCity.Standard。
- 配置功能开关,开放更多功能。左下角选择并点击项目设置,跳转到设置页面中。
选择功能开关 Tab,开放更多功能,这些操作和 Azure 中的操作都是差不多的。本次只选择持续集成和制品库,其他关闭。
项目搭建及基础配置
首先在代码仓库中新建项目,对于代码仓库的选择随意,我更倾向于使用 Gitee,当然也可直接使用 Coding 提供的代码仓库。此处新建了一个仓库方便对照: StarCity.Standard
新建 AspNetCore 并增加 Dockerfile,整理成常用的目录形式。增加 gitignore、Dockerfile。
注意:此处 Dockerfile 中我使用腾讯云 Hub 中的一个源,方便构建镜像。
- 新建制品库,用来保存持续集成后我们需要的目标产物。依据具体用途选择仓库及权限范围。
- 开始配置持续集成,点击构建计划,新建计划配置,开始进行持续集成基础配置工作。
选择持续集成模板,Coding 提供了十几种模板类型,但是没得 AspNetCore 的模板,选择自定义模板,进行配置,当然,已有的这些模板可以点进去看看,学习其中的配置方式。
配置自定义模板,选择 Gitee 中的代码仓库,注意需要按照提示配置 OAuth,此处主要是依赖 Jenkinsfile 的完成持续集成功能。通过在 Coding 中配置 Jenkinsfile 减少对项目内的倾入(我个人更喜欢这种方式)。
点击设置按钮,跳转配置 Jenkinsfile 内容。
配置 Jenkinsfile
对于配置 Jenkinsfile内容,Coding 提供了两种方式,直接图形化配置生成 Jenkinsfile 与文本化配置。两种方式可切换使用,内容保持中立。(我更推荐方式二,方式一不太中意)。
**方式一:**提供了图形化编辑器来构建流程配置。其中对于开始与检出两个步骤,直接忽视,从第三个自定义构建过程开始构建需要的流程。
点击自定义构建过程,右侧弹出具体配置弹框。本次使用指定 Dockerfile 来构建镜像。其中 Dockerfile 文件名称指定的是项目中 Dockerfile 的相对位置。Dockerfile 所在文件夹是针对于 Build Context 来讲,我们所期望的是针对于整个项目,因此直接使用.(点)。
**方式二:**使用文本编辑器方式手动构建。此时先忘记方式一的配置,重新开始配置。
- 构建:通过使用环境变量填充具体参数,对于 env 需要的参数在环境变量中进行配置。
配置环境变量名称及默认值,其中有些如 PROJECT_NAME 等环境变量在该构建计划的系统参数中,无需配置。
- 推送:通过将构建环节的产物推送到制品库中。增加 Stage,其中需要的环境变量已在构建中配置完毕,并且部分新增加的环境变量为系统变量,无需配置,推送环节也就搞定了。
- 保存并开始构建。
可点击当前构建记录,查看具体构建过程。如构建过程某环节出问题,则整个构建结束。
构建全部通过,构建环节顺利完成,对于构建过程还可以增加更多,如单元测试步骤等,本次不添加。
- 查看构建产物,点击制品库,查看刚推送过来的镜像
- 在项目设置中,有些方便我们去调用外部服务的功能。如WebHook,在产物构建完毕,可以回调CD服务器,完成后续部署操作,很是方便,当然如果使用其他更高级的编排工具如K8S,则直接忽视吧。
Coding提供了更多丰富的功能可待挖掘,如邮件通知等,这些都可配置齐全。
2020-08-09,望技术有成后能回来看见自己的脚步