快速入門:使用 GitHub Actions 連線至 Azure PostgreSQL
適用於:適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器
重要
適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器位於淘汰路徑上。 強烈建議您升級至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器。 如需移轉至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的詳細資訊,請參閱單一伺服器適用於 PostgreSQL 的 Azure 資料庫發生什麼情況?
藉由使用工作流程將資料庫更新部署至適用於 PostgreSQL 的 Azure 資料庫,來開始使用 GitHub Actions。
必要條件
您需要:
- 具有有效訂用帳戶的 Azure 帳戶。 免費建立帳戶。
- 具有範例資料 (
data.sql
) 的 GitHub 存放庫。 如果您沒有 GitHub 帳戶,請免費註冊。 - 適用於 PostgreSQL 的 Azure 資料庫伺服器。
工作流程檔案概觀
GitHub Actions 工作流程是由您存放庫內 /.github/workflows/
路徑中的 YAML (.yml) 檔案所定義的。 此定義包含組成工作流程的各種步驟與參數。
檔案內有兩個區段:
區段 | 工作 |
---|---|
驗證 | 1. 產生部署認證。 |
部署 | 1.部署資料庫。 |
產生部署認證
使用 Azure CLI 中的 az ad sp create-for-rbac 命令來建立服務主體。 請使用 Azure 入口網站中的 Azure Cloud Shell,或選取 [試試看] 按鈕來執行此命令。
az ad sp create-for-rbac --name "myML" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
--sdk-auth
在上述範例中,將預留位置換成為您的訂用帳戶識別碼、資源群組名稱和應用程式名稱。 輸出是一個 JSON 物件,內有角色指派認證可讓您存取 App Service 應用程式,如下所示。 複製此 JSON 物件以供後續使用。
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
複製 PostgreSQL 連接字串
在 Azure 入口網站中,移至適用於 PostgreSQL 的 Azure 資料庫伺服器,然後開啟 [設定]>[連接字串]。 複製 ADO.NET 連接字串。 取代 your_database
和 your_password
的預留位置值。 連接字串看起來像這樣。
重要
- 若為單一伺服器,請使用
user=adminusername@servername
。 請注意,@servername
是必要項目。 - 若為彈性伺服器,請使用不含
@servername
的user= adminusername
。
psql host={servername.postgres.database.azure.com} port=5432 dbname={your_database} user={adminusername} password={your_database_password} sslmode=require
您可以使用連接字串作為 GitHub 秘密。
設定 GitHub 祕密
在 GitHub (英文) 中,前往您的存放庫。
移至導覽功能表中的 [ 設定 ]。
選取 [安全性] > [祕密和變數] > [動作]。
選取 [新增存放庫祕密]。
將得自 Azure CLI 命令的整個 JSON 輸出貼到祕密的 [值] 欄位中。 將祕密命名為
AZURE_CREDENTIALS
。選取 [新增祕密]。
新增您的工作流程
移至 GitHub 存放庫的 [動作]。
選取 [自行設定工作流程]。
刪除工作流程檔案
on:
區段之後的所有內容。 例如,剩餘的工作流程看起來可能像這樣。name: CI on: push: branches: [ main ] pull_request: branches: [ main ]
重新命名工作流程
PostgreSQL for GitHub Actions
,並新增簽出和登入動作。 這些動作會簽出您的網站程式碼,並使用您稍早建立) 的 GitHub 秘密 (azure 進行驗證。name: PostgreSQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: azure/login@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }}
使用 Azure PostgreSQL 的「部署」動作來連線到您的 PostgreSQL 執行個體。 以伺服器的名稱取代
POSTGRESQL_SERVER_NAME
。 在存放庫的根層級中,您應該會有名為data.sql
的 PostgreSQL 資料檔案。- uses: azure/postgresql@v1 with: connection-string: ${{ secrets.AZURE_POSTGRESQL_CONNECTION_STRING }} server-name: POSTGRESQL_SERVER_NAME plsql-file: './data.sql'
將動作新增至 Azure 登出,完成您的工作流程。 以下為完成的工作流程。 檔案會出現在存放庫的
.github/workflows
資料夾中。name: PostgreSQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: azure/login@v1 with: client-id: ${{ secrets.AZURE_CREDENTIALS }} - uses: azure/postgresql@v1 with: server-name: POSTGRESQL_SERVER_NAME connection-string: ${{ secrets.AZURE_POSTGRESQL_CONNECTION_STRING }} plsql-file: './data.sql' # Azure logout - name: logout run: | az logout
檢閱您的部署
清除資源
當您不再需要 Azure PostgreSQL 資料庫和存放庫時,請刪除資源群組和 GitHub 存放庫,以清除您所部署的資源。