使用 Azure Pipelines 為 MicroProfile 應用程式設定 CI/CD
本教學課程說明如何輕鬆地設定 Azure Pipelines 持續整合和持續部署 (CI/CD) 發行週期,將 MicroProfile Java EE 應用程式部署至適用於容器的 Azure Web 應用程式。 本教學課程中的 MicroProfile 應用程式會使用 Payara Micro 基底映像來建立 WAR 檔案。
FROM payara/micro:5.182
COPY target/*.war $DEPLOY_DIR/ROOT.war
EXPOSE 8080
您可以藉由建置 Docker 映射並將容器映射推送至 Azure Container Registry (ACR) 來啟動 Azure Pipelines 容器化程式。 您可以建立 Azure Pipelines 發行管線,並將容器映射部署至 Web 應用程式,以完成此程式。
必要條件
在 Azure 入口網站 中,建立 Azure Container Registry。
在 Azure 入口網站 中,建立適用於容器的 Azure Web 應用程式。 針對操作系統選取 [Linux],然後針對 [設定容器],選取 [快速入門] 作為 [映射來源]。
從範例 GitHub 存放庫複製並儲存複製 URL。https://github.com/Azure-Samples/microprofile-hello-azure
註冊或登入您的 Azure DevOps 組織,並建立新的 專案。
將範例 GitHub 存放庫匯入 Azure Repos:
- 從您的 Azure DevOps 項目頁面,選取 左側導覽中的 Repos 。
- 在或匯入存放庫底下,選取 [匯入]。
- 在 [複製 URL] 下,輸入您儲存的 Git 複製 URL,然後選取 [匯入]。
建立組建管線
Azure Pipelines 中的持續整合建置管線會在每次 Java EE 來源應用程式中認可時,自動執行所有建置工作。 在此範例中,Azure Pipelines 會使用 Maven 來建置 Java MicroProfile 專案。
從您的 Azure DevOps 項目頁面中,選取左側導覽中的 [管線>組建]。
選取 [新增管線]。
選取 [使用傳統編輯器來建立管線 (不使用 YAML)]。
請確定您的專案名稱和匯入的 GitHub 存放庫會出現在欄位中,然後選取 [ 繼續]。
從範本清單中選取 [Maven ],然後選取 [ 套用]。
在右窗格中,確定 [代理程式集區] 下拉式清單中會出現 [裝載的 Ubuntu 1604]。
注意
此設定可讓 Azure Pipelines 知道要使用的組建伺服器。 您也可以使用私人、自定義的組建伺服器。
若要設定管線以進行持續整合,請選取左窗格中的 [觸發程式] 索引卷標,然後選取 [啟用持續整合] 旁的複選框。
在頁面頂端,選取 [儲存和佇列] 旁的下拉式清單,然後選取 [儲存]。
建立 Docker 組建映像
Azure Pipelines 會使用 Dockerfile 搭配 Payara Micro 的基本映射來建立 Docker 映像。
選取 [工作] 索引標籤,然後選取 Agent 作業 1 旁的加號+以新增工作。
在右窗格中,從範本清單中選取 [Docker] ,然後選取 [ 新增]。
在左窗格中選取 buildAndPush,然後在右窗格中,於 [顯示名稱] 字段中輸入描述。
在 [容器存放庫] 底下,選取 [Container Registry] 欄位旁的 [新增]。
填寫 [ 新增 Docker 登錄服務連線 ] 對話框,如下所示:
欄位 值 登錄類型 選取 [Azure Container Registry]。 連線名稱 輸入連接的名稱 Azure 訂用帳戶 從下拉式清單中選取您的 Azure 訂用帳戶,並視需要選取 [ 授權]。 Azure Container Registry 從下拉式清單中選取您的 Azure Container Registry 名稱。 選取 [確定]。
注意
如果您使用 Docker Hub 或其他登錄,請選取 [Docker Hub] 或 [其他登錄],而不是 [登錄類型] 旁的 [Azure Container Registry]。 然後提供容器登錄的認證和連線資訊。
在 [命令] 下,從 [命令] 下拉式清單中選取 [組建]。
選取 Dockerfile 字段旁的省略號 ...,流覽至 GitHub 存放庫並選取 Dockerfile,然後選取 [確定]。
在 [ 標記] 底下,於 新行輸入 latest 。
在頁面頂端,選取 [儲存和佇列] 旁的下拉式清單,然後選取 [儲存]。
將 Docker 映像推送至 ACR
Azure Pipelines 會將 Docker 映像推送至您的 Azure Container Registry,並使用它以容器化 Java Web 應用程式的形式執行 MicroProfile API 應用程式。
由於您在 Azure Pipelines 中使用 Docker,請重複建立 Docker 組建映射底下的步驟,以建立另一個 Docker 範本。 這次,請在 [命令] 下拉式清單中選取 [推送]。
選取 [儲存和佇列] 旁的下拉式清單,然後選取 [儲存和佇列]。
在 [執行管線] 彈出視窗中,確定 [代理程式集區] 底下已選取 [託管 Ubuntu 1604],然後選取 [儲存並執行]。
建置完成後,您可以在 [建置] 頁面上選取超連結,以確認組建成功,並查看其他詳細數據。
建立發行管線
Azure Pipelines 持續發行管線會在組建成功時自動觸發部署至目標環境,例如 Azure。 您可以為開發、測試、預備或生產環境等環境建立發行管線。
在 Azure DevOps 項目頁面上,選取左側導覽中的 [管線>發行]。
選取 [新增管線]。
選取 [部署 Java 應用程式] 以在範本清單中 Azure App 服務,然後選取 [套用]。
在彈出視窗中,將 [階段 1] 變更為 [開發]、[測試]、[預備] 或 [生產] 等階段名稱,然後關閉視窗。
在 左窗格中的 [成品] 下,選取 [ 新增 ] 將組建管線中的成品鏈接至發行管線。
在右窗格中,選取 [來源][建置管線] 下拉式清單中的組建管線,然後選取 [新增]。
選取生產階段中的超連結,以檢視階段工作。
在右窗格中,填寫表單,如下所示:
欄位 值 Azure 訂用帳戶 從下拉式清單中選取您的 Azure 訂用帳戶。 應用程式類型 從下拉式清單中選取 [適用於容器的 Web 應用程式] [Linux ]。 App Service 名稱 從下拉式清單中選取您的 ACR 實例。 登錄或命名空間 在欄位中輸入您的 ACR 名稱。 例如,輸入 mymicroprofileregistry.azure.io。 存放庫 輸入包含 Docker 映像的存放庫。 在左窗格中,選取 [部署戰爭] 以 Azure App 服務,然後在右窗格中,於 [卷標] 字段中輸入最新的標籤。
在左窗格中,選取 [在代理程式上執行],然後在右窗格中,從 [代理程式集區] 下拉式清單中選取 [託管 Ubuntu 1604]。
設定環境變數
新增並定義環境變數,以在部署期間連線到容器登錄。
選取 [ 變數] 索引標籤,然後選取 [新增 ],為您的容器登錄 URL、使用者名稱和密碼新增下列變數。
名稱 值 registry.url 輸入您的容器登錄 URL。 例如:https://mymicroprofileregistry.azure.io registry.username 輸入登錄的用戶名稱。 registry.password 輸入登錄的密碼。 如需安全性,請選取鎖定圖示以隱藏密碼值。 在 [工作] 索引標籤上,選取 [部署戰爭] 以在左窗格中 Azure App 服務。
在右窗格中,展開 [應用程式和組態設定],然後選取 [應用程式設定] 字段旁邊的省略號 ... 。
在 [ 應用程式設定] 彈出視窗中,選取 [新增 ] 以定義並指派應用程式設定變數:
名稱 值 DOCKER_REGISTRY_SERVER_URL $(registry.url) DOCKER_REGISTRY_SERVER_USERNAME $(registry.username) DOCKER_REGISTRY_SERVER_PASSWORD $(registry.password) 選取 [確定]。
設定持續部署
若要啟用持續部署:
在 [管線] 索引標籤的 [成品] 底下,選取組建成品中的閃電圖示。
在右窗格中,將 [ 持續部署觸發程式 ] 設定為 [已啟用]。
選取右上方的 [ 儲存 ],然後再次選取 [ 儲存 ]。
部署Java應用程式
現在您已啟用 CI/CD,修改原始程式碼會自動建立並執行組建和發行。 您也可以手動建立和執行版本,如下所示:
在發行管線頁面上的右上方,選取 [ 建立發行 ]。
在 [ 建立新版本 ] 頁面上,選取 [階段] 底下的 階段名稱,讓觸發程式從自動化變更為手動。
選取 建立。
選取發行名稱、將滑鼠停留或選取階段,然後選取 [ 部署]。
測試 Java Web 應用程式
部署成功完成之後,請測試您的 Web 應用程式。
從 Azure 入口網站 複製 Web 應用程式 URL。
在網頁瀏覽器中輸入 URL 以執行您的應用程式。 網頁應該會顯示 Hello Azure!