Usar Acciones de GitHub para conectarse a Azure SQL Database
Se aplica a:Base de datos de Azure SQL
Comience a trabajar con Acciones de GitHub mediante un flujo de trabajo para implementar actualizaciones de base de datos en Azure SQL Database.
Requisitos previos
Necesita:
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Un repositorio de GitHub con un paquete dacpac (
Database.dacpac
). Si no tiene una cuenta de GitHub, regístrese para obtener una gratis. - Una base de datos de Azure SQL. Inicio rápido: Creación de una base de datos única de Azure SQL Database.
- Un archivo .dacpac que se va a importar en la base de datos.
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.1. Genere las credenciales de implementación. |
Implementar | 1. Implemente la base de datos. |
Genere las credenciales de implementación.
Para usar la acción de inicio de sesión de Azure con OIDC, debe configurar una credencial de identidad federada en una aplicación de Microsoft Entra o en una identidad administrada asignada por el usuario.
Opción 1: Aplicación de Microsoft Entra
- Cree una aplicación de Microsoft Entra con una entidad de servicio mediante Azure portal, Azure CLIo Azure PowerShell.
- Copie los valores de id. de cliente, id. de suscripcióny id. de directorio (inquilino) para usarlos más adelante en el flujo de trabajo de Acciones de GitHub.
- Asigne un rol adecuado a la entidad de servicio mediante el Azure Portal, CLI de Azureo bien Azure PowerShell.
- Configurar una credencial de identidad federada en una aplicación de Microsoft Entra para confiar en los tokens emitidos por GitHub Actions en el repositorio de GitHub.
Opción 2: Identidad administrada de usuario asignada
- Crear una identidad administrada asignada por el usuario.
- Copie los valores de id. de cliente, id. de suscripcióny id. de directorio (inquilino) para usarlos más adelante en el flujo de trabajo de Acciones de GitHub.
- Asigne un rol adecuado a la identidad administrada asignada por el usuario.
- Configura una credencial de identidad federada en una identidad administrada asignada por el usuario para confiar en los tokens emitidos por GitHub Actions en tu repositorio de GitHub.
Copie la cadena de conexión SQL.
En Azure Portal, vaya a Azure SQL Database 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 your_database
y your_password
.
Establecerá la cadena de conexión como secreto de GitHub, AZURE_SQL_CONNECTION_STRING
.
Configuración de los secretos de GitHub
Debe proporcionar el identificador de cliente de la aplicación, id. de directorio (inquilino)y id. 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.
En GitHub, vaya al repositorio.
Seleccione Seguridad > Secretos y variables > Acciones.
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.
Cree secretos para
AZURE_CLIENT_ID
,AZURE_TENANT_ID
yAZURE_SUBSCRIPTION_ID
. Copie estos valores de la aplicación de Microsoft Entra o de la identidad administrada asignada al 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.
Agregue el secreto de cadena de conexión SQL
En GitHub, vaya al repositorio.
Vaya a Configuración en el menú de navegación.
Seleccione Seguridad > Secretos y variables > Acciones.
Seleccione New repository secret (Nuevo secreto del repositorio).
Pegue la cadena de conexión SQL. Asigne al secreto el nombre
AZURE_SQL_CONNECTION_STRING
.Seleccione Add secret (Agregar secreto).
Agregar el flujo de trabajo
Vaya a Acciones del repositorio de GitHub.
Seleccione Set up your workflow yourself (Configure el flujo de trabajo usted mismo).
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 el siguiente aspecto.name: SQL for GitHub Actions on: push: branches: [ main ] pull_request: branches: [ main ]
Cambie el nombre del flujo de trabajo
SQL 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 GitHubAZURE_CREDENTIALS
que creó anteriormente.name: SQL 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@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }}
Use la acción de implementación de Azure SQL para conectarse a la instancia de SQL. Debe tener un paquete dacpac (
Database.dacpac
) en el nivel raíz del repositorio. Use el secreto de GitHubAZURE_SQL_CONNECTION_STRING
que creó anteriormente.- uses: azure/sql-action@v2 with: connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }} path: './Database.dacpac' action: 'Publish'
Complete el flujo de trabajo agregando 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: SQL 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@v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - uses: azure/sql-action@v2 with: connection-string: ${{ secrets.AZURE_SQL_CONNECTION_STRING }} path: './Database.dacpac' action: 'Publish' # Azure logout - name: logout run: | az logout
Revisar la implementación
Vaya a Acciones del repositorio de GitHub.
Abra el primer resultado para ver los registros detallados de la ejecución del flujo de trabajo.
Limpieza de recursos
Cuando la base de datos y el repositorio de Azure SQL ya no sean necesarios, limpie los recursos que implementó eliminando el grupo de recursos y el repositorio de GitHub.