设为首页 收藏本站
查看: 1215|回复: 0

[经验分享] docker4dotnet #5 使用VSTS/TFS搭建基于容器的持续交付管道

[复制链接]

尚未签到

发表于 2017-7-1 18:26:08 | 显示全部楼层 |阅读模式
  在过去的几篇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
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一致的功能体验。
  关于VSTS和TFS的功能介绍,请参考本博客或者公众号中的相关文章,链接如下:
  http://devopshub.cn/tag/vsts/
  基于容器的CI/CD
  容器技术所解决的主要问题是环境的一致性和同一版本的应用在不同的环境中的迁移问题,虽然对单个开发人员也提供了更高效的开发模式,但容器的作用在团队开发中和管理开发/测试/预生产/生产环境中会体现得更有价值。从事软件开发的技术人员都知道,在开发过程中保持不同开发人员/测试人员使用统一的环境是一件非常困难的事情,很多过程中的问题都是环境不一致造成的。容器正是解决这一问题的有效方式。
  为了能够构建基于容器的CI/CD,我们需要以下工具链:
DSC0000.png

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

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

  下面我们就来看一下如何配置这样一套基于容器的CI/CD环境
  1. 创建容器化主机作为开发/测试/生产环境
  关于如何在开发环境中创建容器化主机支持编码和调试,请参考
  #1 前世今生 & 世界你好
  关于如何在云环境中创建容器化主机支持测试和生产环境,请参考
  #2 容器化主机
  2. 在Linux服务器上配置TFS构建代理
  关于如何配置Linux服务器上的构建代理,请参考
  用VSTS/TFS搭建iOS持续集成环境
  3. 将容器化主机连接到TFS
  进入TFS后台,点击 服务 | 新建服务终结点 |Dcoker Host
DSC0003.png

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

  重复以上过程,分别绑定用户测试和生产环境的容器化主机配置,创建以下docker host终结点
  ○ Dockerhost-test
○ Dockerhost-pro
  4. 将docker hub账号连接到TFS
  进入TFS后台,点击 服务 | 新建服务终结点 | Docker Registry
DSC0005.png

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

  5. 配置CI定义
  创建生成定义,并将默认代理队列指向对应在Linux服务器上构建代理队列
DSC0007.png

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

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

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

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

  在每一个环境中,我们都执行以下步骤
○ Stop running container
○ Remove container
○ Run container
  测试环境和生产环境分别使用不同的容器化主机连接(在第1-2步中创建的连接)。
  7. 配置测试环境到生产环境的升级策略
  以下配置要求生产环境的部署只有在测试环境部署成功的情况下才能执行
DSC00012.png

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

  至此,我们就完成了基于容器的CI/CD发布管道配置。
  请关注微信公众号 【devopshub】,获取更多关于DevOps研发运维一体化的信息
  ​ DSC00014.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-390134-1-1.html 上篇帖子: HBase(五): HBase运维管理 下篇帖子: 使用php来访问操作sql server
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表