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