Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Automatice las implementaciones de una aplicación de Fabric desde un repositorio de GitHub a un área de trabajo de Fabric mediante un flujo de trabajo de Acciones de GitHub. El flujo de trabajo inicia sesión en Fabric con una entidad de servicio, instala la CLI de Rayfin y ejecuta rayfin up para aplicar el código, el esquema de base de datos y el contenido estático al área de trabajo de destino.
En este artículo aprenderá a:
- Prepare una entidad de servicio y un área de trabajo de Fabric para implementaciones automatizadas.
- Configure los secretos del repositorio de GitHub que necesita el flujo de trabajo.
- Agregue el archivo de flujo de trabajo de implementación al repositorio.
- Active los despliegues automáticamente en
mainy manualmente con soporte opcional para cambios destructivos. - Reutilice el mismo flujo de trabajo para las ramas de funcionalidad y los despliegues específicos de cada entorno.
Prerequisites
- Un proyecto de aplicación Fabric en un repositorio de GitHub. Si aún no tiene una, consulte Crear el primer proyecto de Fabric Apps e insertar el código de la aplicación en el repositorio.
- Área de trabajo de Fabric en la que la entidad de servicio puede implementar. Para la separación de entornos, consulte Gestionar entornos de desarrollo y producción.
- Una entidad de servicio Microsoft Entra ID (registro de aplicaciones) con un secreto de cliente.
- Permiso para agregar secrets al repositorio de GitHub.
Paso 1: Cree una entidad de servicio para los despliegues
El flujo de trabajo se autentica de forma no interactiva, por lo que usa un principal de servicio en lugar de una cuenta de usuario interactiva.
- En el portal Azure, registre una nueva aplicación en Microsoft Entra ID>Registros de aplicaciones.
- Registre el identificador de aplicación (cliente) y el identificador de directorio (inquilino).
- En Certificados y secretos, cree un nuevo secreto de cliente y copie el valor. Almacenarlo de forma segura: no se puede volver a ver más tarde.
- Conceda a la entidad de servicio Contributor o un permiso superior en el área de trabajo de Fabric de destino para que pueda crear y actualizar el elemento de aplicación de Fabric.
Importante
Las implementaciones con entidades de servicio requieren la configuración del inquilino de Fabric que permite a las entidades de servicio usar las API de Fabric. Confirme con el administrador de Fabric que está habilitado.
Paso 2: Adición de secretos de repositorio
En el repositorio de GitHub, vaya a Settings>Secrets y variables>Actions y agregue los siguientes secretos de repositorio:
| Nombre del secreto | Valor |
|---|---|
CLIENT_ID |
El identificador de aplicación (cliente) de la entidad de servicio. |
TENANT_ID |
El identificador del directorio (inquilino). |
CLIENT_SECRET |
Valor del secreto del cliente. |
FABRIC_WORKSPACE_NAME |
Nombre del área de trabajo de Fabric de destino (por ejemplo, my-app-prod). |
Paso 3: Agregar el archivo de flujo de trabajo
En el repositorio, cree el archivo .github/workflows/deploy-to-fabric.yml con el siguiente contenido:
name: Deploy to Fabric
on:
push:
branches: [main]
workflow_dispatch:
inputs:
force:
description: 'Allow destructive schema changes that may result in data loss'
required: false
default: false
type: boolean
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
deploy:
name: Deploy to Fabric
runs-on: ubuntu-latest
env:
CLIENT_ID: ${{ secrets.CLIENT_ID }}
TENANT_ID: ${{ secrets.TENANT_ID }}
CLIENT_SECRET: ${{ secrets.CLIENT_SECRET }}
FABRIC_WORKSPACE_NAME: ${{ secrets.FABRIC_WORKSPACE_NAME }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install Rayfin CLI
run: npm install -g @microsoft/rayfin-cli
- name: Login to Rayfin with service principal
run: |
rayfin login \
--service-principal \
-t $TENANT_ID
-u $CLIENT_ID
-p CLIENT_SECRET
- name: Deploy to Fabric
run: |
EXTRA_ARGS=""
if [[ "${{ inputs.force }}" == "true" ]]; then
EXTRA_ARGS="$EXTRA_ARGS --force"
fi
rayfin up \
--workspace "$FABRIC_WORKSPACE_NAME" \
--yes \
$EXTRA_ARGS
Qué hace cada sección
-
on.push: Ejecuta automáticamente el flujo de trabajo con cada push amain. -
on.workflow_dispatch: agrega un botón Ejecutar flujo de trabajo en la interfaz de usuario de Acciones de GitHub con una casilla de verificación forzar. Al habilitar force, se pasa--forcearayfin uppara permitir cambios destructivos en el esquema (como eliminar columnas o tablas). Déjelo desactivado para implementaciones seguras y no destructivas. -
concurrency: garantiza que solo se ejecuta una implementación por rama a la vez. Si se produce un nuevo push mientras un despliegue anterior todavía se está ejecutando, la ejecución anterior se cancela en favor del commit más reciente. Esta configuración impide que dos trabajosrayfin upse ejecuten simultáneamente en la misma área de trabajo. -
env: pasa las credenciales de la entidad de servicio y el nombre del área de trabajo de destino al trabajo. -
Install Rayfin CLI: instala la CLI globalmente, por lo querayfinestá en path. -
Login to Fabric with service principal: se autentica mediante las variables de entorno*. -
Deploy to Fabric: ejecutarayfin upcon el inquilino y el espacio de trabajo configurados.--yesacepta indicaciones no destructivas;--forcesolo se agrega cuando la ejecución manual la solicitó.
Paso 4: Desencadenar una implementación
Puede desencadenar el flujo de trabajo de dos maneras:
-
Automáticamente: envíe o fusione una confirmación de cambios en la rama
main. - Manually: En GitHub, vaya a Actions>Deploy to Fabric>Run workflow. Seleccione la rama que desea desplegar y, opcionalmente, marque Permitir cambios destructivos en el esquema que puedan provocar pérdida de datos antes de iniciar la ejecución.
Una vez finalizado el flujo de trabajo, el paso Deploy en Fabric del registro de ejecución imprime la dirección URL de la aplicación de Fabric y el identificador de implementación.
Consideraciones y limitaciones
- La concurrencia se aplica por rama.
concurrency.groupincluyegithub.ref, por lo que las implementaciones en diferentes ramas no se cancelan entre sí. Este comportamiento es intencionado al asignar ramas a diferentes áreas de trabajo. - Los cambios destructivos se bloquean de forma predeterminada.
rayfin uprechaza las operaciones sobre el esquema que pueden provocar pérdida de datos, a menos que se proporcione--force. Active solo force en una ejecución manual cuando haya revisado las operaciones planificadas. - Las áreas de trabajo deben existir. El flujo de trabajo no crea áreas de trabajo de Fabric. Créelos en el portal de Fabric y conceda primero el acceso a la entidad de servicio.