在过去的几篇d4d系列中,我给你们介绍了如何使用docker来支持asp.net core的应用开发,打包的场景。Asp.net core的跨平台开发能力为.net开发人员提供了使用容器进行应用开发的能力,今天这篇文章将对如何使用微软的全生命周期管理平台VSTS/TFS来构建基于容器的CI/CD管道来支持团队开发的场景。mysql
#1 前世此生 & 世界你好
#2 容器化主机
#3 在macOS上使用Visual Studio Code和Docker开发asp.net core和mysql应用
#4 使用Azure云存储构建高速 Docker registryios
VSTS/TFS是微软Visual Studio产品组提供给广大开发者的全生命周期管理平台,Visual Studio Team Service (VSTS)是构建在微软公有云Azure平台上的Saas架构的开发平台,为中小团队和跨地域的大型团队提供软件开发过程的端到端管理能力,这个平台对于5名如下开发团队的小团队彻底免费(同时能够有任意数量的管理人员参与,VSTS经过区分stakeholder和developer两种角色,为stakeholder这些只须要管理过程而无需修改代码的管理人员提供了彻底免费的访问许可)。Team Foundation Server是VSTS的企业版,能够由企业独立部署于私有云或者数据中心中,并提供与VSTS一致的功能体验。sql
关于VSTS和TFS的功能介绍,请参考本博客或者公众号中的相关文章,连接以下:docker
http://devopshub.cn/tag/vsts/macos
基于容器的CI/CD服务器
容器技术所解决的主要问题是环境的一致性和同一版本的应用在不一样的环境中的迁移问题,虽然对单个开发人员也提供了更高效的开发模式,但容器的做用在团队开发中和管理开发/测试/预生产/生产环境中会体现得更有价值。从事软件开发的技术人员都知道,在开发过程当中保持不一样开发人员/测试人员使用统一的环境是一件很是困难的事情,不少过程当中的问题都是环境不一致形成的。容器正是解决这一问题的有效方式。微信
为了可以构建基于容器的CI/CD,咱们须要如下工具链:架构
下图展现了以上工具链的关系和工做流程asp.net
下图中能够看到,要构建完整的发布工具,咱们须要一个多级技术栈,Docker的容器化工具下降了最底层环境和应用技术栈的复杂度,让咱们的发布过程变得更简单。运维
下面咱们就来看一下如何配置这样一套基于容器的CI/CD环境
1. 建立容器化主机做为开发/测试/生产环境
关于如何在开发环境中建立容器化主机支持编码和调试,请参考
关于如何在云环境中建立容器化主机支持测试和生产环境,请参考
2. 在Linux服务器上配置TFS构建代理
关于如何配置Linux服务器上的构建代理,请参考
3. 将容器化主机链接到TFS
进入TFS后台,点击 服务 | 新建服务终结点 |Dcoker Host
将 容器化主机的 url,和~/.docker/machine/machines/{machine-name} 目录下的pem的文件内容按照如下关系拷贝到配置页面中。
重复以上过程,分别绑定用户测试和生产环境的容器化主机配置,建立如下docker host终结点
○ Dockerhost-test
○ Dockerhost-pro
4. 将docker hub帐号链接到TFS
进入TFS后台,点击 服务 | 新建服务终结点 | Docker Registry
填写你的docker hub用户名,密码和邮件地址;若是使用私有的registry,请更新Docker Regsitry地址。
5. 配置CI定义
建立生成定义,并将默认代理队列指向对应在Linux服务器上构建代理队列
在 生成 步骤中分别添加如下构建任务
具体为
a. dotnet restore
b. dotnet build
c. dotnet publish
d. docker build
e. docker push
如下为docker build步骤的详细配置,注意这里咱们使用$(Build.BuildNumber)这个环境变量做为容器镜像的tag,这样咱们就可使用统一的构建号来管理容器镜像的不一样版本。
如下是docker push的详细配置,此步骤将把构建好的容器上传到docker hub并使用$(Build.BuildNumber)做为版本号tag。
6. 建立CD发布管道
建立如下发布管道配置,分别指定测试环境和生产建立的部署步骤
在每个环境中,咱们都执行如下步骤
○ Stop running container
○ Remove container
○ Run container
测试环境和生产环境分别使用不一样的容器化主机链接(在第1-2步中建立的链接)。
7. 配置测试环境到生产环境的升级策略
如下配置要求生产环境的部署只有在测试环境部署成功的状况下才能执行
如下配置要求生产环境的部署必须由特定的用户进行审批经过后才能执行
至此,咱们就完成了基于容器的CI/CD发布管道配置。
请关注微信公众号 【devopshub】,获取更多关于DevOps研发运维一体化的信息