Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Automatize as implantações de um aplicativo Fabric de um repositório GitHub para um workspace Fabric usando um fluxo de trabalho GitHub Actions. O fluxo de trabalho faz login no Fabric com uma entidade de serviço, instala a CLI do Rayfin e executa o rayfin up para aplicar seu código, o esquema do banco de dados e o conteúdo estático ao espaço de trabalho de destino.
Este artigo mostra como:
- Preparar uma entidade de serviço e um workspace do Fabric para implantações automatizadas.
- Configure os segredos do repositório GitHub que o fluxo de trabalho precisa.
- Adicione o arquivo de fluxo de trabalho de implantação ao repositório.
- Acionar implantações automaticamente no
maine manualmente, com suporte opcional a alterações destrutivas. - Reutilize o mesmo fluxo de trabalho para branches de funcionalidade e implantações específicas para cada ambiente.
Pré-requisitos
- Um projeto de aplicativo Fabric em um repositório GitHub. Se você ainda não tiver um, consulte Criar seu primeiro projeto Fabric Apps e efetuar push do código do aplicativo para o repositório.
- Um workspace Fabric no qual a entidade de serviço pode implantar. Para separar ambientes, consulte Gerenciar ambientes de desenvolvimento e produção.
- Uma entidade de serviço Microsoft Entra ID (registro de aplicativo) com um segredo do cliente.
- Permissão para adicionar secrets ao repositório GitHub.
Etapa 1: Criar uma entidade de serviço para implantações
O fluxo de trabalho faz login de modo não interativo, portanto usa um principal de serviço em vez de uma conta de usuário interativa.
- No portal Azure, registre um novo aplicativo em Microsoft Entra ID>Registros de aplicativo.
- Registre a ID do Aplicativo (cliente) e a ID do Diretório (tenant).
- Em Certificados &segredos, crie um novo segredo do cliente e copie o valor. Armazene-o com segurança: não é possível exibi-lo novamente mais tarde.
- Conceda à entidade de serviço permissão Contributor ou superior no workspace Fabric de destino para que ele possa criar e atualizar o item do aplicativo Fabric.
Importante
As implantações de service principal exigem configurações de locatário do Fabric que permitam que os service principals usem as APIs do Fabric. Confirme com o administrador do Fabric que isso está habilitado.
Etapa 2: Adicionar segredos do repositório
No repositório GitHub, vá para Settings>Secrets e variáveis>Actions e adicione os seguintes segredos do repositório:
| Nome do segredo | Value |
|---|---|
CLIENT_ID |
A ID do aplicativo (cliente) da entidade de serviço. |
TENANT_ID |
O ID do Diretório (locatário). |
CLIENT_SECRET |
O valor do segredo do cliente. |
FABRIC_WORKSPACE_NAME |
O nome do espaço de trabalho de destino do Fabric (por exemplo, my-app-prod). |
Etapa 3: Adicionar o arquivo de fluxo de trabalho
No repositório, crie o arquivo .github/workflows/deploy-to-fabric.yml com o seguinte conteúdo:
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
O que cada seção faz
-
on.push: executa o fluxo de trabalho automaticamente em cada push paramain. -
on.workflow_dispatch: adiciona um botão Run workflow na interface do GitHub Actions com uma caixa de seleção force. Ativar force passa--forcepararayfin up, permitindo alterações destrutivas no esquema (como a remoção de colunas ou tabelas). Deixe-o desmarcado para implantações seguras e não destrutivas. -
concurrency: Garante que apenas uma implantação por ramificação seja executada por vez. Se um novo push ocorrer enquanto um deploy anterior ainda estiver em execução, a execução anterior será cancelada em favor do commit mais recente. Essa configuração impede que duas tarefasrayfin upsejam executadas simultaneamente no mesmo workspace. -
env: Passa as credenciais da entidade de serviço e o nome do espaço de trabalho de destino ao trabalho. -
Install Rayfin CLI: Instala a CLI globalmente para querayfinfique no PATH. -
Login to Fabric with service principal: autentica usando as variáveis de ambiente*. -
Deploy to Fabric: executarayfin upno locatário e no espaço de trabalho configurados.--yesaceita prompts não destrutivos;--forceé adicionado somente quando a execução manual o solicitou.
Etapa 4: Acionar uma implantação
Você pode disparar o fluxo de trabalho de duas maneiras:
-
Automaticamente: envie ou mescle um commit no ramo
main. - Manualmente: no GitHub, acesse Actions>Implantar no Fabric>Executar fluxo de trabalho. Selecione a ramificação a ser implantada e, opcionalmente, marque Permitir alterações destrutivas no esquema que podem resultar em perda de dados antes de iniciar a execução.
Após a conclusão do fluxo de trabalho, a etapa Deploy para Fabric no log de execução imprime a URL do aplicativo Fabric e a ID da implantação.
Considerações e limitações
- A concorrência é por branch. O
concurrency.groupincluigithub.ref, portanto, implantações em branches diferentes não cancelam umas às outras. Esse comportamento é intencional quando você mapeia ramificações em espaços de trabalho diferentes. - As alterações destrutivas são bloqueadas por padrão.
rayfin uprecusa operações de esquema que podem perder dados, a menos que sejam passadas--force. Ative force apenas em uma execução manual depois de revisar as operações planejadas. - Os espaços de trabalho devem existir. O fluxo de trabalho não cria espaços de trabalho do Fabric. Crie-os no portal do Fabric e primeiro conceda acesso à entidade de serviço.