快速入門:使用 GitHub Actions 連線到 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器

適用於:適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器

重要

適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器位於淘汰路徑上。 強烈建議您升級至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器。 如需移轉至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的詳細資訊,請參閱單一伺服器 適用於 PostgreSQL 的 Azure 資料庫 發生什麼事?

使用工作流程將資料庫更新部署至 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器,開始使用 GitHub Actions。

必要條件

您需要:

工作流程檔案概觀

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> \
                            --json-auth

參數 --json-auth 可在 Azure CLI 版本 >= 2.51.0 中使用。 此版本之前的版本會搭配取代警告使用 --sdk-auth

在上述範例中,將預留位置換成為您的訂用帳戶識別碼、資源群組名稱和應用程式名稱。 輸出是一個 JSON 物件,內有角色指派認證可讓您存取 App Service 應用程式,如下所示。 複製此 JSON 物件以供後續使用。

  {
    "clientId": "<GUID>",
    "clientSecret": "<GUID>",
    "subscriptionId": "<GUID>",
    "tenantId": "<GUID>",
    (...)
  }

複製 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器 連接字串

在 Azure 入口網站 中,移至您的 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例,然後開啟 設定> 連線 ion 字串。 複製 ADO.NET 連接字串。 取代 your_databaseyour_password 的預留位置值。 連接字串 看起來會像這樣。

重要

  • 針對 適用於 PostgreSQL 的 Azure 資料庫 單一伺服器,請使用 user=adminusername@servername@servername請注意,這是必要專案。
  • 針對 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器,請使用 user= adminusername 不含 @servername
psql host={servername.postgres.database.azure.com} port=5432 dbname={your_database} user={adminusername} password={your_database_password} sslmode=require

您可以使用 連接字串 作為 GitHub 秘密。

設定 GitHub 祕密

  1. GitHub (英文) 中,前往您的存放庫。

  2. 移至導覽功能表中的 [設定]

  3. 選取 [安全性] > [祕密和變數] > [動作]。

    新增祕密的螢幕擷取畫面

  4. 選取 [新增存放庫祕密]。

  5. 將得自 Azure CLI 命令的整個 JSON 輸出貼到祕密的 [值] 欄位中。 將祕密命名為 AZURE_CREDENTIALS

  6. 選取 [新增祕密]。

新增您的工作流程

  1. 移至 GitHub 存放庫的 [動作]。

  2. 選取 [自行設定工作流程]。

  3. 刪除工作流程檔案 on: 區段之後的所有內容。 例如,剩餘的工作流程看起來可能像這樣。

    name: CI
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
  4. 重新命名您的工作流程 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 }}
    
  5. 使用 Azure PostgreSQL 部署動作來連線到 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例。 將取代 POSTGRESQL_SERVER_NAME 為您的伺服器名稱。 您應該在存放庫根層級有名為 data.sql 的 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器資料檔。

     - uses: azure/postgresql@v1
       with:
        connection-string: ${{ secrets.AZURE_POSTGRESQL_CONNECTION_STRING }}
        server-name: POSTGRESQL_SERVER_NAME
        plsql-file: './data.sql'
    
  6. 新增動作以註銷 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
    

檢閱您的部署

  1. 移至 GitHub 存放庫的 [動作]。

  2. 開啟第一個結果,以查看工作流程的執行詳細記錄。

    GitHub Actions 執行的記錄。

清除資源

當您 適用於 PostgreSQL 的 Azure 資料庫 不再需要彈性的伺服器資料庫和存放庫時,請刪除資源群組和 GitHub 存放庫來清除您部署的資源。

下一步