共用方式為


使用 GitHub Actions 連線到 Azure SQL 資料庫

適用於:Azure SQL 資料庫

藉由使用工作流程將資料庫更新部署至 Azure SQL 資料庫,來開始使用 GitHub Actions

必要條件

您需要:

工作流程檔案概觀

GitHub Actions 工作流程是由您存放庫內 /.github/workflows/ 路徑中的 YAML (.yml) 檔案所定義的。 此定義包含組成工作流程的各種步驟與參數。

檔案內有兩個區段:

區段 工作
驗證 1.1. 產生部署認證。
部署 1.部署資料庫。

產生部署認證

若要搭配 OIDC 使用 Azure 登入動作,您必須在 Microsoft Entra 應用程式或使用者指派的受控識別上設定聯盟身分識別憑證。

選項 1:Microsoft Entra 應用程式

選項 2:使用者指派的受控識別

複製 SQL 連接字串

在 Azure 入口網站中,移至 Azure SQL 資料庫,然後開啟 [設定][連接字串]>。 複製 ADO.NET 連接字串。 取代 your_databaseyour_password 的預留位置值。

請使用連接字串 AZURE_SQL_CONNECTION_STRING 作為 GitHub 祕密。

設定 GitHub 祕密

您需要提供應用程式的 客戶端 ID目錄 (租戶) ID,以及 訂閱 ID 以用於登入動作。 這些值可以直接在工作流程中提供,也可以儲存在 GitHub 的秘密中,並在您的工作流程中參考。 將值儲存為 GitHub 秘密是較安全的選擇。

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

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

    新增祕密的螢幕擷取畫面

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

    注意

    若要增強公用存放庫中的工作流程安全性,請使用 環境秘密 而非存放庫秘密。 如果環境需要核准,作業必須等待直到其中一位必要的檢閱者核准後才能存取環境秘密。

  4. 建立 AZURE_CLIENT_IDAZURE_TENANT_IDAZURE_SUBSCRIPTION_ID 的秘密。 從您的 Microsoft Entra 應用程式或使用者指派的受控身分識別中複製這些值,然後用於您的 GitHub secrets。

    GitHub 祕密 Microsoft Entra 應用程式或使用者指派的受控識別
    AZURE_CLIENT_ID 用戶端識別碼
    AZURE_SUBSCRIPTION_ID 訂用帳戶識別碼
    AZURE_TENANT_ID 目錄 (租用戶) 識別碼

    注意

    基於安全性考慮,我們建議使用 GitHub 秘密,而不是將值直接傳遞至工作流程。

新增 SQL 連接字串祕密

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

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

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

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

  5. 貼上您的 SQL 連接字串。 將祕密命名為 AZURE_SQL_CONNECTION_STRING

  6. 選取 [新增祕密]。

新增您的工作流程

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

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

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

    name: SQL for GitHub Actions
    
    on:
        push:
            branches: [ main ]
        pull_request:
            branches: [ main ]
    
  4. 重新命名工作流程 SQL for GitHub Actions,並新增簽出和登入動作。 這些動作會簽出您的站台碼,並使用您稍早建立的 AZURE_CREDENTIALS GitHub 祕密向 Azure 進行驗證。

        name: SQL for GitHub Actions
    
        on:
            push:
                branches: [ main ]
            pull_request:
                branches: [ main ]
    
        jobs:
            build:
                runs-on: windows-latest
                steps:
                 - uses: actions/checkout@v1
                 - uses: azure/login@v2
                   with:
                    client-id: ${{ secrets.AZURE_CLIENT_ID }}
                    tenant-id: ${{ secrets.AZURE_TENANT_ID }}
                    subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    

  1. 使用 Azure SQL 的「部署」動作來連線到您的 SQL 執行個體。 您在存放庫的根層級應該會有一個 dacpac 套件 (Database.dacpac)。 使用您稍早建立的 AZURE_SQL_CONNECTION_STRING GitHub 祕密。

    - uses: azure/sql-action@v2
      with:
        connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }}
        path: './Database.dacpac'
        action: 'Publish'
    
  2. 藉由新增動作至 Azure 的登出,來完成您的工作流程。 以下為完成的工作流程。 檔案會出現在存放庫的 .github/workflows 資料夾中。

        name: SQL for GitHub Actions
    
        on:
            push:
                branches: [ main ]
            pull_request:
                branches: [ main ]
    
        jobs:
            build:
                runs-on: windows-latest
                steps:
                 - uses: actions/checkout@v1
                 - uses: azure/login@v2
                   with:
                    client-id: ${{ secrets.AZURE_CLIENT_ID }}
                    tenant-id: ${{ secrets.AZURE_TENANT_ID }}
                    subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
                # Azure logout 
                 - name: logout
                   run: |
                     az logout
    

檢閱您的部署

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

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

    GitHub Actions 執行的記錄

清除資源

當您不再需要 Azure SQL 資料庫和存放庫時,請刪除資源群組和 GitHub 存放庫,以清理您所部署的資源。

後續步驟