【 Cloud 】透過 GitHub Action 部署程式到 Azure App Service 之 Production 與 Slot 功能所設定的 Stage 環境 ( Node.js )

【 Cloud 】透過 GitHub Action 部署程式到 Azure App Service 之 Production 與 Slot 功能所設定的 Stage 環境 ( Node.js )
Photo by Pietro De Grandi / Unsplash

內容

  • 前置準備作業
  • 建立 Azure App Service 與設定
  • 設定 GitHub Secret
  • 部署程式到 Azure App Service 的 Production 環境
  • 驗證 Production 環境
  • 修改 GitHub Secret
  • 部署程式到 Azure App Service 的 Stage 環境
  • 驗證 Stage 環境
  • Production 與 Stage 環境進行互換

前置準備作業

建立 Azure App Service 與設定

Step 1. 選擇 Azure App Service 服務

  • 於上方搜尋框輸入 app service > 再點選 App Services 的搜尋結果

---2023-09-05---2.05.05

  • 點選 + Create > 再點選 + Web App

---2023-09-05---2.08.20

  • 輸入相關資訊
    ---2023-09-05---2.12.23

    • Subscription 欄位請選擇所要使用的訂閱。
    • Resource group 欄位請輸入可識別的名稱,本範例使用 slot-sample
    • Name 欄位請輸入唯一且可識別的名稱,本範例使用 slot-sample
    • Publish 欄位請選擇 Code
    • Runtime stack 欄位請選擇 Node 18 LTS
    • Operating System 欄位請選擇 Linux
    • Location 欄位請選擇所要使用服務的所在位置。
    • Linux Plan 欄位請選擇 Standard (含) 以上的規格。
    • 以上資訊輸入完成後點選 Review + create
      ---2023-09-05---2.18.17
  • 點選 Create

---2023-09-05---2.22.26

  • 點選 Go to resource

---2023-09-05---2.24.04


Step 2. 新增 Production 環境的 Config

  • 點選左側的 Configuration > 再點選 + New application setting

---2023-09-05---2.27.20

  • 輸入相關資訊
    ---2023-09-05---2.29.46

    • Name 欄位請輸入 info
      • 程式中會使用到此 Key。
    • Value 欄位請輸入 Version: V1
    • 以上資訊輸入完成後,點選 OK
      ---2023-09-05---2.30.51
  • 點選上方的 Save

---2023-09-05---2.32.12

  • 點選 Continue

---2023-09-05---2.33.12

  • 建立完成

---2023-09-05---2.34.14


Step 3. 建立 Stage 環境

  • 點選左側的 Deployment slots > 再點選上方的 + Add Slot

---2023-09-05---2.36.08

  • 輸入相關資訊
    ---2023-09-05---2.37.55

    • Name 欄位請輸入唯一且可識別的名稱,本範例使用 stage
    • 以上資訊輸入完成後,點選 Add
      ---2023-09-05---2.39.28
  • 建立完成

---2023-09-05---2.42.49


Step 4. 新增 Stage 環境的 Config

  • 點選所建立的 slot,本範例為 slot-sample-stage

---2023-09-05---2.43.50

  • 點選左側的 Configuration > 再點選 + New application setting

---2023-09-05---2.47.16

  • 輸入相關資訊
    ---2023-09-05---2.48.41

    • Name 欄位請輸入 info
      • 程式中會使用到此 Key。
    • Value 欄位請輸入 Version: V2
    • 以上資訊輸入完成後,點選 OK
      ---2023-09-05---2.49.27
  • 點選上方的 Save

---2023-09-05---2.50.19

  • 點選 Continue

---2023-09-05---2.51.09

  • 建立完成

---2023-09-05---2.51.50

設定 GitHub Secret

Step 1. 取得 Production 的 Publish profile

  • 回到所建立的 Azure App Service 的 Overview > 點選上方的 Download publish profile

---2023-09-05---2.55.44


Step 2. 設定 GitHub Action 部署程式到 Azure App Service 中所使用的 Publish profile

  • 點選 GitHub 上方的 Settings > 再點選 Secrets and variables 中的 Actions

---2023-09-05---3.06.14

  • 點選 New repository secret

---2023-09-05---3.07.34

  • 輸入相關資訊
    ---2023-09-05---3.08.41

    • Name 欄位請輸入 AZURE_WEBAPP_PUBLISH_PROFILE
    • Secret 欄位請輸入 設定 GitHub Secret 段落中 Step 1 所下載的 Publish profile 檔案的內容
    • 以上資訊輸入完成後,點選 Add secret
      ---2023-09-05---3.12.00
  • 建立完成

---2023-09-05---3.13.50

部署程式到 Azure App Service 的 Production 環境

Step 1. 下載範例程式


Step 2. 建立 GitHub Action 要使用的 YAML 檔

  • 在範例程式中的根目錄新增 .github/workflows/workflow.yml 檔案並輸入以下的內容
    • 請修改第 6 行後面的 APP-SERVICE-NAME建立 Azure App Service 與設定 段落中 Step 1 所使用的名稱。
    • 請修改第 7 行後面的 APP-SERVICE-SLOG-NAME建立 Azure App Service 與設定 段落中 Step 3 所使用的名稱。
    • 程式目錄結構
    .
    └── Azure_App_Service_Slot
        ├── .github
        |   └── workflows
        |       └── workflow.yml
        ├── index.js
        ├── memo.md
        ├── package-lock.json
        └── package.json
    

Step 3. 將程式 Push 到 GitHub 並查看 GitHub Action 的狀態

  • 執行 GitHub Action 中

---2023-09-05---3.28.04

  • 執行完成

---2023-09-05---3.28.42

驗證 Production 環境

Step 1. 開啟 Production 的頁面

  • 回到所建立的 Azure App Service 的 Overview > 點選上方的 Browser

---2023-09-05---3.33.35


Step 2. 出現 Production 所設定的 V1 字樣

---2023-09-05---3.34.51

修改 GitHub Secret

Step 1. 取得 Stage 的 Publish profile

  • 回到所建立 Stage 的 Overview > 點選上方的 Download publish profile

---2023-09-05---3.42.01


Step 2. 修改 GitHub Action 部署程式到 Azure App Service 中所使用的 Publish profile

  • 點選 GitHub 上方的 Settings > 再點選 Secrets and variables 中的 Actions

---2023-09-05---3.06.14

  • 點選 AZURE_WEBAPP_PUBLISH_PROFILE 旁的畫筆

---2023-09-05---3.44.53

  • 輸入相關資訊
    ---2023-09-05---3.46.21

    • Name 欄位請輸入 AZURE_WEBAPP_PUBLISH_PROFILE
    • Value 欄位請輸入 修改 GitHub Secret 段落中 Step 1 所下載的 Publish profile 檔案的內容
    • 以上資訊輸入完成後,點選 Update secret
      ---2023-09-05---3.46.41
  • 修改完成

---2023-09-05---3.47.33

部署程式到 Azure App Service 的 Stage 環境

Step 1. 修改 workflow.yml

  • 開啟 .github/workflows/workflow.yml 檔案並將第 30 行前面的 # 刪除
    • 請修改第 6 行後面的 APP-SERVICE-NAME建立 Azure App Service 與設定 段落中 Step 1 所使用的名稱。
    • 請修改第 7 行後面的 APP-SERVICE-SLOG-NAME建立 Azure App Service 與設定 段落中 Step 3 所使用的名稱。

Step 2. 將程式 Push 到 GitHub 並查看 GitHub Action 的狀態

  • 執行 GitHub Action 中

---2023-09-05---3.49.32

  • 執行完成

---2023-09-05---3.49.56

驗證 Stage 環境

Step 1. 開啟 Stage 的頁面

  • 回到所建立 Stage 的 Overview > 點選上方的 Browser

---2023-09-05---3.51.04


Step 2. 出現 Stage 所設定的 V2 字樣

---2023-09-05---3.52.19

Production 與 Stage 環境進行互換

Step 1. 環境互換

  • 點選左側的 Deployment slots > 再點選 Swap

---2023-09-05---8.30.14

  • 輸入相關資訊

    • Source 欄位請選擇 slot-sample-stage
    • Target 欄位請選擇 slot-sample
    • 以上欄位填寫完成後,請點選 Swap ( 要花一些時間進行交換 )
      ---2023-09-05---8.32.52
  • 交換完成

---2023-09-05---8.38.56


Step 2. 驗證 Production 環境是否為之前的 Stage 環境

  • 開啟 Production 的頁面
    • 回到所建立的 Azure App Service 的 Overview > 點選上方的 Browser

---2023-09-05---3.33.35

  • 出現交換前 Stage 環境所設定的 V2 字樣

---2023-09-05---8.43.06


Step 3. 驗證 Stage 環境是否為之前的 Production 環境

  • 開啟 Stage 的頁面
    • 回到所建立 Slot 的 Overview > 點選上方的 Browser

---2023-09-05---3.51.04

  • 出現交換前 Production 環境所設定的 V1 字樣

---2023-09-05---8.44.56

Sample Code

GitHub

List of blogs