如果您已採用設定即程式碼和管理 GitHub 中的設定,您可以使用 GitHub Actions,將設定檔從 GitHub 存放庫自動匯入至應用程式組態存放區。 這可讓您以平常的方式對設定檔進行變更,同時取得應用程式組態存放區的優點,例如:
- 獨立於程式碼之外的集中式設定。
- 更新設定而不需要重新部署整個應用程式。
- 與 Azure App 服務 和 Functions 類似的服務進行整合。
GitHub Actions 工作流程會在 GitHub 存放庫中定義自動化程序。 若要將設定檔從 GitHub 存放庫匯入 Azure 應用程式組態存放區,請使用 Azure CLI GitHub 動作,其提供將檔案匯入至應用程式組態存放區的完整功能。
驗證
若要將設定匯入 Azure 應用程式組態存放區,您可以使用下列其中一種方法進行驗證:
使用 Microsoft Entra ID
建議的驗證方式是使用 Microsoft Entra ID,讓您安全地連線到您的 Azure 資源。 您可以使用 Azure 登入 GitHub 動作,將驗證程式自動化。
Azure Login 可讓您使用含有祕密的服務主體,或透過具有同盟身分識別的 OpenID Connect 進行驗證。 在此範例中,您將使用 OpenID Connect 登入應用程式組態存放區。
搭配 OpenID Connect 使用 Azure 登入功能
若要搭配 OpenID Connect 使用 Azure 登入,您必須:
- 設定具有服務主體的 Microsoft Entra 應用程式。
- 指派應用程式設定資料擁有者角色至您的 Microsoft Entra 應用程式,讓您的 GitHub 動作能夠讀取和寫入應用程式組態存放區。
- 提供您的 Microsoft Entra 應用程式用戶端識別碼、租用戶識別碼與訂閱識別碼給登入動作。 這些值可以直接在工作流程中提供,或儲存為 GitHub 秘密,以取得更佳安全性。 在下列範例中,這些值設定為秘密。 如需在 GitHub 中使用秘密的詳細資訊,請參閱在 GitHub Actions 中使用秘密。
若要開始使用此 GitHub 動作,請移至您的存放庫,然後選取 [動作] 索引標籤。依序選取 [新的工作流程]、[自行設定工作流程]。 最後,在市集中搜尋「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 Action」。 找到該選項時,按一下動作,複製提供的程式碼片段到您的工作流程檔案。
在下列範例中,當您將變更推送至 appsettings.json 時,您可以使用 Azure CLI 動作將設定檔匯入 Azure 應用程式組態存放區。 當開發人員將變更推送到 appsettings.json 時,傳遞指令碼至 Azure CLI 的動作會使用新的值來更新應用程式組態存放區。
此工作流程的 on 區段指定動作會在包含 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 <AppConfigurationEndpoint> --auth-mode login -s file --path appsettings.json --format json --yes
如需 Azure 應用程式組態 CLI 匯入命令的詳細資訊,請參閱 Azure AppConfiguration CLI 檔。
在匯入時使用動態標籤
在每次匯入時使用動態標籤,是維持您的組態清楚且精確的版本控管的好方法。 它可讓每次匯入到您的 App Configuration 存放區的內容都能被唯一識別,讓您更容易將程式碼變更對應到組態更新。
在匯入時使用動態標籤的範例
在下列範例中,所有匯入的鍵值都會根據提交雜湊值附有唯一標籤。
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 <AppConfigurationEndpoint> --auth-mode login -s file --path appsettings.json --format json --label ${{ steps.determine_label.outputs.LABEL }} --yes
下一步
若要了解如何使用 CLI 匯入命令,請參閱我們的完整指南 Azure CLI 匯入命令。
若要深入了解不同的檔案內容設定檔,請參閱 Azure 應用程式組態對設定檔的支援。