什么是æŒ�ç»äº¤ä»˜ï¼Ÿ

了解æŒ�ç»äº¤ä»˜ æŒ�ç»äº¤ä»˜ (CD) 是一ç§�自动执行准备将软件å�‘å¸ƒåˆ°ç”Ÿäº§ä¸æ‰€æ¶‰å�Šçš„æ‰‹åЍæ¥éª¤çš„å�šæ³•ã€‚
本文内容: 什么是æŒ�ç»äº¤ä»˜ï¼Ÿ æŒ�ç»äº¤ä»˜ä¸ŽæŒ�ç»éƒ¨ç½² 为什么è¦�进行æŒ�ç»äº¤ä»˜ï¼Ÿ æ�建æŒ�ç»äº¤ä»˜ç®¡é�“ æŒ�ç»äº¤ä»˜çš„价值 æŒ�ç»äº¤ä»˜çš„æŒ‘战 æŒ�ç»äº¤ä»˜æœ€ä½³å�𿳕 结论 TeamCity 如何æ��供帮助 什么是æŒ�ç»äº¤ä»˜ï¼Ÿ æŒ�ç»äº¤ä»˜ (CD) 建立在æŒ�ç»é›†æˆ� (CI) 的基础上,自动执行准备将软件å�‘å¸ƒåˆ°ç”Ÿäº§ä¸æ‰€æ¶‰å�Šçš„æ¥éª¤ã€‚
æ¯�次将代ç �更改å�ˆå¹¶åˆ°æŒ‡å®šåˆ†æ”¯æ—¶ï¼ŒæŒ�ç»é›†æˆ�æµ�程都会è¿�行一系列检查,包括自动化å�•元测试,并创建构建。 æŒ�ç»äº¤ä»˜æ‰©å±•了这一æµ�程,自动将æ¯�个构建部署到一系列测试和暂å˜çŽ¯å¢ƒå¹¶è¿�行进一æ¥è‡ªåŠ¨åŒ–æµ‹è¯•ã€‚
这些测试包括集æˆ�测试ã€�UI 测试ã€�性能测试(如负载ã€�浸泡和压力测试)以å�Šç«¯åˆ°ç«¯æµ‹è¯•。 æ ¹æ�®æ‚¨çš„行业,您还å�¯ä»¥ä½¿ç”¨æŒ�ç»äº¤ä»˜è¿�行安全测试ã€�æ— éšœç¢�功能测试以å�Šæ‰‹åŠ¨ç”¨æˆ·éªŒæ”¶æˆ–æŽ¢ç´¢æ€§æµ‹è¯•ã€‚ 构建æˆ�功通过æ¯�个阶段å�Žï¼Œå°±å�¯ä»¥å�‘布到生产。
与æŒ�ç»é›†æˆ�ä¸€æ ·ï¼Œæœ‰æ•ˆæŒ�ç»äº¤ä»˜å�šæ³•çš„å…³é”®æ˜¯å°½å�¯èƒ½è‡ªåŠ¨æ‰§è¡Œæµ�程。 这包括在æ¯�个阶段æ��ä¾›å��馈,并在构建未能通过æŸ�个阶段时æ��醒团队,以便您快速解决问题。
æŒ�ç»äº¤ä»˜ä¸ŽæŒ�ç»éƒ¨ç½² æŒ�ç»äº¤ä»˜å’ŒæŒ�ç»éƒ¨ç½²éƒ½æ¶‰å�Šè‡ªåŠ¨å°†æž„å»ºéƒ¨ç½²åˆ°çŽ¯å¢ƒå¹¶è¿�行自动化测试。 å› æ¤ï¼Œè¿™ä¸¤ä¸ªè¯�有时会互用。 ä¸�过,æŒ�ç»äº¤ä»˜å’ŒæŒ�ç»éƒ¨ç½²ä¹‹é—´ä»�有一个明显的区别。
借助æŒ�ç»éƒ¨ç½²ï¼Œä»£ç �更改æ¯�次æˆ�功通过所有测试阶段å�Žï¼Œå°±ä¼šè‡ªåŠ¨éƒ¨ç½²åˆ°ç”Ÿäº§ä¸ã€‚ æŒ�ç»äº¤ä»˜åˆ™æ¶‰å�Šæœ€å�Žé˜¶æ®µçš„æ‰‹åЍæ¥éª¤ï¼Œä¹Ÿå°±æ˜¯å°†è½¯ä»¶å�‘布到生产。
虽然æŒ�ç»éƒ¨ç½²å�¬èµ·æ�¥åƒ�是软件开å�‘团队的ç�†æƒ³ç›®æ ‡ï¼Œä½†è®¸å¤šå›¢é˜Ÿç»�过å�ˆç�†è€ƒé‡�决定选择æŒ�ç»äº¤ä»˜ã€‚
详细了解æŒ�ç»äº¤ä»˜ä¸ŽæŒ�ç»éƒ¨ç½²ã€‚
为什么è¦�进行æŒ�ç»äº¤ä»˜ï¼Ÿ CI/CD æµ�程的最å�Žé˜¶æ®µæ¶‰å�Šå°†ä»£ç �更改部署到生产。 对于æŒ�ç»äº¤ä»˜ï¼Œè™½ç„¶å�‘布æµ�程本身是自动化的,但å�‘布到生产的决定还是手动æ¥éª¤ã€‚
æŸ�些团队将æŒ�ç»äº¤ä»˜ä½œä¸ºæŒ�ç»éƒ¨ç½²çš„垫脚石。 在完善自动化测试和检查时,手动触å�‘到生产的最终部署å�¯ä»¥æ��供一个安全网。 在这ç§�情况下,您å�¯èƒ½ä¼šé€‰æ‹©å…ˆè¿›è¡Œå‡ 个月的æŒ�ç»äº¤ä»˜ï¼Œç„¶å�Žå†�å°†æ¯�个æˆ�功的代ç �更改自动部署到生产。
但是,æ¯�天或æ¯�å°�时多次部署软件更新并ä¸�总是ç�†æƒ³çš„选择。 对于版本化软件(包括移动应用ã€�APIã€�嵌入å¼�软件或桌é�¢äº§å“�),通常有必è¦�将更改分组到更大的版本ä¸ã€‚ 已安装产å“�的用户ä¸�会希望æ¯�éš”å‡ ä¸ªå°�时就更新一次应用,而å�‡çº§åˆ°æ–°çš„ API 版本å�¯èƒ½ä¼šå¯¹æ‚¨çš„客户产生é‡�大影å“�。 在æŒ�ç»äº¤ä»˜å’Œéƒ¨ç½²ä¹‹é—´å�šå‡ºé€‰æ‹©ï¼Œå°±æ˜¯è¦�为ä¼�业和用户å�šå‡ºæ£ç¡®çš„决定。
æ�建æŒ�ç»äº¤ä»˜ç®¡é�“ 虽然具体的构建æ¥éª¤ã€�环境和测试å�–决于您的产å“�和组织,但以下一般原则还是å�¯ä»¥å¸®åŠ©æ‚¨æž„å»ºæŒ�ç»äº¤ä»˜æµ�程:
从 CI 开始:大多数情况下,å�¯ä»¥åœ¨æŒ�ç»äº¤ä»˜ä¹‹å‰�实现æŒ�ç»é›†æˆ�。 CI 主è¦�å½±å“�å¼€å�‘团队,这就æ��供了一个在涉å�Šå¤–部利益相关者之å‰�熟悉自动执行构建ã€�测试和部署æµ�程的机会。 设计您的 CD æµ�程以获得快速å��馈:尽早å�‘现问题å�¯ä»¥ä½¿æ‚¨çš„å¼€å�‘æµ�ç¨‹æ›´åŠ é«˜æ•ˆã€‚ æŸ�些阶段å�¯ä»¥å¹¶è¡Œè¿�行,例如针对ä¸�å�Œå¹³å�°æž„建的自动化 UI 测试。 å�Œæ ·ï¼Œè¿�行时间较长或消耗大é‡�资æº�的性能测试也å�¯ä»¥æŽ¨è¿Ÿï¼Œç›´åˆ°æž„建æˆ�功通过先å‰�的阶段。 与利益相关者互动:DevOps – CI/CD 背å�Žçš„ç�†å¿µé¼“励开å�‘å›¢é˜Ÿæ‰“ç ´å¤å²›ï¼Œè€ƒè™‘整个软件开å�‘æµ�程。 设计 CD 管é�“时,从è¿�è�¥å’Œå®‰å…¨åˆ°è�¥é”€å’Œæ”¯æŒ�,让å�‚与当å‰�å�‘布æµ�ç¨‹çš„æ‰€æœ‰äººå‘˜åŠ å…¥è¿›æ�¥ã€‚ 自动执行测试:自动化测试对于æŒ�ç»äº¤ä»˜è‡³å…³é‡�è¦�ï¼Œå› ä¸ºå®ƒä»¬å�¯ä»¥æ��供快速å�¯é� 的验è¯�,确ä¿�软件按预期è¿�行。 如果没有自动化测试,则应优先考虑影å“�最大的领域,并é€�æ¥æ‰©å¤§æµ‹è¯•覆盖率。 é‡�用相å�Œçš„æž„建工件:为了é�¿å…�引入ä¸�一致,应将相å�Œçš„æž„建工件从 CI 阶段部署到æ¯�个预生产环境和生产本身。 自动刷新测试环境:ç�†æƒ³æƒ…况下,应当为 CI/CD æµ�程ä¸çš„æ¯�个新构建刷新测试环境。 容器和基础架构å�³ä»£ç �æ–¹å¼�让您å�¯ä»¥æ›´è½»æ�¾åœ°æ ¹æ�®éœ€è¦�拆除和å�¯åŠ¨æ–°çŽ¯å¢ƒã€‚ 考虑利益相关者的需求:上一点的例外是支æŒ�ã€�销售或è�¥é”€å›¢é˜Ÿç”¨æ�¥ç†Ÿæ‚‰æ–°åŠŸèƒ½çš„æš‚å˜çŽ¯å¢ƒã€‚ 这些团队å�¯èƒ½æ›´å–œæ¬¢æ ¹æ�®è¯·æ±‚更新环境,以é�¿å…�䏿–æ£åœ¨è¿›è¡Œçš„工作。 采用 DevSecOps:信æ�¯å®‰å…¨æˆ–网络安全团队通常被视为频ç¹�å�‘布的障ç¢�ï¼Œå› ä¸ºå®‰å…¨å®¡æ ¸éœ€è¦�大é‡�时间,并且éš�å�Žéœ€è¦�生æˆ�长篇报告。 采用 DevSecOps æ–¹å¼�,从一开始就将安全è¦�求èž�入管é�“。 考虑手动测试è¦�æ±‚ï¼šæ ¹æ�®æ‚¨çš„ä¼�ä¸šï¼ŒåŠ å…¥ä¸€äº›æ‰‹åŠ¨æŽ¢ç´¢æ€§æµ‹è¯•ï¼Œå¸®åŠ©è¯†åˆ«æ„�外故障模å¼�。 与其è¦�求对æ¯�次代ç �更改进行手动测试,ä¸�妨考虑设置æ¯�周或æ¯�月è¿�行的å�¯é€‰æ¥éª¤æˆ–替代管é�“。 自动执行å�‘布:虽然æŒ�ç»äº¤ä»˜æ„�味ç�€å�‘布到生产的决定是手动å�šå‡ºï¼Œä½†å�‘布本身应该自动化。 您应当能够使用一个命令将良好的构建部署上线。 æŒ�ç»äº¤ä»˜çš„价值 æŒ�ç»äº¤ä»˜ä½¿å›¢é˜Ÿèƒ½å¤Ÿæ›´å¿«ã€�更频ç¹�地å�‘布软件,å�Œæ—¶å‡�少进入生产的 bug æ•°é‡�。 为æ¤ï¼Œå…³é”®åœ¨äºŽæŒ�ç»æµ‹è¯•更改并在å�‘现问题时立å�³è§£å†³ï¼Œç¡®ä¿�代ç �éš�æ—¶å�¯ä»¥å�‘布。
æ¤å¤–,æŒ�ç»äº¤ä»˜è¿˜æ��供了多项é¢�外优势:
更频ç¹�地å�‘布æ„�味ç�€æ‚¨å�¯ä»¥åŠ å¿«äº§å“�上市时间,更快地å�‘用户æ��供新功能ã€�ä¿®æ£å’Œå¢žå¼ºã€‚ æŒ�ç»æµ‹è¯•æµ�程æ„�味ç�€æ‚¨å�¯ä»¥å¿«é€ŸèŽ·å¾—å·¥ä½œå��馈。 如果最近的更改引入了æ¼�洞,导致应用在æŸ�些情况下挂起或者 API è°ƒç”¨å¤±è´¥ï¼Œç›¸è¾ƒäºŽä¼ ç»Ÿçš„å�‘布测试æµ�程,您会更快å�‘现。 尽早å�‘现问题会使开å�‘æµ�ç¨‹æ›´åŠ é«˜æ•ˆã€‚ 您ä»�ç„¶è®°å¾—æ›´æ”¹ï¼Œè€Œä¸”æ·»åŠ ä¾�赖于错误代ç �的其他代ç �更改的风险也更å°�。 自动执行é‡�å¤�构建ã€�测试和å�‘布任务å�¯ä»¥ç¡®ä¿�一致执行并é™�低出错风险,å�Œæ—¶è®©å›¢é˜Ÿæˆ�å‘˜èƒ½å¤Ÿä¸“æ³¨äºŽå¢žåŠ ä»·å€¼ã€‚ 投资自动化测试有助于更全é�¢åœ°æµ‹è¯•软件。 è¿™å�¯èƒ½åŒ…括跨多个平å�°è¿›è¡Œä¸€è‡´æµ‹è¯•ã€�检查您是å�¦æ»¡è¶³æ— éšœç¢�功能è¦�求,或对产å“�或æœ�务的性能进行基线测试。 自动刷新环境和部署构建å�¯ä»¥å¸®åŠ©æ‚¨æ›´æœ‰æ•ˆåœ°ä½¿ç”¨åŸºç¡€æž¶æž„ï¼Œæ— è®ºæ˜¯å†…éƒ¨æœ�务器还是云托管构建场。 自动执行到暂å˜ç«™ç‚¹çš„部署有助于确ä¿�产å“�ã€�è�¥é”€å’Œæ”¯æŒ�团队å�¯ä»¥é¢„è§ˆæ–°åŠŸèƒ½ï¼Œæ— éœ€å¼€å�‘或è¿�è�¥å›¢é˜Ÿè¿›è¡Œé¢�外的手动æ“�作。 æŒ�ç»äº¤ä»˜ä½¿å�‘布æµ�程稳å�¥ä¸”å�¯é‡�å¤�,å�Œæ—¶è®©æ‚¨å�¯ä»¥ç²¾ç¡®æŽ§åˆ¶å�‘布时间。 通过 CD æµ�程,您å�¯ä»¥é€‰æ‹©æ¯�周ã€�æ¯�天甚至æ¯�å°�时交付å°�型改进。 æŒ�ç»äº¤ä»˜çš„æŒ‘战 实现æŒ�ç»äº¤ä»˜æµ�程å�¯èƒ½ä¼šé�‡åˆ°ä¸€äº›æŒ‘战:
跨团队å��作:您å�¯èƒ½éœ€è¦�组织多个部分的å��作,例如è¿�è�¥ã€�基础架构和安全团队。 è™½ç„¶æ‰“ç ´å¤å²›åœ¨çŸæœŸå†…å�¯èƒ½å…·æœ‰æŒ‘战性,但从长远æ�¥çœ‹ï¼Œå®ƒä¼šå¸¦æ�¥æ›´å¥½çš„å��作和更高的效率。 时间投入:自动执行构建ã€�测试和å�‘布æµ�程需è¦�时间。 ä¸�过,采å�–è¿ä»£æ–¹å¼�å¹¶é€�æ¥å®Œå–„æµ�程å�¯ä»¥ä½¿è¿™æ›´æ˜“于管ç�†ã€‚ æ”¶é›†ç¼ºé™·çŽ‡å’Œæž„å»ºæ—¶é—´ç‰æŒ‡æ ‡å¹¶å°†å…¶ä¸Žæ‰‹åŠ¨è¿‡ç¨‹è¿›è¡Œæ¯”è¾ƒï¼Œæ˜¯å�‘利益相关者展示投资回报的有效方å¼�。 扩缩挑战:在扩缩æŒ�ç»äº¤ä»˜æµ�程时,您å�¯èƒ½ä¼šå¸Œæœ›å¹¶è¡Œè¿�行多个构建和测试。 æ¤æ—¶ï¼Œå�¯ç”¨æœ�务器的数é‡�å�¯èƒ½æˆ�为é™�åˆ¶å› ç´ ã€‚ 优化管é�“性能å�Žï¼Œå�¯ä»¥è€ƒè™‘è¿�ç§»åˆ°äº‘æ‰˜ç®¡åŸºç¡€æž¶æž„ï¼Œä»¥æ ¹æ�®éœ€è¦�扩缩构建场。 æŒ�ç»äº¤ä»˜æœ€ä½³å�𿳕 æ�建æŒ�ç»äº¤ä»˜æµ�程看似艰巨,但å�ªè¦�方法得当,它å�¯ä»¥å¤§å¹…åŠ å¿«è½¯ä»¶å�‘布速度,å�Œæ—¶æœ€å¤§é™�度地å‡�å°‘ bug。
有效实现æŒ�ç»äº¤ä»˜çš„关键是采用 DevOps æ€�维。 DevOps 倡导å��作和从çŸçš„è¿ä»£å‘¨æœŸä¸å¿«é€ŸèŽ·å�–å��馈,而ä¸�是将软件开å�‘æµ�程视为å�•å�‘ä¼ é€�带 – è¦�求ã€�代ç �å’ŒæŠ¥å‘Šä»Žä¸€ä¸ªå›¢é˜Ÿä¼ é€’åˆ°å�¦ä¸€ä¸ªå›¢é˜Ÿã€‚
改å�˜æ‚¨å¯¹â€œå®Œæˆ�â€�的定义å�¯ä»¥å¸®åŠ©æ‚¨æŽ¥å�—è¿™ç§�心æ€�。 ä¸�è¦�在将代ç �交给测试时就认为任务已ç»�完æˆ�,å�ªæœ‰æ‚¨çš„æ–°åŠŸèƒ½æˆ–ä»£ç �更改å�‘布上线å�Žæ‰�算完æˆ�。 如果在管é�“的任何阶段å�‘现问题,与必须由更改委员审批的冗长报告相比,å�Šæ—¶ä¼ è¾¾å��馈并展开å��作å�¯ä»¥æ›´å¿«åœ°è§£å†³é—®é¢˜ã€‚ 这就是æŒ�ç»äº¤ä»˜çš„æ„�义所在。
如需帮助您开始采用æŒ�ç»äº¤ä»˜çš„æ›´å¤šæ��示,请阅读我们的 CI/CD 最佳å�šæ³•æŒ‡å�—。
结论 æŒ�ç»äº¤ä»˜ä½¿å�‘布软件å�˜å¾—æ›´åŠ è½»æ�¾å¿«æ�·ï¼Œæ‚¨å�¯ä»¥æ›´é¢‘ç¹�地部署到生产。 更频ç¹�交付的å°�型更新将å�–代大型的å£åº¦æˆ–年度å�‘布。 è¿™ä¸�ä»…æ„�味ç�€ç”¨æˆ·å�¯ä»¥æ›´å¿«èŽ·å¾—æ–°åŠŸèƒ½å’Œ bug ä¿®æ£ï¼Œè¿˜æ„�味ç�€æ‚¨å�¯ä»¥äº†è§£è½¯ä»¶çš„实际使用情况并相应调整计划。
虽然æŸ�些组织倾å�‘于对å�‘布æµ�程的最å�Žä¸€æ¥ä¿�æŒ�控制,但对其他组织æ�¥è¯´ï¼ŒCI/CD 管é�“的逻辑结论是使用一ç§�称为æŒ�ç»éƒ¨ç½²çš„å�šæ³•è‡ªåŠ¨å°†ç‰ˆæœ¬ä¸Šçº¿ã€‚ 您å�¯ä»¥åœ¨æˆ‘们 CI/CD 指å�—的下一部分ä¸äº†è§£è¯¦æƒ…。
TeamCity 如何æ��供帮助 TeamCity 是一个 CI/CD å¹³å�°ï¼Œå¹¿æ³›æ”¯æŒ�å�„ç§�构建工具ã€�测试框架ã€�容器和云基础架构æ��供商。 æ— è®ºæ‚¨æ˜¯æƒ³åœ¨çŽ°åœºã€�云端或两者结å�ˆæ�¥æ‰˜ç®¡æž„建机器,TeamCity 都会å��调构建任务以实现最高效率。
TeamCity çš„å�¯å®šåˆ¶ç®¡é�“逻辑æ„�味ç�€æ‚¨å�¯ä»¥é€‰æ‹©ä½•时并行è¿�行æµ�程(例如在ä¸�å�Œå¹³å�°ä¸Šè¿›è¡Œæµ‹è¯•)以å�Šä½•æ—¶è¦�求æˆ�功完æˆ�å�Žæ‰�能进入下一阶段。 æ— è®ºæ‚¨åœ¨å“ªé‡Œå·¥ä½œï¼Œå�¯é…�置的通知都能为您æ��供所需信æ�¯ï¼Œå¸®åŠ©æ‚¨é�¿å…�ä¸�å¿…è¦�的干扰。 最å�Žï¼Œè¯¦ç»†çš„结果有助于确ä¿�生产路径ä¿�æŒ�畅通。