Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Automatize as implementações de uma aplicação Fabric de um repositório GitHub para um espaço de trabalho Fabric usando um fluxo de trabalho GitHub Actions. O fluxo de trabalho inicia sessão no Fabric com uma identidade de serviço, instala a CLI Rayfin e executa rayfin up para aplicar o seu código, o esquema de base de dados e o conteúdo estático ao espaço de trabalho de destino.
Este artigo mostra-lhe como:
- Prepare um principal de serviço e um espaço de trabalho Fabric para implementações automatizadas.
- Configura os segredos do repositório do GitHub que o fluxo de trabalho precisa.
- Adicione o ficheiro do fluxo de trabalho de implementação ao seu repositório.
- Acione as implementações automaticamente em
maine manualmente, com suporte opcional para alterações destrutivas. - Reutilize o mesmo fluxo de trabalho para ramos de funcionalidades e implementações específicas do ambiente.
Pré-requisitos
- Um projeto de aplicação Fabric num repositório do GitHub. Se ainda não tens um, vê Cria o teu primeiro projeto Fabric Apps e envia o código da tua aplicação para o repositório.
- Um espaço de trabalho do Fabric para o qual a entidade de serviço pode implementar. Para separação de ambientes, veja Gerir ambientes de desenvolvimento e produção.
- Um principal de serviço Microsoft Entra ID (registo de aplicações) com um cliente secreto.
- Permissão para adicionar secrets ao repositório GitHub.
Passo 1: Criar um principal de serviço para implementações
O fluxo de trabalho inicia sessão de forma não interativa, por isso usa um principal de serviço em vez de uma conta de utilizador interativa.
- No portal Azure, regista uma nova candidatura sob Microsoft Entra ID>Registos de aplicações.
- Regista o ID da Aplicação (cliente) e o ID do Diretório (inquilino).
- Em Certificados & segredos, crie um novo segredo de cliente e copie o valor. Guarde-a de forma segura: não poderá vê-la novamente mais tarde.
- Conceda ao principal de serviço a permissão Contribuidor ou superior no espaço de trabalho do Fabric de destino para que possa criar e atualizar o item de aplicação do Fabric.
Importante
As implementações de principal de serviço exigem definições de tenant Fabric que permitam aos principais de serviço utilizar APIs Fabric. Confirma com o teu administrador do Fabric que isto está ativado.
Passo 2: Adicionar segredos do repositório
No seu repositório GitHub, vá a Settings>Secrets and variables>Actions e adicione os seguintes segredos do repositório:
| Nome secreto | Value |
|---|---|
CLIENT_ID |
O ID da Aplicação (cliente) do principal do serviço. |
TENANT_ID |
O ID do Diretório (inquilino). |
CLIENT_SECRET |
O valor secreto do cliente. |
FABRIC_WORKSPACE_NAME |
O nome do espaço de trabalho do Fabric de destino (por exemplo, my-app-prod). |
Passo 3: Adicionar o ficheiro do fluxo de trabalho
No seu repositório, crie o ficheiro .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 secção faz
-
on.push: Executa o fluxo de trabalho automaticamente a cada push paramain. -
on.workflow_dispatch: Adiciona um botão Executar workflow na interface GitHub Actions com uma caixa de seleção force. Ativar force passa--forcepararayfin up, permitindo alterações destrutivas ao esquema (como eliminar colunas ou tabelas). Deixe-o sem controlo para implantações seguras e não destrutivas. -
concurrency: Garante que apenas uma implementação por ramo seja executada de cada vez. Se ocorrer um novo push enquanto uma implementação anterior ainda estiver em execução, a execução anterior é cancelada em favor do commit mais recente. Esta configuração impede que duas tarefasrayfin upentrem em conflito no mesmo espaço de trabalho. -
env: Passa as credenciais do service principal e o nome do espaço de trabalho de destino para a tarefa. -
Install Rayfin CLI: Instala a CLI globalmente, por issorayfinestá no PATH. -
Login to Fabric with service principal: Autentica usando as variáveis de ambiente*. -
Deploy to Fabric: Executarayfin upno inquilino e na área de trabalho configurados.--yesaceita prompts não destrutivos;--forcesó é adicionado quando a execução manual o tiver solicitado.
Passo 4: Desencadear uma implantação
Pode ativar o fluxo de trabalho de duas formas:
-
Automaticamente: Empurrar ou juntar um commit para o
mainbranch. - Manualmente: No GitHub, aceda a Actions>Implementar no Fabric>Executar fluxo de trabalho. Selecione o ramo a implementar e, opcionalmente, assinale Permitir alterações destrutivas ao esquema que possam resultar em perda de dados antes de iniciar a execução.
Após o fim do fluxo de trabalho, a etapa Deploy to Fabric no registo de execução imprime o URL da aplicação Fabric e o ID de implementação.
Considerações e limitações
- A concorrência é por ramo. O
concurrency.groupincluigithub.ref, pelo que as implementações em diferentes ramificações não se cancelam entre si. Este comportamento é intencional quando se mapeiam ramificações para diferentes espaços de trabalho. - As alterações destrutivas são bloqueadas por predefinição.
rayfin upRecusa operações de esquema que podem perder dados a menos que--forcesejam ultrapassadas. Ative force apenas numa execução manual quando tiver revisto as operações planeadas. - Devem existir espaços de trabalho. O fluxo de trabalho não cria espaços de trabalho Fabric. Crie-os no portal Fabric e conceda primeiro o acesso ao principal do serviço.