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 ficheiro de configuração do seu repositório do GitHub para o arquivo do Azure App Configuration, utilize a ação do GitHub da CLI do Azure, que oferece todas as capacidades para importar ficheiros para o seu arquivo do App Configuration.

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 utilizando a ação do GitHub Azure Login.

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 à sua aplicação Microsoft Entra a função App Configuration Data Owner para permitir que a sua ação do GitHub leia e escreva no seu arquivo de App Configuration.
  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 string 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

Utiliza a ação do GitHub CLI do Azure para importar um ficheiro de configuração para o repositório do App Configuration. 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 marketplace por “CLI do Azure Action”. 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 programador submete uma alteração para appsettings.json, o script fornecido à ação da CLI do Azure atualiza o arquivo do App Configuration com os novos valores.

A secção on deste fluxo de trabalho especifica que a ação é acionada on um push que contém appsettings.json no ramo main. 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 <AppConfigurationEndpoint> --auth-mode login -s file --path appsettings.json --format json --yes

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

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 <AppConfigurationEndpoint> --auth-mode login -s file --path appsettings.json --format json --label ${{ steps.determine_label.outputs.LABEL }} --yes

Próximos passos

Para saber como utilizar os comandos de importação do CLI do Azure, consulte o nosso guia completo Comandos de importação do 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.