docker4dotnet #5 使用VSTS/TFS搭建基于容器的持续交付管道

开发 开发工具
今天这篇文章将对如何使用微软的全生命周期管理平台VSTS/TFS来构建基于容器的CI/CD管道来支持团队开发的场景。

在过去的几篇d4d系列中,我给大家介绍了如何使用docker来支持asp.net core的应用开发,打包的场景。Asp.net core的跨平台开发能力为.net开发人员提供了使用容器进行应用开发的能力,今天这篇文章将对如何使用微软的全生命周期管理平台VSTS/TFS来构建基于容器的CI/CD管道来支持团队开发的场景。

#1 前世今生 & 世界你好

#2 容器化主机

#3 在macOS上使用Visual Studio Code和Docker开发asp.net core和mysql应用

#4 使用Azure云存储构建高速 Docker registry

docker

Visual Studio Team Services/Team Foundation Server

VSTS/TFS是微软Visual Studio产品组提供给广大开发者的全生命周期管理平台,Visual Studio Team Service (VSTS)是构建在微软公有云Azure平台上的Saas架构的开发平台,为中小团队和跨地域的大型团队提供软件开发过程的端到端管理能力,这个平台对于5名以下开发团队的小团队完全免费(同时可以有任意数量的管理人员参与,VSTS通过区分stakeholder和developer两种角色,为stakeholder这些只需要管理过程而无需修改代码的管理人员提供了完全免费的访问许可)。Team Foundation Server是VSTS的企业版,可以由企业独立部署于私有云或者数据中心中,并提供与VSTS一致的功能体验。

基于容器的CI/CD

容器技术所解决的主要问题是环境的一致性和同一版本的应用在不同的环境中的迁移问题,虽然对单个开发人员也提供了更高效的开发模式,但容器的作用在团队开发中和管理开发/测试/预生产/生产环境中会体现得更有价值。从事软件开发的技术人员都知道,在开发过程中保持不同开发人员/测试人员使用统一的环境是一件非常困难的事情,很多过程中的问题都是环境不一致造成的。容器正是解决这一问题的有效方式。

为了能够构建基于容器的CI/CD,我们需要以下工具链:

基于容器的CI/CD

下图展示了以上工具链的关系和工作流程

基于容器的CI/CD工具链的关系和工作流程

下图中可以看到,要构建完整的发布工具,我们需要一个多级技术栈,Docker的容器化工具降低了***层环境和应用技术栈的复杂度,让我们的发布过程变得更简单。

Docker的容器化工具降低了***层环境和应用技术栈的复杂度

下面我们就来看一下如何配置这样一套基于容器的CI/CD环境

1. 创建容器化主机作为开发/测试/生产环境

关于如何在开发环境中创建容器化主机支持编码和调试,请参考

《#1 前世今生 & 世界你好》

关于如何在云环境中创建容器化主机支持测试和生产环境,请参考

《#2 容器化主机》

2. 在Linux服务器上配置TFS构建代理

关于如何配置Linux服务器上的构建代理,请参考

《用VSTS/TFS搭建iOS持续集成环境》

3. 将容器化主机连接到TFS

进入TFS后台,点击 服务 | 新建服务终结点 |Dcoker Host

将容器化主机连接到TFS

将容器化主机的 url,和~/.docker/machine/machines/{machine-name} 目录下的pem的文件内容按照以下关系拷贝到配置页面中。

重复以上过程,分别绑定用户测试和生产环境的容器化主机配置,创建以下docker host终结点

○ Dockerhost-test

○ Dockerhost-pro

4. 将docker hub账号连接到TFS

进入TFS后台,点击 服务 | 新建服务终结点 | Docker Registry

将docker hub账号连接到TFS

填写你的docker hub用户名,密码和邮件地址;如果使用私有的registry,请更新Docker Regsitry地址。

5. 配置CI定义

创建生成定义,并将默认代理队列指向对应在Linux服务器上构建代理队列

 配置CI定义

在 生成 步骤中分别添加以下构建任务

 配置CI定义

具体为

a. dotnet restore

b. dotnet build

c. dotnet publish

d. docker build

e. docker push

以下为docker build步骤的详细配置,注意这里我们使用$(Build.BuildNumber)这个环境变量作为容器镜像的tag,这样我们就可以使用统一的构建号来管理容器镜像的不同版本。

docker build步骤的详细配置

以下是docker push的详细配置,此步骤将把构建好的容器上传到docker hub并使用$(Build.BuildNumber)作为版本号tag。

docker push的详细配置

6. 创建CD发布管道

创建以下发布管道配置,分别指定测试环境和生产创建的部署步骤

创建CD发布管道

在每一个环境中,我们都执行以下步骤

○ Stop running container

○ Remove container

○ Run container

测试环境和生产环境分别使用不同的容器化主机连接(在第1-2步中创建的连接)。

7. 配置测试环境到生产环境的升级策略

以下配置要求生产环境的部署只有在测试环境部署成功的情况下才能执行

配置测试环境到生产环境的升级策略

以下配置要求生产环境的部署必须由特定的用户进行审批通过后才能执行

配置测试环境到生产环境的升级策略

至此,我们就完成了基于容器的CI/CD发布管道配置。

【本文为51CTO专栏作者“徐磊”的原创稿件,转载请通过作者微信公众号devopshub获取授权】

戳这里,看该作者更多好文

责任编辑:赵宁宁 来源: 51CTO专栏
相关推荐

2017-02-14 16:39:56

docker容器化主机

2017-03-01 08:56:28

VSTSTFSiOS

2017-02-14 19:57:27

docker云存储Azure

2017-02-14 15:51:16

docker开发调试

2017-03-01 10:34:12

2017-12-10 20:53:56

Docker持续交付容器

2017-08-18 08:27:27

Azure应用服务

2021-03-31 09:00:00

管道集成工具

2017-03-01 09:20:30

2017-02-27 18:04:22

容器软件交付

2017-10-19 09:47:55

容器化微服务集成

2022-06-13 07:02:02

Zadig平台自动化

2023-01-16 08:00:00

2021-07-23 10:17:17

网络攻击存储供应链

2016-01-07 10:29:36

MesosDocker持续交付

2017-02-27 18:28:45

持续交付部署

2016-02-15 09:37:14

Docker持续交付应用程序

2017-12-24 21:29:18

OpenShift持续交付集群

2021-06-18 09:00:00

云计算开发存储库

2023-10-19 07:33:41

KubeVelaapiserver
点赞
收藏

51CTO技术栈公众号