Importar archivos de configuración desde el repositorio de GitHub al almacén de App Configuration

Si ha adoptado Configuración como código y administra las configuraciones en GitHub, puede usar Acciones de GitHub para importar automáticamente archivos de configuración desde el repositorio de GitHub en el almacén de App Configuration. Esto le permite realizar cambios en los archivos de configuración como haría normalmente y, al mismo tiempo, obtener ventajas del almacén de App Configuration como:

  • Configuración centralizada fuera de su código.
  • • Actualizaciones de la configuración sin volver a implementar toda la aplicación.
  • • Integración con servicios como Azure App Service y Functions.

Un flujo de trabajo de acción de GitHub define un proceso automatizado en un repositorio de GitHub. Para importar un archivo de configuración de su repositorio de GitHub a Azure App Configuration, use la acción de GitHub de CLI de Azure, que proporciona todas las capacidades necesarias para importar archivos a su almacén de Azure App Configuration.

Autenticación

Para importar configuraciones en el almacén de Azure App Configuration, puede autenticarse mediante uno de los métodos siguientes:

Uso de Microsoft Entra ID

La forma recomendada de autenticarse es mediante Microsoft Entra ID, que permite conectarse de forma segura a los recursos de Azure. Puede automatizar el proceso de autenticación con la acción de GitHub Azure Login.

Azure Login permite autenticarse mediante entidades de servicio con secretos o mediante OpenID Connect con una credencial de identidad federada. En este ejemplo, utilizarás OpenID Connect para iniciar sesión en tu almacén de configuración de aplicaciones.

Usar el inicio de sesión de Azure con OpenID Connect

Para usar el Inicio de sesión de Azure con OpenID Connect, deberá hacer lo siguiente:

  1. Configure una aplicación de Microsoft Entra con una entidad de servicio.
  2. Asigne a su aplicación Microsoft Entra el rol Propietario de datos de App Configuration para permitir que su acción de GitHub lea y escriba en el almacén de App Configuration.
  3. Proporcione el id. de cliente, el id. de inquilino y el id. de suscripción de la aplicación de Microsoft Entra a la acción de inicio de sesión. Estos valores se pueden proporcionar directamente en el flujo de trabajo o almacenarlos como secretos de GitHub para mejorar la seguridad. En el ejemplo siguiente, estos valores se establecen como secretos. Para obtener más información sobre el uso de secretos en GitHub, consulte Usar secretos en Acciones de GitHub.

Para empezar a usar esta acción de GitHub, vaya al repositorio y seleccione la pestaña Acciones. Seleccione Nuevo flujo de trabajo y, luego, Configurar un flujo de trabajo por su cuenta. Por último, busque en Marketplace "Azure Login". Una vez que lo encuentre, haga clic en la acción y copie el fragmento de código proporcionado en el archivo de flujo de trabajo.

Selección de la pestaña Acción

Seleccionar acción de Inicio de sesión de Azure

Ejemplo de uso de 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 }}

Uso de una cadena de conexión

Como alternativa, puede autenticarse pasando la cadena de conexión directamente al comando de la CLI de Azure. Este método implica recuperar la cadena de conexión desde Azure Portal y usarla en los comandos o scripts.

Para empezar, puede encontrar la cadena de conexión en Configuración de acceso de su almacén de configuración de aplicaciones en el Azure Portal.

A continuación, establezca esta cadena de conexión como una variable secreta en el repositorio de GitHub. Para obtener más información sobre el uso de secretos en GitHub, consulte Usar secretos en Acciones de GitHub..

Ejemplo de uso de una cadena de conexión

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

Importación de archivos de configuración

Usa la acción de GitHub de CLI de Azure para importar un archivo de configuración a tu almacén de App Configuration. Para empezar a usar esta acción de GitHub, vaya al repositorio y seleccione la pestaña Acciones. Seleccione Nuevo flujo de trabajo y, luego, Configurar un flujo de trabajo por su cuenta. Por último, busque "CLI de Azure Action" en el marketplace. Una vez que lo encuentre, haga clic en la acción y copie el fragmento de código proporcionado en el archivo de flujo de trabajo.

Seleccione la acción de la CLI de Azure

En el ejemplo siguiente, se usa la acción de la CLI de Azure para importar archivos de configuración en un almacén de Azure App Configuration cuando se inserta un cambio en appsettings.json. Cuando un desarrollador inserta un cambio en appsettings.json, el script pasado a la acción de la CLI de Azure actualiza el almacén de App Configuration con los nuevos valores.

La sección on de este flujo de trabajo especifica que la acción se activa un push que contenga appsettings.json en la rama main. En la sección trabajos se enumeran los trabajos que se ejecutan una vez que se desencadena la acción. La acción comprueba los archivos pertinentes y actualiza el almacén de App Configuration.

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 obtener más información sobre los comandos de importación de la CLI de Azure App Configuration, consulte la documentación de la CLI de Azure App Configuration.

Usar una etiqueta dinámica en la importación

El uso de una etiqueta dinámica en cada importación es una buena manera de mantener un control de versiones claro y preciso de las configuraciones. Permite identificar de forma única cada importación en el almacén de App Configuration, lo que facilita la asignación de cambios de código a las actualizaciones de configuración.

Ejemplo de uso de una etiqueta dinámica en la importación

En el ejemplo siguiente, todos los valores de clave importados tendrán una etiqueta única basada en el hash de confirmación.

 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

Pasos siguientes

Para aprender a usar comandos de importación de la CLI, consulte nuestra guía completa Comandos de importación de la CLI de Azure.

Para obtener más información sobre los distintos perfiles de contenido de archivos, consulte Compatibilidad de Azure App Configuration con archivos de configuración.