全部產品
Search
文件中心

Enterprise Distributed Application Service:使用Jenkins建立持續整合

更新時間:Jun 30, 2024

使用Jenkins可以構建EDAS應用的持續整合方案。該方案涉及下列電腦語言或開發工具,閱讀本文您可以對下述的語言或工具有一定的理解。本文介紹如何使用Jenkins建立持續整合。

前提條件

在開始持續整合之前,需要完成下述的準備工作。

  1. 擷取阿里雲的AccessKey ID和AccessKey Secret。

    1. 使用已經開通了EDAS服務的主帳號登入阿里雲官網。

  2. 在使用Jenkins自動部署應用之前,需要先在EDAS控制台中建立並部署應用。

    1. 登入EDAS控制台

    2. 部署應用。具體操作,請參見建立和部署應用概述建立和部署應用概述

      如果已經建立了應用,請忽略此步。

    3. 在左側導覽列,單擊應用管理 > 應用列表。找到建立的應用並單擊應用程式名稱進入詳情頁面,擷取應用ID的欄位內容。

  3. 使用GitLab託管您的代碼。您可以自行搭建Gitlab或者使用阿里雲Codeup

    本文使用通過自行搭建的GitLab做示範,關於Gitlab的更多資訊,請參見GitLab

  4. 瞭解並使用Jenkins。關於Jenkins的更多詳細資料,請參見Jenkins官網

背景資訊

說明

ECS叢集和Container ServiceKubernetes叢集都支援使用Jenkins建立持續整合。

工具

說明

Maven

Maven是一個專案管理和構建的自動化工具。

Jenkins

Jenkins 是一個可擴充的持續整合引擎。

GitLab

GitLab 是一個利用Ruby on Rails開發的開源應用程式,實現一個自託管的Git專案倉庫,可通過Web介面進行訪問公開的或者私人專案。 它擁有與GitHub類似的功能,能夠瀏覽原始碼,管理缺陷和注釋。

設定項目

修改專案配置,添加toolkit-maven-plugin及部署資訊,具體操作,請參見使用toolkit-maven-plugin外掛程式升級應用(ECS叢集)。您在修改完專案配置後,建議在本地使用Maven構建驗證配置是否正確。

安裝和配置Jenkins

  1. 進入Jenkins官網下載安裝Jenkins。

  2. 在Jenkins控制台的功能表列,選擇系統管理 > 外掛程式管理,安裝Git和GitLab外掛程式。

    • 安裝GIT Client Plugin和GIT Plugin外掛程式可以協助Jenkins拉取Git倉庫中的代碼。

    • 安裝Gitlab Hook Plugin外掛程式可以協助Jenkins在收到Gitlab發來的Hook後觸發一次構建。

  3. 安裝Maven構建工具,請參見Maven官網

    在Jenkins控制台的功能表列,選擇系統管理 > 全域工具配置,選擇Maven版本名稱並配置路徑。

  4. 在Jenkins伺服器上產生SSH RSA金鑰組,並將公開金鑰匯入GitLab,實現Jenkins拉取GitLab代碼時自動認證。

    1. 在Jenkins伺服器運行Jenkins軟體的使用者下,產生SSH RSA金鑰組。具體操作,請參見GitLab文檔

    2. 進入GitLab首頁,在功能表列選擇Settings > Deploy Keys,並單擊new deploy key添加key,匯入在Jenkins伺服器上建立的SSH RSA公開金鑰。

  5. 建立Jenkins任務。

    1. 在Jenkins首頁左側導覽列,單擊建立,建立Jenkins任務,並選擇構建一個自由式饒舌的軟體專案

    2. 源碼管理頁面,選擇Git,並設定相關參數。

      • Repository URL:您的專案的Git協議地址。

      • Credentials:安全憑證,選擇即可。

        說明

        前提是運行Jenkins軟體的使用者的SSH RSA公開金鑰已添加到該Git專案所在的GitLab中,否則會報錯。

    3. 單擊構建觸發器頁簽,勾選輪詢SCM

    4. 單擊構建環境頁簽,勾選Add timestamps to the Console Output(為控制台輸出的資訊新增時間戳記)。

    5. 單擊構建頁簽,然後單擊增加構建步驟

    6. 調用頂層Maven目標地區,設定Maven版本目標。如果您想部署多模組工程,請參見建立多模組工程的Jenkins任務

      • Maven Version:單擊該選項後面的下拉框,選擇在全域工具配置裡配置的Maven版本名稱

      • Goals:填入clean package toolkit:deploy (如有其它參數,請根據實際情況填入)

配置Gitlab的Web Hook,實現自動構建

  1. 按右鍵GitLab工程,然後選擇Setting > Web Hooks

  2. Web Hooks頁面的URL文字框中輸入http://jenkins伺服器位址:jenkins伺服器監聽連接埠/git/notifyCommit?url=本專案的git協議地址

    例如:http://123.57.xx.xxx:8080/git/notifyCommit?url=git@code.aliyun.com:tdy218/hello-edas.git

    圖中表示的Jenkins伺服器位址為您的Jenkins伺服器的Web訪問地址,例如http://123.57.xx.xxx:8080

  3. 配置完成後,單擊Test Hook,進行測試。

配置正確後,提交變更到GitLab

如果上述步驟配置正確,這次提交會觸發一次GitLab Hook。Jenkins在接收到這個Hook後會構建您的Maven專案,並在構建結束時調用EDAS POP API指令碼觸發部署。

提交部署成功輸出的日誌資訊(Build Number > 控制台輸出)。

15:58:51 [INFO] Deploy application successfully!
15:58:51 [INFO] ------------------------------------------------------------------------
15:58:51 [INFO] BUILD SUCCESS
15:58:51 [INFO] ------------------------------------------------------------------------
15:58:51 [INFO] Total time: 24.330 s
15:58:51 [INFO] Finished at: 2018-12-25T15:58:51+08:00
15:58:51 [INFO] Final Memory: 23M/443M
15:58:51 [INFO] ------------------------------------------------------------------------
15:58:51 Finished: SUCCESS
            

如果部署失敗,可以登入EDAS控制台,在左側導覽列中單擊應用管理 > 應用列表,在應用列表頁面單擊具體應用程式名稱,進入應用詳情頁面。在左側導覽列單擊變更記錄來查看此次部署任務的執行過程。

建立多模組工程的Jenkins任務

建立多模組工程的Jenkins任務和安裝和配置Jenkins第5步基本相同,只需要調整下調用頂層Maven目標。如果工程為多模組工程,想在Jenkins中部署子模組的話,那麼需要在父模組中調用mvn clean install命令,然後在子模組中調用mvn clean package toolkit:deploy命令。以Demo工程為例,工程結構如下:

其中,detail、itemcenter、itemcenter-api為子模組,現在想部署itemcenter模組的話,那麼需要在父工程中設定一個clean install構建目標,然後在itemcenter模組中設定clean package toolkit:deploy構建目標。