天天看點

Java應用建構并部署ECS

簡介

如果你

使用Java進行開發

使用Jar/War的制品形式進行傳遞

制品最終會運作在ECS或者自有主機上

那麼本文檔可以幫助您實作研發流程的協同自動化。

使用者訴求

一般來說,使用者使用主機部署場景如下:

對源代碼進行一定的品質檢測,比如單元測試,代碼掃描

将源代碼建構成為可傳遞的制品,比如Jar/War

對制品進行測試環境驗證

使用完成驗證的制品進行線上部署

上述活動需要有不同角色的參與:開發、測試、運維。如何保證不同參與者可以使用統一的傳遞流程來進行協作,是雲效Flow傳遞流水線要解決的主要問題。

本場景雲起實驗室提供相應資源,此處擷取

雲效解決方案

結合雲效持續傳遞流水線和主機部署的能力,為應用持續傳遞提供了很好的基礎保障,如圖:

Java應用建構并部署ECS

開發者送出代碼變更到代碼庫,雲效在監聽着代碼庫的變動,一旦代碼發生變化,将自動觸發雲效持續部署流水線一次建構任務的運作,包括代碼檢查、建構、測試部署、測試驗證和生産部署等過程。其中,在建構完之後,生成制品包并自動上傳至OSS倉庫,在部署階段(測試環境的部署和生産環境的部署)時,再從制品倉庫中取得最新的版本,根據不同的部署政策通過主機部署到不同環境,這裡資源可以是阿裡雲或者自建主機資源。

建立流水線

接下來以一個 Java Spring Boot 的代碼庫為例,講解如何進行建構并部署到阿裡雲 ECS 伺服器。

1.使用您自己的賬号進入雲效(

https://devops.aliyun.com

)點選頁面左上角的dock,選擇流水線進入Flow。

Java應用建構并部署ECS

2.點選右上角【建立流水線】,進入流水線建立向導頁面。

Java應用建構并部署ECS

3.選擇相應模闆,并點選建立。

Java應用建構并部署ECS

配置代碼庫

1.建立流水線之後會自動彈出添加代碼源的視窗,這裡選擇Flow提供的示例代碼源,并進行添加

Java應用建構并部署ECS

配置建構上傳任務

1.修改一下”Java建構上傳“的任務,增加一個打包路徑,填入deploy.sh。這個檔案存在于代碼庫中,其中包含了在ECS上進行應用啟動的腳本,為了進行後續的主機部署,需要将這個檔案也打入到壓縮包中,在後續的主機部署任務中可以看到如何使用該deploy.sh。在該配置中指定了target/和deploy.sh兩個路徑,是以Flow會将這兩個檔案(夾)打包成為一個壓縮包,并進行歸檔,在Flow中我們稱之為制品,該制品也會在後續的主機部署任務中用到。

Java應用建構并部署ECS
Java應用建構并部署ECS

連接配接ECS伺服器

點選頁面右側 切換至Web Terminal 即可連接配接到ECS伺服器。

Java應用建構并部署ECS

配置部署任務

1.接下來配置主機部署任務,在制品下拉框中選擇”制品名稱.default”,也就是前面的”Java建構上傳“步驟歸檔的那個制品。為了配置主機組,需要先建立一個,點選”建立主機組”。

Java應用建構并部署ECS

2.參考如下步驟添加ECS主機。

a. 選擇 “自有主機”;

Java應用建構并部署ECS

b. 複制自有主機界面指令;

Java應用建構并部署ECS

c. 在ECS伺服器中粘貼複制過來的指令并進行安裝;

Java應用建構并部署ECS
d.  agent插件安裝成功後自有主機界面會自動擷取到主機資訊;           
Java應用建構并部署ECS

e. 進一步填寫自有主機資訊,可參考下圖所示;點選儲存後自有主機添加完成。

Java應用建構并部署ECS
  1. 接下來進行部署腳本的配置:

下載下傳路徑:表示希望把”建構上傳”任務中的壓縮包下載下傳到機器上的什麼位置,在本例的值為:/home/admin/app/package.tgz

執行使用者:希望以是哪個使用者的身份進行腳本執行,本例的值為:root

部署腳本:在機器上執行腳本的具體内容,本例的值為:

mkdir -p /home/admin/application/
tar zxvf /home/admin/app/package.tgz -C /home/admin/application/
sh /home/admin/application/deploy.sh restart           
Java應用建構并部署ECS

4.部署政策配置

a. 暫停方式:希望一個主機組中的機器以什麼樣的暫停方式進行,比如第一批暫停,每批暫停,或者不暫停。推薦使用第一批暫停,在釋出完第一批之後,對線上服務進行觀察,如果沒有異常,則可以繼續其餘批的釋出

b. 分批數量:希望主機組中的機器分為幾批進行釋出。比如一共4台機器,分兩批,則每批同時釋出2台機器。

添加人工卡點

為了保證經過審批的制品才能進入部署環境,需要添加一個人工卡點,這裡假設這個環境是測試環境,需要有測試管理者來審批才能進入。

首選需要在企業中建立一個角色”測試管理者“,并将企業使用者”張三”的角色設定為該角色。

Java應用建構并部署ECS
Java應用建構并部署ECS
Java應用建構并部署ECS
Java應用建構并部署ECS
Java應用建構并部署ECS
Java應用建構并部署ECS

以上示範了如何添加一個進入測試環境的卡點,添加生産環境的卡點也是類似的,這裡不再贅述,可以類似的進行配置。

運作流水線

配置完畢,點選”儲存并運作”觸發流水線:

Java應用建構并部署ECS
Java應用建構并部署ECS

掃描、單測及建構上傳的任務自動完成,并停在了卡點上:

Java應用建構并部署ECS

普通人員無權限通過,切換到張三的賬号之後,可以通過或者拒絕:

Java應用建構并部署ECS

點選”驗證通過“,流水線會進入主機部署的任務,點選”部署詳情”可以看到更多部署資訊:

Java應用建構并部署ECS

點選檢視日志,可以看到執行的日志詳情:

Java應用建構并部署ECS

日志顯示部署成功,此時通路該主機的公網接口可以看到服務已經可以正常通路了:

$ curl http://47.244.109.14:8080/
Greetings from Spring Boot!           

復原

如果釋出完成之後發現線上服務有問題,則需要快速復原。雲效Flow提供了通過曆史版本直接進行復原的能力。

在流水線運作頁面點選”部署曆史“,然後選擇相應的部署任務,便可以看到該部署任務所有的成功部署記錄

Java應用建構并部署ECS

點選版本4的”復原“,即可復原到該版本。

Java應用建構并部署ECS
Java應用建構并部署ECS