Docker最全教程之使用Tencent Hub来完成CI(九)
使用Tencent Hub来完成CI
关于Tencent Hub
Tencent Hub是腾讯出品的DevOps服务。主要提供多存储格式的版本管理,支持Docker Image、Binary、Helm Charts 等多种类型文件。同时提供 DevOps 工作流的编排引擎,并且支持编排 DevOps 工作流,以打造更强的持续集成与持续交付力,加快软件迭代发布速度。
相比Azure DevOps,Tencent Hub主要面对国内开发者,因此在CI这块,更容易水土相符。
使用Tencent Hub配置一个简单的CI流程
在开始之前,我们先得开通Tencent Hub 服务。这些前置条件我们就不再赘述了。
在本篇教程中,我们使用Tencent Hub工作流来自动拉取代码并且构建、推送镜像到容器服务镜像仓库,并且通过镜像触发器来自动触发服务更新。
主体配置流程
使用Tencent Hub的话,整个配置过程比较简单,主体配置流程如下所示:

创建Tencent Hub项目仓库
在开始之前,我们需要在Tencent Hub上创建一个项目仓库,如下图所示:

创建完成后如图所示:

至此,项目仓库创建完成。
注意:Tencent Hub项目仓库实质上是一个镜像仓库,可以存放我们构建的docker镜像。
代码库授权
仓库创建完毕,接下来我们需要进行代码库授权,以便工作流能够获取代码以及自动触发构建。首先,我们先点击设置界面,打开如下所示的界面:

如图所示,代码库授权支持github、gitlab、码云和工蜂,这里笔者选择了码云,用于演示。
创建容器服务镜像仓库
虽然我们已经创建Tencent Hub的镜像仓库,但是为了方便,笔者建议大家还创建腾讯云容器服务的镜像仓库,以便使用默认的触发器来触发服务更新。相比使用工作流来实现,更加稳定和易于维护。腾讯云容器服务镜像仓库界面如下所示:

创建之后,我们就可以获得完整的镜像仓库地址,如下图所示:

创建Tencent Hub工作流
刚才,我们已经创建了Tencent Hub项目仓库了,首先我们需要点击项目名称进入详细界面:

然后点击【工作流】选项卡打开工作流界面:

点击【新建】按钮,我们可以创建自己的工作流。
Tencent hub提供了很多工作流组件,基本上能够满足我们的需要,如下图所示:

创建一个简单的工作流
接下来,我们一起来创建一个简单的工作流,主要包括以下步骤:

在Tencent Hub上,工作流设计界面如下所示:

- 代码推送时触发工作流
首先,创建工作流时,我们需要进行如下所示的设置:

这里,我们勾选develop和master分支推送时触发工作流。
- 拉取代码构建镜像
这里,我们需要借助工作流组件 hub.tencentyun.com/tencenthub/thub_docker_builder 来完成进行过构建。

这里,我们通过YAML文件来查看具体的配置参考:

组件参数说明如下所示:

Tencent Hub的工作流组件均已开源,我们也可以直接查看源代码(有时候如果开发文档没有及时更新,照着文档配置可能会入坑),如下图所示:

注意:这里笔者追加了标签,使用到了分支名称。也就是develop分支的代码构建的镜像会打上develop-latest的标签,master类似,以便于服务部署时能够区别开来。
- 复制镜像到容器服务镜像仓库
镜像构建成功之后,我们需要将镜像复制到容器服务镜像仓库。这里特此说明一下,之所以添加此步骤,是因为通过容器服务的镜像仓库的触发器触发服务更新更稳定以及更易于维护。事实上,大家也可以通过工作流来完成服务的更新,但是相关参数的配置颇为麻烦,而且很容易配错。
这里,我们用到的组件为:hub.tencentyun.com/tencenthub/copy_image
组件说明如下所示:

配置参考如下所示:

- 完成后推送钉钉消息
镜像复制完成,我们希望能够在相关的开发组、运维组接收到消息。Tencent Hub这边也有成熟的轮子——hub.tencentyun.com/tencenthub/notice_dingding。具体如下所示:

相关的配置也比较简单,不过我们需要创建一个钉钉自定义机器人:


然后,我们就可以使用此工作流组件进行配置:

至此,整个工作流就配置完成了。当然,我们也可以在工作流的结束节点添加webhook通知,只是没法设置消息模板,如下所示:

至此,整个工作流就介绍完毕。大家也可以根据自己的需要来设计符合自己要求的工作流。
当代码提交时,就会自动触发构建,我们在工作流界面可以看到当前状态以及执行历史:

同时,还可以查看日志历史:

Tencent hub工作流我们就先介绍到这里。
其他配置
接下来,我们需要切到腾讯云的容器服务管理面板。
首先我们需要创建集群并且添加节点:

然后创建服务(我们可以基于镜像构建服务,也可以直接创建服务):

接下来,我们需要设置镜像触发器,如下所示:

注意:我们可以通过不同的标签触发不同的服务更新,比如develop代表开发环境,master代表正式环境。
此节内容我们在前面的教程已经讲述过,这里就不赘述了。整个构建过程,我们可以添加一些webhook来进行消息集成,方便开发团队知晓相关情况以及测试人员进行测试。消息集成这块,我们再通过后续的教程来分享我们团队的消息集成,大家可以关注我们的公众号“magiccodes”来查看全部教程和文章。
往期内容链接
Docker最全教程之使用Tencent Hub来完成CI(九)的更多相关文章
- Docker最全教程之使用TeamCity来完成内部CI、CD流程(十六)
本篇教程主要讲解基于容器服务搭建TeamCity服务,并且完成内部项目的CI流程配置.教程中也分享了一个简单的CI.CD流程,仅作探讨.不过由于篇幅有限,完整的DevOps,我们后续独立探讨. 为了降 ...
- Docker最全教程
摘自雪雁大佬的博客,地址:https://www.cnblogs.com/codelove/default.html 目录: Docker最全教程——从理论到实战(一) Docker最全教程——从理论 ...
- Docker最全教程之使用Node.js搭建团队技术文档站(二十三)
前言 各种编程语言均有其优势和生态,有兴趣的朋友完全可以涉猎多门语言.在平常的工作之中,也可以尝试选择相对适合的编程语言来完成相关的工作. 在团队技术文档站搭建这块,笔者尝试了许多框架,最终还是选择了 ...
- Docker最全教程——从理论到实战(七)
在本系列教程中,笔者希望将必要的知识点围绕理论.流程(工作流程).方法.实践来进行讲解,而不是单纯的为讲解知识点而进行讲解.也就是说,笔者希望能够让大家将理论.知识.思想和指导应用到工作的实际场景和实 ...
- Docker最全教程——从理论到实战(六)
托管到腾讯云容器服务 托管到腾讯云容器服务,我们的公众号“magiccodes”已经发布了相关的录屏教程,大家可以结合本篇教程一起查阅. 自建还是托管? 在开始之前,我们先来讨论一个问题——是自建 ...
- Docker最全教程——从理论到实战(五)
往期内容链接 Docker最全教程——从理论到实战(一) Docker最全教程——从理论到实战(二) Docker最全教程——从理论到实战(三) Docker最全教程——从理论到实战(四) 本篇教程持 ...
- Docker最全教程——从理论到实战(八)
在本系列教程中,笔者希望将必要的知识点围绕理论.流程(工作流程).方法.实践来进行讲解,而不是单纯的为讲解知识点而进行讲解.也就是说,笔者希望能够让大家将理论.知识.思想和指导应用到工作的实际场景和实 ...
- Docker最全教程——从理论到实战(九)
使用Tencent Hub来完成CI 关于Tencent Hub Tencent Hub是腾讯出品的DevOps服务.主要提供多存储格式的版本管理,支持Docker Image.Binary.Helm ...
- Docker最全教程——从理论到实战
Docker最全教程——从理论到实战(一) Docker最全教程——从理论到实战(二) Docker最全教程——从理论到实战(三) Docker最全教程——从理论到实战(四) Docker最全教程—— ...
随机推荐
- Selenium在定位的class含有空格的复合类的解决办法整理
1.class属性唯一但是有空格,选择空格两边唯一的哪一个 <div id="tempConfigTable" class="dtb-style-1 table-d ...
- MATLAB——画图(经典)
今天我发现一个非常奇怪的事情,如果你喜欢一样东西或者说是要干一件事,并不一定要把它所在领域的所有都做好, 只要做好你喜欢的就可以了,正如现在的我,突然想学习MATLAB(想画图)那么你只要把一些基础的 ...
- i春秋----Misc
好久没有写 博客今天更新多了一些 解题思路:题目做多了,自然能够想到是凯撒解密: 查看得到答案; flag{4c850c5b3b2756e67a91bad8e046dda} 2: 解题思路:是我想太多 ...
- java Dated Dateformat Calendar
Date类概述 类Date表示特定的瞬间,精确到毫秒.1000毫秒=1秒 时间的原点:公元1970年 一月一日,午夜0:00:00 对应的毫秒值就是0 注意:时间和日期的计算,必须依赖毫秒值 long ...
- Netbeans IDE 安装Emmet插件并解决Emmet插件无效果问题
Emmet是许多流行文本编辑器的插件,它极大地改进了HTML和CSS工作流程:在Netbeans IDE 下安装Emmet:1.打开Netbeans IDE编辑器,选择 工具—>插件选项,在 可 ...
- LeetCode算法题-Unique Morse Code Words(Java实现)
这是悦乐书的第318次更新,第339篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第186题(顺位题号是804).国际莫尔斯电码定义了一种标准编码,其中每个字母映射到一系 ...
- Adobe Photoshop CC 2019 for Mac v20.0.4 中文版安装教程
全新Adobe Photoshop CC 2019 mac特别版终于上线了,简称ps cc 2019,Adobe Photoshop CC 2019 for Mac v20.0.4 中文版安装教程分享 ...
- 防止系统锁屏-python、C++实现
一.背景 作为一个开发,我的电脑经常是一个礼拜不关机,甚至时间更久,不知道在其他人看来这是不是一个常规操作.在日常工作中,我们的电脑也是一直处于非锁屏状态,出于对个人工作成果的安全性保护,我们公司给每 ...
- 微软正式发布Chromium Edge开发预览版
目录 下载与注册 更多下载信息与订阅 导入Chrome部分数据 扩展安装 安装开发预览版是否会与Win10自带的Edge冲突? 一大早从朋友圈看到消息,微软正式发布Chromium Edge 开发预览 ...
- C# 数组比较--取得两个集合的交集,差集,并集的方法
方法关键字: 交集:Intersect 差集:Except 并集:Union 使用代码: , , , , }; , , , , }; var 交集 = arr1.Intersect(arr2).ToL ...