共用方式為


將設定檔從 GitHub 存放庫匯入至應用程式設定存放區

如果您已採用設定即程式碼和管理 GitHub 中的設定,您可以使用 GitHub Actions,將設定檔從 GitHub 存放庫自動匯入至應用程式組態存放區。 這可讓您以平常的方式對設定檔進行變更,同時取得應用程式組態存放區的優點,例如:

  • 在您的程式碼外集中設定。
  • 更新設定而不需要重新部署整個應用程式。
  • 與 Azure App Service 和 Functions 類似的服務進行整合。

GitHub Actions 工作流程會在 GitHub 存放庫中定義自動化程序。 若要將設定檔從 GitHub 存放庫匯入 Azure 應用程式組態存放區,請使用 Azure CLI GitHub 動作,其提供將檔案匯入至應用程式組態存放區的完整功能。

驗證

若要將設定匯入 Azure 應用程式組態存放區,您可以使用下列其中一種方法進行驗證:

使用 Microsoft Entra ID

建議的驗證方式是使用 Microsoft Entra ID,讓您安全地連線到您的 Azure 資源。 您可以使用 Azure 登入 GitHub 動作,將驗證程式自動化。

Azure 登入可讓您使用服務主體搭配秘密進行驗證,或使用同盟身分識別認證進行 OpenID Connect。 在此範例中,您將使用 OpenID Connect 登入應用程式組態存放區。

搭配 OpenID Connect 使用 Azure 登入

若要搭配 OpenID Connect 使用 Azure 登入,您必須:

  1. 安裝具有服務主體的 Microsoft Entra 應用程式。
  2. 指派應用程式設定資料擁有者角色至您的 Microsoft Entra 應用程式,讓您的 GitHub 動作能夠讀取和寫入應用程式組態存放區。
  3. 提供您的 Microsoft Entra 應用程式用戶端識別碼、租用戶識別碼與訂閱識別碼給登入動作。 這些值可以直接在工作流程中提供,或儲存為 GitHub 秘密,以取得更佳安全性。 在下列範例中,這些值設定為秘密。 如需在 GitHub 中使用秘密的詳細資訊,請參閱在 GitHub Actions 中使用秘密

若要開始使用此 GitHub 動作,請移至您的存放庫,然後選取 [動作] 索引標籤。依序選取 [新的工作流程]、[自行設定工作流程]。 最後,在市集中搜尋「Azure 登入」。 找到該選項時,按一下動作,複製提供的程式碼片段到您的工作流程檔案。

選取動作索引標籤

選取 Azure 登入動作

使用 Microsoft Entra ID 的範例

# Set permissions for the workflow. Specify 'id-token: write' to allow OIDC token generation at the workflow level.
permissions: 
  id-token: write
  contents: read
 
jobs: 
  syncconfig: 
    runs-on: ubuntu-latest 
    steps: 
      - name: Azure login
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

使用連接字串

或者,您可以直接將連接字串傳遞至 Azure CLI 命令以進行驗證。 此方法牽涉到從 Azure 入口網站擷取連接字串,並在命令或指令碼中使用。

若要開始使用,您可以在 Azure 入口網站中應用程式設定存放區的存取設定 下找到連接字串。

接下來,設定此連接字串為 GitHub 存放庫中的秘密變數。 如需在 GitHub 中使用秘密的詳細資訊,請參閱在 GitHub Actions 中使用秘密。

使用連接字串的範例

on: 
  push: 
    branches: 
      - 'main' 
    paths: 
      - 'appsettings.json'
 
jobs: 
  syncconfig: 
    runs-on: ubuntu-latest
    
    # pass the secret variable as an environment variable to access it in your CLI action.
    env:
      CONNECTION_STRING: ${{ secrets.<ConnectionString> }}

匯入組態檔

您可以使用 Azure CLI GitHub Action,以匯入組態檔至應用程式組態存放區。 若要開始使用此 GitHub 動作,請移至您的存放庫,然後選取 [動作] 索引標籤。依序選取 [新的工作流程]、[自行設定工作流程]。 最後,在市集中搜尋「Azure CLI 動作」。 找到該選項時,按一下動作,複製提供的程式碼片段到您的工作流程檔案。

選取 Azure CLI 動作

在下列範例中,當您將變更推送至 appsettings.json 時,您可以使用 Azure CLI 動作將設定檔匯入 Azure 應用程式組態存放區。 當開發人員將變更推送到 appsettings.json 時,傳遞指令碼至 Azure CLI 的動作會使用新的值來更新應用程式組態存放區。

此工作流程區段的指定動作將會在分支的內容包含 appsettings.json 時觸發。 工作區段列出觸發動作之後所執行的作業。 該動作會檢查相關檔案,並更新應用程式組態存放區。

on: 
  push: 
    branches: 
      - 'main' 
    paths: 
      - 'appsettings.json'

# Set permissions for the workflow. Specify 'id-token: write' to allow OIDC token generation at the workflow level.
permissions: 
  id-token: write
  contents: read

jobs: 
  syncconfig: 
    runs-on: ubuntu-latest 
    steps: 
      - name: Azure login
        uses: azure/login@v2
        with:
          client-id: ${{ secrets.AZURE_CLIENT_ID }}
          tenant-id: ${{ secrets.AZURE_TENANT_ID }}
          subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}

      # checkout done so that files in the repo can be read by the sync 
      - uses: actions/checkout@v1 
      - uses: azure/cli@v2
        with: 
          azcliversion: latest
          inlineScript: |
            az appconfig kv import --endpoint <your-app-configuration-store-endpoint> --auth-mode login -s file --path appsettings.json --format json --yes

如需 Azure 應用程式組態 CLI 匯入命令的詳細資訊,請參閱 Azure AppConfiguration CLI 檔。

在匯入時使用動態標籤

在每個匯入上使用動態標籤,以完善維持設定清晰且精確的版本掌控。 動態標籤可讓每個應用程式組態存放區的匯入擁有唯一識別,讓您更輕鬆地將程式碼的變更對應至設定更新。

在匯入時使用動態標籤的範例

在下列範例中,匯入的所有金鑰 - 值都會根據認可摘要擁有唯一標籤。

 jobs: 
  syncconfig: 
    runs-on: ubuntu-latest 
    steps:      
      # Creates a label based on the branch name and the first 8 characters          
      # of the commit hash 
      - id: determine_label 
        run: echo ::set-output name=LABEL::"${GITHUB_REF#refs/*/}/${GITHUB_SHA:0:8}" 
      # checkout done so that files in the repo can be read by the sync 
      - uses: actions/checkout@v1 
      - uses: azure/cli@v2
        with: 
          azcliversion: latest
          inlineScript: |
            az appconfig kv import --endpoint <your-app-configuration-store-endpoint> --auth-mode login -s file --path appsettings.json --format json --label ${{ steps.determine_label.outputs.LABEL }} --yes

下一步

若要了解如何使用 CLI 匯入命令,請參閱我們的完整指南 Azure CLI 匯入命令

若要深入了解不同的檔案內容設定檔,請參閱 設定檔案的 Azure 應用程式組態支援