###### tags: `Workshop` `Azure DevOps` `Azure Pipeline` `Java` `Container` # Azure DevOps Workshop (Java Container) In this workshop you would learn how to accerlate developing containerlized Java web. - [Sample Code](https://github.com/callicoder/spring-boot-websocket-chat-demo.git):The Sample of chat room which use websocket and using Java container. - [Azure DevOps Service](https://dev.azure.com/) ## Update ### 2021/03 * 建立組織時,地區不要選擇<span style="color:red"> 東亞 (East Asia)</span> **[→ 宣佈即將推出的 Azure DevOps 組織的變更,位於東亞](https://docs.microsoft.com/zh-tw/azure/devops/migrate/migration?view=azure-devops)** ## 1/ How DevOps Admin manage Azure DevOps Service - 介紹組織/專案概念 - Organization Setting - User:添加人員至組織中 - Billing + Azure DevOps Pricing:[Azure DevOps 的定價](https://azure.microsoft.com/zh-tw/pricing/details/devops/azure-devops-services/) - Auditing:輸出 log 資料 - Global Notification:設定全域的通知訊息 - Azure Active Directory:連結到現有的 AAD - Create Project - Work Item Process - [Agile](https://docs.microsoft.com/en-us/azure/devops/boards/work-items/guidance/agile-process?view=azure-devops)([User Story Field](https://docs.microsoft.com/en-us/azure/devops/boards/work-items/guidance/agile-process-workflow?view=azure-devops)) - [Scrum](https://docs.microsoft.com/en-us/azure/devops/boards/work-items/guidance/scrum-process?view=azure-devops)([PBI Field](https://docs.microsoft.com/en-us/azure/devops/boards/work-items/guidance/scrum-process-workflow?view=azure-devops )) - 選擇 Scrum ## 2/ Scrum Planning and Portfolio Management with Azure Boards - 邀請成員加入專案  - 使用 Boards 建立 Feature task 和 Product Backlog Item - 點選到 Azure Board - 在 Feature 視角 建立 Feature task - 在 PBI 視角 建立 PBI task - PBI:<span style="color:blue">**完成 Azure DevOps Workshop 練習**</span> - PBI:<span style="color:blue">**[練習] 首頁標題**</span> - 切換到 Backlogs 決定 PBI 的 iteration  - 使用 Sprints 來查看目前週期的所有事項 - 根據分別的 Product Backlog Item 定義 Task - 在 <span style="color:blue">**完成 Azure DevOps Workshop 練習**</span> 項目下新增: - <span style="color:orange">了解 Azure DevOps 基本知識</span> - <span style="color:orange">練習 Azure Board</span> - <span style="color:orange">push 範例程式碼</span> - <span style="color:orange">在 Azure 上建立 ACR</span> - <span style="color:orange">建置 CI pipeline</span> - <span style="color:orange">在 Azure 上建立 web app service</span> - <span style="color:orange">建置 CD pipeline</span> - <span style="color:orange">實作 Dashboard</span> - 在 <span style="color:blue">**[練習] 首頁標題**</span> 項目下新增 - <span style="color:orange">修改首頁標題為今日日期</span> - <span style="color:orange">撰寫測試案例</span> - 改變 Task 狀態 - Queries : query 出所有在 active 狀態的 Task ## 3/ Continuous Integration - 將 Sample Code 上傳至 Azure Repo - 到 [Azure Portal](https://ms.portal.azure.com/#home) 上建立 ACR 資源(SKU 使用 standard)  - ACR 啟用 admin account  - 為何要啟用 admin account:每個 ACR 都包含一個管理使用者帳戶,且預設為停用,系統管理員帳戶具有登錄的完整許可權,在某些案例中,將 image 從 ACR 部署至某些 Azure 服務時,需要系統管理員帳戶,如 Azure App Service for container - 點選至 Azure Pipeline 建立 CI 流程 - 使用 Docker container template  - 在第一步添加 **bash** 流程  - 選擇 inline 並填入`mvn clean package`  - 修改 **Build an image**,選擇先前建立的ACR  - 修改 **Push an image**,選擇先前建立的 ACR  - <span style="color:red">**若不是使用 Azure Servcie,可參考 [Service Connection 方式設定](https://docs.microsoft.com/en-us/azure/devops/pipelines/library/service-endpoints?view=azure-devops&tabs=yaml)**</span> - 選擇 **Ubuntu 1604** 機器  Refer to : [MS hosted agent list](https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops&tabs=yaml#software) - 設定 master 更新時,自動啟動 CI 流程  ## 4/ Continuous Deployment - 建立 **App Service** 資源 - 選擇 sku 為 S1 - 選擇 容器 - 選擇 已建立的 ACR - 連結到 *http://{your-app-service-name}.azurewebsites.net* 確認網站正常顯示  - 回到 Azure DevOps 頁面,點選 **Pipeline** > **Release** > **Create New Pipeline** - 選擇 **Empty Job**  - 修改 Stage 名稱  - 修改 Release Pipeline 名稱  - 點選 **Add an artifact** 添加來源  - 選擇 **Azure Container Registry**,選擇先前建立過的 ACR  - 記下 source alias 之後的步驟會使用到  - 練習多添加幾個 Stage - 修改 Stage 內容  - 點選 **+** 來新增 task  - 添加 **Bash** task,選擇 inline 並用以下指令覆蓋  ``` echo {ACR Login Server}/{ACR Repositories Name}:$(RELEASE.ARTIFACTS.{source alias}.BUILDNUMBER) ``` - 添加 **Azure Web App for Containers** task  - 修改 **Azure Web App for Containers** task  - 將 Image Name 修改為以下 ``` {ACR Login Server}/{ACR Repositories Name}:$(RELEASE.ARTIFACTS.{source alias}.BUILDNUMBER) ``` - Variable 的使用:根據不同的 stage 置換不同的 variable 內容 - 點選 **variable**  - 分別填入 ACR、REPO 和 IMAGE_TAG 及其對應的值  Scope 可以選擇提供給哪個 Stage 使用 - 回到 Task,分別將 **Bash** 內的 Scipt 及 **Azure Web App for Containers** 的 Image Name 的值做修改 - Bash  - Azure Web App for Containers  - 設定當 ACR 有新的 image 時,自動啟動部屬流程  - 將 Continuous deployment trigger **enable**  ## 5/ 實際開發 - 回到 **Repo** - 建立分支  - 將分支命名,並連結先前建立的 PBI:<span style="color:blue">**[練習]首頁標題**</span>  - 在 dev 中索引到 *src/main/resources/static/index.html* - 點選 **Edit** ,修改第 15 行  - Commit 時綁定 Task:<span style="color:orange">**[練習]修改首頁標題為今日日期**</span>  - 此時不會啟動 build,因為是 dev 更新而不是 master - 選擇 **repo** > **pull request** > **New pull request**  - 確認資料正確,**Reviewers** 可以先填寫自己  - 點選 **Approve**,然後 **Complete**  - 此時 CI/CD 流程已啟動 ## 6/ 撰寫測試案例 - 點選 **Test Plans** > **New Test Plan**  - 填寫細節  - 點選 **New Test Case**  - 填寫 **Test Case**  - 連結 PBI:<span style="color:blue">**[練習]首頁標題**</span>,Add Link > New Exist Item,連結種類為 Tests  - 再新增一個為 Related,連結 <span style="color:orange">Task:撰寫測試案例</span>  - 執行 Test Case  - 記錄錯誤,填寫 bug 單   ## 7/ 修改 bug - 建立分支 - 修改 > 綁定 bug - 建立 pull request ## FAQ - 遇到 web socket 無法連線問題,改用 http,不要用 https - 修改完但沒有變更,用無痕視窗再開一次 ## Reference - [Azur Container Instance Admin Account](https://docs.microsoft.com/zh-tw/azure/container-registry/container-registry-authentication#admin-account) - [How to Use Variable in Bash](https://docs.microsoft.com/zh-tw/azure/devops/pipelines/tasks/utility/bash?view=azure-devops&viewFallbackFrom=tfs-2017) - [Getting the latest image tag from ACR Repository](https://stackoverflow.com/questions/59322742/getting-the-latest-image-tag-from-acr-repository) - [如何從 Azure Pipelines 的 Task 設定一個變數給下一個 Task 使用 ](https://blog.miniasp.com/post/2020/02/08/Set-variables-in-scripts-in-Azure-Pipelines) - [Create test plans and test suites](https://docs.microsoft.com/en-us/azure/devops/test/create-a-test-plan?view=azure-devops) - [Test Plan / Parameters : Repeat a test with different data](https://docs.microsoft.com/en-us/azure/devops/test/repeat-test-with-different-data?view=azure-devops) - [Test Plan / Configuration : Test different configurations](https://docs.microsoft.com/en-us/azure/devops/test/test-different-configurations?view=azure-devops)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up