Partilhar via


Importe arquivos de configuração do repositório GitHub para a App Configuration Store

Se você adotou Configuração como Código e gerencia suas configurações no GitHub, pode usar as Ações do GitHub para importar automaticamente arquivos de configuração do repositório do GitHub para a App Configuration Store. Isso permite que você faça alterações em seus arquivos de configuração como faria normalmente, enquanto obtém benefícios da App Configuration Store como:

  • Configuração centralizada fora do seu código.
  • Atualizando a configuração sem reimplantar todo o aplicativo.
  • Integração com serviços como o Serviço de Aplicativo do Azure e o Functions.

Um fluxo de trabalho de ação do GitHub define um processo automatizado em um repositório do GitHub. Para importar um arquivo de configuração do repositório GitHub para o repositório de Configuração de Aplicativos do Azure, use a ação GitHub da CLI do Azure, que fornece recursos completos para a importação de arquivos para seu repositório de Configuração de Aplicativos.

Autenticação

Para importar configurações para sua loja de Configuração de Aplicativo do Azure, você pode autenticar usando um dos seguintes métodos:

Usar o Microsoft Entra ID

A maneira recomendada de autenticar é usando o Microsoft Entra ID, que permite que você se conecte com segurança aos seus recursos do Azure. Você pode automatizar o processo de autenticação usando a ação GitHub de Logon do Azure.

O Logon do Azure permite que você se autentique usando entidades de serviço com segredos ou OpenID Connect com uma Credencial de Identidade Federada. Neste exemplo, você usará o OpenID Connect para fazer login na sua loja de configuração de aplicativos.

Usar o logon do Azure com o OpenID Connect

Para usar o Logon do Azure com o OpenID Connect, você precisará:

  1. Configure um aplicativo Microsoft Entra com uma entidade de serviço.
  2. Atribua ao seu aplicativo Microsoft Entra a função de Proprietário de Dados de Configuração do Aplicativo para permitir que sua ação do GitHub leia e grave em sua loja de Configuração de Aplicativos.
  3. Forneça a ID do Cliente, a ID do Locatário e a ID da Assinatura do aplicativo Microsoft Entra para a ação de login. Esses valores podem ser fornecidos diretamente no fluxo de trabalho ou armazenados como segredos do GitHub para melhor segurança. No exemplo abaixo, esses valores são definidos como segredos. Para obter mais informações sobre como usar segredos no GitHub, consulte Usando segredos em ações do GitHub.

Para começar a usar esta Ação do GitHub, vá para o seu repositório e selecione a guia Ações. Selecione Novo fluxo de trabalho e, em seguida, Configure um fluxo de trabalho você mesmo. Por fim, pesquise no mercado por "Login do Azure". Depois de encontrá-lo, clique na ação e copie o trecho fornecido em seu arquivo de fluxo de trabalho.

Selecione a guia Ação

Selecione a Ação de Login do Azure

Exemplo usando o 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 }}

Utilizar uma cadeia de ligação

Como alternativa, você pode autenticar passando a cadeia de conexão diretamente para o comando da CLI do Azure. Esse método envolve recuperar a cadeia de conexão do portal do Azure e usá-la em seus comandos ou scripts.

Para começar, pode encontrar a cadeia de ligação em Definições de Acesso da sua loja de Configuração de Aplicações no portal do Azure.

Em seguida, defina essa cadeia de conexão como uma variável secreta no repositório GitHub. Para obter mais informações sobre como usar segredos no GitHub, consulte Usando segredos em ações do GitHub..

Exemplo usando uma cadeia de conexão

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> }}

Importação do arquivo de configuração

Você usa a Ação GitHub da CLI do Azure para importar um arquivo de configuração para sua loja de Configuração de Aplicativos. Para começar a usar esta Ação do GitHub, vá para o seu repositório e selecione a guia Ações. Selecione Novo fluxo de trabalho e, em seguida, Configure um fluxo de trabalho você mesmo. Por fim, pesquise no mercado por "Ação da CLI do Azure". Depois de encontrá-lo, clique na ação e copie o trecho fornecido em seu arquivo de fluxo de trabalho.

Selecione a Ação da CLI do Azure

No exemplo a seguir, você usa a ação CLI do Azure para importar arquivos de configuração para um repositório de Configuração de Aplicativo do Azure quando uma alteração é enviada por push para appsettings.json. Quando um desenvolvedor envia uma alteração para appsettings.jsono , o script passado para a ação da CLI do Azure atualiza o repositório de Configuração do Aplicativo com os novos valores.

A seção on deste fluxo de trabalho especifica que a ação é acionada em um push contendo appsettings.json a ramificação principal . A seção de trabalhos lista os trabalhos executados assim que a ação é acionada. A ação verifica os arquivos relevantes e atualiza a App Configuration Store.

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

Para obter mais informações sobre os comandos de importação da CLI de Configuração do Aplicativo do Azure, consulte a documentação da CLI do Azure AppConfifguration.

Usar um rótulo dinâmico na importação

Usar um rótulo dinâmico em cada importação é uma boa maneira de manter um controle de versão claro e preciso de suas configurações. Ele permite que cada importação para sua loja de configuração de aplicativos seja identificada de forma exclusiva, facilitando o mapeamento de alterações de código para atualizações de configuração.

Exemplo de utilização de uma etiqueta dinâmica na importação

No exemplo a seguir, todos os valores-chave importados terão um rótulo exclusivo com base no hash de confirmação.

 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

Próximos passos

Para saber como usar os comandos de importação da CLI, confira nosso guia abrangente Comandos de importação da CLI do Azure.

Para saber mais sobre diferentes perfis de conteúdo de arquivo, consulte Suporte à Configuração de Aplicativo do Azure para arquivos de configuração.