全部產品
Search
文件中心

Serverless App Engine:使用Jenkins建立Java應用的持續整合

更新時間:Apr 16, 2025

應用在迭代升級過程中,需要持續整合與持續部署。使用Jenkins為SAE應用的構建持續整合(CI)環境。

前提條件

背景資訊

您可以使用Jenkins構建SAE應用的持續整合方案。本文適用於對以下語言或工具有一定瞭解的開發人員。

工具

說明

Maven

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

Jenkins

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

GitLab

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

步驟一:設定項目

修改Maven專案配置,添加toolkit-maven-plugin及應用部署資訊。具體操作,請參見通過Maven外掛程式自動部署應用

說明

修改專案配置後,建議您在本地使用Maven構建驗證配置是否正確。

步驟二:配置Jenkins

  1. 在Jenkins控制台的功能表列中選擇Manage Jenkins > Manage Plugins,安裝Git和GitLab外掛程式。

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

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

    安裝和配置 Jenkins

  2. 在Jenkins控制台的功能表列中選擇Manage Jenkins > Global Tool Configuration,設定Maven版本名稱並配置路徑,單擊儲存

     Jenkins 控制台設定Maven

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

    1. 在Jenkins伺服器產生SSH RSA金鑰組。

      EDAS在 Jenkins 伺服器運行 Jenkins 軟體的使用者下,產生 SSH RSA 金鑰組

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

      EDAS使用Jenkins在gitlab導公開金鑰1

步驟三:建立Jenkins任務

  1. 在Jenkins首頁左側導覽列中單擊建立Item,在建立任務介面輸入任務名稱,並選擇Freestyle project,單擊確定,配置任務資訊。

    EDAS使用Jenkins整合之建立專案

  2. 單擊源碼管理,在源碼管理頁簽中選擇Git,並設定相關參數。

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

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

      重要

      請確保您的SSH RSA公匙已添加到該Git專案所在的GitLab中,否則將會報錯。

  3. 單擊構建觸發器,在構建觸發器頁簽選中GitHub hook trigger for GITScm polling

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

  5. 單擊構建,在構建頁簽單擊增加構建步驟,在下拉式清單中選擇Invoke top-level Maven targets

  6. Invoke top-level Maven targets地區設定Maven VersionGoals。如果您想部署多模組工程,請參見(可選)建立多模組工程的Jenkins任務

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

    • Goals:輸入mvn clean package toolkit:deploy -Dtoolkit_profile=toolkit_profile.yaml -Dtoolkit_package=toolkit_package.yaml -Dtoolkit_deploy=toolkit_deploy.yaml (如有其他參數,請根據實際情況輸入)。

    SAE

    說明

    Maven配置完成後,在步驟五:提交變更到GitLab步驟中便可通過POP API方式觸發應用部署。

步驟四:配置GitLab的Web Hook

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

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

    圖中表示的Jenkins伺服器位址為您的Jenkins伺服器的Web訪問地址如192.168.XX.XX:8080

  3. 配置完成後,單擊Test Hook,測試組態結果。

    配置 Gitlab 的 Web Hook結果

步驟五:提交變更到GitLab

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

說明

構建的Maven專案中配置了通過SAE 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
            

如果部署失敗,您可以登入SAE控制台,查看此次部署任務的執行過程。具體步驟,請參見查看變更記錄

(可選)建立多模組工程的Jenkins任務

如果您需要建立多模組工程的Jenkins任務,您可以參考以下內容設定。

建立多模組工程的Jenkins任務和步驟三:建立Jenkins任務的第5步基本相同,只需要修改調用頂層Maven目標。如果工程為多模組工程,想在Jenkins中部署子模組的話,那麼需要在父模組中調用mvn clean install命令,然後在子模組中調用mvn clean package toolkit:deploy -Dtoolkit_profile=toolkit_profile.yaml -Dtoolkit_package=toolkit_package.yaml -Dtoolkit_deploy=toolkit_deploy.yaml命令。參數的具體說明,請參見通過Maven外掛程式自動部署應用

Demo工程為例的工程結構如下。

sh-3.2# tree -L 1 carshop
carshop
├── detail
├── itemcenter
├── itemcenter-api
└── pom.xml            

其中,detail、itemcenter、itemcenter-api為子模組,如果您想部署itemcenter模組的話,需要在父工程中設定一個clean install構建目標,然後在itemcenter模組中設定clean package toolkit:deploy -Dtoolkit_profile=toolkit_profile.yaml -Dtoolkit_package=toolkit_package.yaml -Dtoolkit_deploy=toolkit_deploy.yaml構建目標。

SAE