Compartir vía


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 del 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 desde el repositorio de GitHub en el almacén de Azure App Configuration, use la acción de GitHub de la CLI de Azure, que proporciona funcionalidades completas para la importación de archivos en el almacén de 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 mediante la acción de GitHub de Inicio de sesión de Azure.

El Inicio de sesión de Azure permite autenticarse mediante entidades de servicio con secretos u OpenID Connect con una credencial de identidad federada. En este ejemplo, usará OpenID Connect para iniciar sesión en el almacén de App Configuration.

Usar 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. Configurar una aplicación de Microsoft Entra con una entidad de servicio.
  2. Asigne a la aplicación Microsoft Entra el rol Propietario de datos de App Configuration para permitir que la 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 "Inicio de sesión de Azure" 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.

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 del almacén de App Configuration en 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

Use la acción de GitHub de la CLI de Azure para importar un archivo de configuración al 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 "Acción de la CLI de Azure" 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 segunda sección de este flujo de trabajo especifica que la acción se desencadena en una inserción que contiene appsettings.json para la rama principal. 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 <your-app-configuration-store-endpoint> --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 <your-app-configuration-store-endpoint> --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.