當前企業都在追求可持續的、快速迭代的軟件工程發展,如何實現從一個需求到交付快速落地,這一切都要求企業具備快速響應的能力,這正是推動持續集成、持續交付、持續部署的動力。
1、用戶的訴求或問題
發布問題:企業發布需要投入大量精力,很多都是晚上升級,員工得通宵加班,還無法保障升級不出現問題,不具備快速大批量部署的能力;
版本追溯:為了保證版本可追溯,需要保存各個歷史版本,出錯后如何能夠快速回滾;
質量守護:缺乏統一的研發平臺,自動化程度低,沒有有效的質量保障體系,基礎設施保障的建設往往落后于企業的快速發展;
2、云效+主機部署解決方案
結合云效持續交付流水線和主機部署的能力,為應用持續交付提供了很好的基礎保障,如圖:
開發者提交代碼變更到代碼庫,云效在監聽著代碼庫的變動,一旦代碼發生變化,將自動觸發云效流水線構建任務的運行,包括代碼檢查、構建、測試部署、測試驗證和生產部署等過程。其中,在構建完成后,生成制品包并自動上傳至倉庫,在部署階段(測試環境的部署和生產環境的部署)時,再從制品倉庫中取得最新的版本,根據不同的部署策略通過主機資源部署到不同環境,這里主機資源可以是阿里云或者自建主機。
接下來將分步驟介紹如何快速配置這樣的持續部署流水線。
3、云效+主機部署操作指南
通過以下步驟快速創建基于云效和主機部署流水線;
立即體驗:云效流水線Flow
新建流水線
進入流水線應用,點擊右上角新建流水線,選擇對應的開發語言,選擇"測試、構建、部署到阿里云ECS/自有主機" 模板,即可快速使用主機部署發布能力。
點擊創建,完成初始化流水線,點擊添加流水線源,選擇想要添加的代碼源,點擊保存。
編輯流水線
構建制品:可以為制品選取一個名稱或使用默認名稱,在流水線中的后續任務中可以使用此處配置的制品。
主機部署:在制品中選擇上一步中的制品,然后選擇主機組或者新建主機組。這里的主機組是指運行在不同環境的機器資源,例如:集成測試環境(通常稱作日常環境)、預發環境、對外提供服務的環境(稱作正式環境)等不同的環境里運行。
云效支持兩種主機組:阿里云ECS和可以出公網的非阿里云主機;
阿里云ECS部署請參考:部署到阿里云 ECS。
公網主機部署請參考:部署到公網主機。
部署配置:在主機部署任務中,可以進行部署相關的配置,用于將構建產物在部署機上進行安裝。詳細部署配置請參考:部署配置。
部署策略:主機部署過程中,可以制定對應的部署策略,提供了分批發布和灰度發布的能力;
運行流水線
點擊流水線編輯頁面右上角保存并運行,流水線會自動保存并開始運行;
部署詳情:流水線運行頁面,主機部署任務中,可以點擊部署詳情查看部署過程。此例中由于設置分批部署,因此第一批部署成功后暫停,需要確認是否繼續。
回滾方式:流水線所有執行的部署歷史記錄,并可選擇其中任意一條歷史記錄進行回滾操作。新流水線第一次部署完成可能頁面上沒有顯示部署歷史頁面與回滾按鈕,此時刷新一下頁面即可解決。
查看測試報告
點擊流水線頁面各階段測試報告和日志,可以查看詳細的測試結果與執行情況;
3、云效+主機部署流水線進階
上一節介紹了流水線基本操作,在實際部署操作中可以根據需要完善流水線,增加更多驗證和卡點,例如:
流水線1: 持續驗證流水線:(測試環境主機部署)
流水線2: 持續發布流水線:(生產環境主機部署)
流水線定義了持續交付過程的各個步驟和卡點,通過執行流水線1和流水線2即可完成從代碼提交到正式發布的持續交付過程。