【 Cloud 】透過 GitHub Action 部署程式到 Azure App Service 之 Production 與 Slot 功能所設定的 Stage 環境 ( Node.js )
內容
- 前置準備作業
- 建立 Azure App Service 與設定
- 設定 GitHub Secret
- 部署程式到 Azure App Service 的 Production 環境
- 驗證 Production 環境
- 修改 GitHub Secret
- 部署程式到 Azure App Service 的 Stage 環境
- 驗證 Stage 環境
- Production 與 Stage 環境進行互換
前置準備作業
- 已建立 Azure 帳號並能正常登入
- 已有 GitHub 帳號並已建立一個新的 Repository
- 已於電腦端安裝 IDE,本範例使用 Visual Studio
建立 Azure App Service 與設定
Step 1. 選擇 Azure App Service 服務
- 於上方搜尋框輸入
app service> 再點選App Services的搜尋結果

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

-
輸入相關資訊

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

-
點選
Create

- 點選
Go to resource

Step 2. 新增 Production 環境的 Config
- 點選左側的
Configuration> 再點選+ New application setting

-
輸入相關資訊

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

-
點選上方的
Save

- 點選
Continue

- 建立完成

Step 3. 建立 Stage 環境
- 點選左側的
Deployment slots> 再點選上方的+ Add Slot

-
輸入相關資訊

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

-
建立完成

Step 4. 新增 Stage 環境的 Config
- 點選所建立的 slot,本範例為
slot-sample-stage。

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

-
輸入相關資訊

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

-
點選上方的
Save

- 點選
Continue

- 建立完成

設定 GitHub Secret
Step 1. 取得 Production 的 Publish profile
- 回到所建立的 Azure App Service 的
Overview> 點選上方的Download publish profile

Step 2. 設定 GitHub Action 部署程式到 Azure App Service 中所使用的 Publish profile
- 點選 GitHub 上方的
Settings> 再點選Secrets and variables中的Actions

- 點選
New repository secret

-
輸入相關資訊

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

-
建立完成

部署程式到 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 - 請修改第 6 行後面的
Step 3. 將程式 Push 到 GitHub 並查看 GitHub Action 的狀態
- 執行 GitHub Action 中

- 執行完成

驗證 Production 環境
Step 1. 開啟 Production 的頁面
- 回到所建立的 Azure App Service 的
Overview> 點選上方的Browser

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

修改 GitHub Secret
Step 1. 取得 Stage 的 Publish profile
- 回到所建立 Stage 的
Overview> 點選上方的Download publish profile

Step 2. 修改 GitHub Action 部署程式到 Azure App Service 中所使用的 Publish profile
- 點選 GitHub 上方的
Settings> 再點選Secrets and variables中的Actions

- 點選
AZURE_WEBAPP_PUBLISH_PROFILE旁的畫筆

-
輸入相關資訊

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

-
修改完成

部署程式到 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所使用的名稱。
- 請修改第 6 行後面的
Step 2. 將程式 Push 到 GitHub 並查看 GitHub Action 的狀態
- 執行 GitHub Action 中

- 執行完成

驗證 Stage 環境
Step 1. 開啟 Stage 的頁面
- 回到所建立 Stage 的
Overview> 點選上方的Browser

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

Production 與 Stage 環境進行互換
Step 1. 環境互換
- 點選左側的
Deployment slots> 再點選Swap

-
輸入相關資訊
Source欄位請選擇slot-sample-stageTarget欄位請選擇slot-sample- 以上欄位填寫完成後,請點選
Swap( 要花一些時間進行交換 )

-
交換完成

Step 2. 驗證 Production 環境是否為之前的 Stage 環境
- 開啟 Production 的頁面
- 回到所建立的 Azure App Service 的
Overview> 點選上方的Browser
- 回到所建立的 Azure App Service 的

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

Step 3. 驗證 Stage 環境是否為之前的 Production 環境
- 開啟 Stage 的頁面
- 回到所建立 Slot 的
Overview> 點選上方的Browser
- 回到所建立 Slot 的

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

Sample Code
GitHub
List of blogs
