Compartir a través de


Inicio rápido: Uso de Acciones de GitHub para conectarse al servidor flexible para Azure Database for MySQL

Comience a trabajar con Acciones de GitHub usando un flujo de trabajo para implementar actualizaciones de base de datos en el servidor flexible para Azure Database for MySQL.

Requisitos previos

Necesitará:

Información general sobre el archivo de flujo de trabajo

Un flujo de trabajo de Acciones de GitHub se define mediante un archivo YAML (.yml) en la ruta de acceso /.github/workflows/ de su repositorio. En esta definición se incluyen los diversos pasos y parámetros que componen el flujo de trabajo.

El archivo tiene dos secciones:

Sección Tareas
Autenticación 1. Genere las credenciales de implementación.
Implementación 1. Implemente la base de datos.

Genere las credenciales de implementación.

Para utilizar la acción de inicio de sesión de Azure con OIDC, es necesario configurar una credencial de identidad federada en una aplicación Microsoft Entra o una identidad administrada asignada por el usuario.

Opción 1: aplicaciones de Microsoft Entra

Opción 2: identidad administrada asignada por el usuario

Copia de la cadena de conexión de MySQL

En Azure Portal, vaya a la instancia del servidor flexible para Azure Database for MySQL y abra Configuración>Cadenas de conexión. Copie la cadena de conexión de ADO.NET. Reemplace los valores de marcador de posición por your_database y your_password.

Importante

  • Para el servidor único de Azure Database for MySQL, use Uid=adminusername@servername. Tenga en cuenta que @servername es obligatorio.
  • Para el servidor flexible de Azure Database for MySQL, use Uid=adminusername sin el @servername.

Usará la cadena de conexión como secreto de GitHub.

Configuración de secretos de GitHub

Debe proporcionar el Identificador de cliente de la aplicación, el Identificador del directorio (arrendatario) y el Identificador de suscripción a la acción de inicio de sesión. Estos valores se pueden proporcionar directamente en el flujo de trabajo o se pueden almacenar en secretos de GitHub y se puede hacer referencia a ellos en el flujo de trabajo. Guardar los valores como secretos de GitHub es la opción más segura.

  1. En GitHub, vaya al repositorio.

  2. Seleccione Seguridad > Secretos y variables > Acciones.

    Captura de pantalla de la adición de un secreto

  3. Seleccione New repository secret (Nuevo secreto del repositorio).

    Nota:

    Para mejorar la seguridad del flujo de trabajo en repositorios públicos, use secretos de entorno en lugar de secretos de repositorio. Si el entorno requiere aprobación, un trabajo no puede acceder a los secretos del entorno hasta que uno de los revisores necesarios lo apruebe.

  4. Cree secretos para AZURE_CLIENT_ID, AZURE_TENANT_ID y AZURE_SUBSCRIPTION_ID. Copie estos valores desde la aplicación de Microsoft Entra o la identidad administrada asignada por el usuario para los secretos de GitHub.

    Secreto de GitHub Aplicación de Microsoft Entra o identidad administrada asignada por el usuario
    AZURE_CLIENT_ID Id. de cliente
    AZURE_SUBSCRIPTION_ID Id. de suscripción
    AZURE_TENANT_ID Id. de directorio (inquilino)

    Nota:

    Por motivos de seguridad, se recomienda usar secretos de GitHub en lugar de pasar valores directamente al flujo de trabajo.

Agregar el flujo de trabajo

  1. Vaya a la opción de Acciones del repositorio de GitHub.

  2. Seleccione Set up your workflow yourself (Configure el flujo de trabajo usted mismo).

  3. Elimine todo lo que aparezca después de la sección on: del archivo de flujo de trabajo. Por ejemplo, el flujo de trabajo restante puede tener este aspecto.

    name: CI
    
    on:
    push:
        branches: [ main ]
    pull_request:
        branches: [ main ]
    
  4. Cambie el nombre del flujo de trabajo MySQL for GitHub Actions y agregue las acciones de restauración e inicio de sesión. Estas acciones comprueban el código de sitio y se autentican con Azure mediante el secreto de GitHub AZURE_CREDENTIALS que creó anteriormente.

    name: MySQL for GitHub Actions
    
    on:
        push:
            branches: [ main ]
        pull_request:
            branches: [ main ]
    
    jobs:
        build:
            runs-on: windows-latest
            steps:
            - uses: actions/checkout@v1
            - uses: azure/login@v2
                with:
                  client-id: ${{ secrets.AZURE_CLIENT_ID }}
                  tenant-id: ${{ secrets.AZURE_TENANT_ID }}
                  subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    
  5. Use la acción de implementación de Azure MySQL para conectarse a la instancia de MySQL. Reemplace MYSQL_SERVER_NAME por el nombre del servidor. Debe tener un archivo de datos de MySQL denominado data.sql en el nivel raíz del repositorio.

    - uses: azure/mysql@v1
      with:
        server-name: MYSQL_SERVER_NAME
        connection-string: ${{ secrets.AZURE_MYSQL_CONNECTION_STRING }}
        sql-file: './data.sql'
    
  6. Para completar el flujo de trabajo, agregue una acción al cierre de sesión de Azure. Este es el flujo de trabajo completado. El archivo aparece en la carpeta .github/workflows del repositorio.

    name: MySQL for GitHub Actions
    
    on:
      push:
          branches: [ main ]
      pull_request:
          branches: [ main ]
    jobs:
        build:
            runs-on: windows-latest
            steps:
              - uses: actions/checkout@v1
              - uses: azure/login@v2
                with:
                  client-id: ${{ secrets.AZURE_CLIENT_ID }}
                  tenant-id: ${{ secrets.AZURE_TENANT_ID }}
                  subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
              - uses: azure/mysql@v1
                with:
                  server-name: MYSQL_SERVER_NAME
                  connection-string: ${{ secrets.AZURE_MYSQL_CONNECTION_STRING }}
                  sql-file: './data.sql'
    
                # Azure logout
              - name: logout
                run: |
                  az logout
    

Revisar la implementación

  1. Vaya a la opción de Acciones del repositorio de GitHub.

  2. Abra el primer resultado para ver los registros detallados de la ejecución del flujo de trabajo.

    Captura de pantalla del registro de la ejecución de Acciones de GitHub.

Limpieza de recursos

Cuando la base de datos y el repositorio del servidor flexible de Azure Database for MySQL ya no sean necesarios, limpie los recursos implementados mediante la eliminación del grupo de recursos y el repositorio de GitHub.

Paso siguiente