1. 程式人生 > >Docker最全教程——從理論到實戰(八)

Docker最全教程——從理論到實戰(八)

碼雲 task 更改 碼農 軟件工程 lov 兩個 還需 ops

原文:Docker最全教程——從理論到實戰(八)

在本系列教程中,筆者希望將必要的知識點圍繞理論、流程(工作流程)、方法、實踐來進行講解,而不是單純的為講解知識點而進行講解。也就是說,筆者希望能夠讓大家將理論、知識、思想和指導應用到工作的實際場景和實踐之中,而不是拿著字典寫文章,抱著寶典寫代碼。至於很多具體的語法、技術細節,除了常用的知識點,筆者更希望大家閱讀官方文檔——畢竟看官網比看書靠譜多了,官網會一直更新和改進,而書和教程自出版或發布之後,基本上就“死“了。

本系列教程預計全部完成還需要2到3個月的時間。在這個過程中,您可以加入我們一起討論、交流和分享這一塊的技術。我們也希望得到大家的支持,請多多點贊,你們的支持是我們前進的最大動力!

使用Azure DevOps來完成CI

Azure DevOps,以前叫VSTS,現在被微軟改名部正式更名為Azure DevOps,說明微軟雲為先之心仍然蠢蠢欲動。不過和VSTS一樣,微軟都提供了免費的使用額度,對於小團隊和個人開發者來說,完全是足夠了。

技術分享圖片

什麽是DevOps

DevOpsDevelopmentOperations的組合詞)是一組過程、方法與系統的統稱,用於促進開發(應用程序/軟件工程)、技術運營和質量保障(QA)部門之間的溝通、協作與整合。它是一種重視“軟件開發人員(Dev“IT運維技術人員(Ops

之間溝通合作的文化、運動或慣例。透過自動化軟件交付架構變更的流程,來使得構建、測試、發布軟件能夠更加地快捷、頻繁和可靠。它的出現是由於軟件行業日益清晰地認識到:為了按時交付軟件產品和服務,開發和運營工作必須緊密合作。

技術分享圖片

DevOps的引入能對產品交付、測試、功能開發和維護(包括──曾經罕見但如今已屢見不鮮的──“熱補丁)起到意義深遠的影響。在缺乏DevOps能力的組織中,開發與運營之間存在著信息鴻溝”──例如運營人員要求更好的可靠性和安全性,開發人員則希望基礎設施響應更快,而業務用戶的需求則是更快地將更多的特性發布給最終用戶使用。這種信息鴻溝就是最常出問題的地方。

技術分享圖片

DevOps經常被描述為開發團隊與運營團隊之間更具協作性、更高效的關系。由於團隊間協作關系的改善,整個組織的效率因此得到提升,伴隨頻繁變化而來的生產環境的風險也能得到降低。

總之,通過DevOps,各專業團隊之間的協調和協作得到改善,縮短了將更改提交到系統與將更改投入到生產之間的時間。它還可確保此過程符合安全性和可靠性標準。結果:產品質量改善、交付速度加快、客戶滿意度提升。

DevOps對應用程序發布的影響

在很多企業中,應用程序發布是一項涉及多個團隊、壓力很大、風險很高的活動。然而在具備DevOps能力的組織中,應用程序發布的風險很低,原因如下

  1. 減少變更範圍

與傳統的瀑布式開發模型相比,采用敏捷或叠代式開發意味著更頻繁的發布、每次發布包含的變化更少。由於部署經常進行,因此每次部署不會對生產系統造成巨大影響,應用程序會以平滑的速率逐漸生長。

  1. 加強發布協調

靠強有力的發布協調人來彌合開發與運營之間的技能鴻溝和溝通鴻溝;采用電子數據表、電話會議、即時消息、企業門戶(wikisharepoint)等協作工具來確保所有相關人員理解變更的內容並全力合作。

  1. 自動化

強大的部署自動化手段確保部署任務的可重復性、減少部署出錯的可能性。

與傳統開發方法那種大規模的、不頻繁的發布(通常以“季度”或“年”為單位)相比,敏捷方法大大提升了發布頻率(通常以“天”或“周”為單位)。減少變更範圍與傳統的瀑布式開發模型相比,采用敏捷或叠代式開發意味著更頻繁的發布、每次發布包含的變化更少。由於部署經常進行,因此每次部署不會對生產系統造成巨大影響,應用程序會以平滑的速率逐漸生長。加強發布協調靠強有力的發布協調人來彌合開發與運營之間的技能鴻溝和溝通鴻溝;采用電子數據表、電話會議、即時消息、企業門戶(wikisharepoint)等協作工具來確保所有相關人員理解變更的內容並全力合作。強大的自動化部署手段能夠確保部署任務的可重復性、減少部署出錯的可能性。

適用於容器的 CI/CD 流程

使用容器,可輕松地持續生成和部署應用程序。

Azure DevOps 可以通過設置持續版本以生成容器映像和業務流程,讓我們能更快、更可靠地進行部署。以下是一個適用於容器和AzureCI/CD 流程:

技術分享圖片

步驟說明:

技術分享圖片

使用Azure DevOps來配置一個簡單的CI流程

Azure DevOps服務涵蓋了整個開發生命周期,可幫助開發人員更快地高質量地交付軟件,其提供了Azure Pipelines、Azure Boards、Azure Artifacts、Azure Repos和Azure Test Plans。關於Azure DevOps我們就介紹到這裏,畢竟是免費介紹。

現在,我們需要側重介紹的是Pipelines,也就是代碼流水線。看,多形象,所以以前自詡為碼農是錯誤的,我們應該是碼工,廣大流水線工人的一環,無產階級之一,共產主義接班人。不好意思,又偏題了,我們繼續:

技術分享圖片

首先,我們需要定義一個流水線,為了便於演示,我這裏就定義一些針對Docker的簡單步驟,大家可以按需添加步驟,比如單元測試步驟等等。

技術分享圖片

如圖所示,步驟很簡單,首先設置代碼源,這裏我們直接對接Magicodes.Admin框架的git庫地址。Git庫地址大家可以在這裏找到:https://gitee.com/xl_wenqiang/Magicodes.Admin.Core

技術分享圖片

因為代碼是托管再碼雲,所以我們選擇如上圖所示的最後一種方式,並且選擇對應的分支。

接下來,我們需要添加jobtaskjob添加一個默認的即可,無需設置什麽條件和參數。接下來我們添加task,實際上就是步驟。

第一步,構建鏡像。

我們需要添加一個docker task:

技術分享圖片

然後設置command命令為build,也就是構建:

技術分享圖片

技術分享圖片

構建配置我們可以根據自己的需求來設置,比如根據分支設置鏡像版本等等。

第二步,登錄騰訊雲鏡像倉庫並且推送。

這一步,就有點門檻了,原生的docker命令並不好使,因為task之間的上下文是斷開的,也就是login了你也沒法push。這時候,還是命令行靠譜,簡單粗暴。所以我們需要添加一個Command line task

技術分享圖片

然後編寫命令腳本:

技術分享圖片

簡單粗暴的兩個步驟就搞定了,大家可以根據自己的持續集成流程來定制,畢竟微軟在開發者服務這塊淫蕩多年,還是相當給力的。我們可以初步看看支持的task

技術分享圖片

非常之多,足夠我們隨便玩了。而且玩壞了還不用賠錢。

接下來,跑起來:

技術分享圖片

點開還能看到詳細的過程:

技術分享圖片

技術分享圖片

激不激動,簡單不簡單?就這麽幾下就搞定了。產品很強大,就是拉取代碼有點慢,看起來是托管在國外。順手一查,額,美國:

技術分享圖片

因此,我們不是很推薦使用Azure DevOps來完成CI,網絡的延遲足夠拖垮我們焦慮的神經。但是如果我們的代碼托管在Github,那麽使用Azure DevOps是不錯的選擇。在接下來的教程中,我們會講解如何打造自己的Github開源庫的CI流程——不僅完全自動化,而且還支持在readme頁面添加各種動態圖標。

往期內容鏈接

Docker最全教程——從理論到實戰(一)

Docker最全教程——從理論到實戰(二)

Docker最全教程——從理論到實戰(三)

Docker最全教程——從理論到實戰(四)

Docker最全教程——從理論到實戰(五) Docker最全教程——從理論到實戰(六)
Docker最全教程——從理論到實戰(七) 我的博客即將同步至騰訊雲+社區,邀請大家一同入駐:https://cloud.tencent.com/developer/support-plan?invite_code=1uzymsc0hstza

Docker最全教程——從理論到實戰(八)