Canais & Branches de Lançamento
Promoção de Staging → produção com EAS Update - um guia para canais, branches e o fluxo de promoção linear que mantém o QA de preview alinhado com o comportamento de produção.
Busque em todas as páginas da documentação
Promoção de Staging → produção com EAS Update - um guia para canais, branches e o fluxo de promoção linear que mantém o QA de preview alinhado com o comportamento de produção.
Cartão de receita de referência rápida - pronto para copiar e colar.
// eas.json - canal por perfil de build
{
"build": {
"preview": { "distribution": "internal", "channel": "preview" },
"production": { "channel": "production" }
}
}# Publicar para o branch de preview (soak)
eas update --branch preview --channel preview --environment preview \
--message "feat: correção de validação de checkout"
# Após aprovação do QA - publicar o mesmo commit para o canal de produção
eas update --branch production --channel production --environment production \
--message "promote: correção de validação de checkout"# Inspecionar o que cada canal serve
eas channel:view production
eas update:list --branch production --limit 5Quando usar isto:
development → preview → production.Quando evitar:
jane-dev) - use builds de preview + atualizações de branch em vez disso.Promoção ponta a ponta de staging → preview → production com tabelas de canal/branch e gate de CI.
Passo 1 - Documentar o mapa de canais
<!-- docs/release-channels.md -->
| Channel | Binary profile | Audience | Who may publish |
|--------------|----------------|-----------------|----------------------|
| development | development | Engineers | Any dev (local) |
| preview | preview | QA + stakeholders | Tech lead on-call |
| staging | preview* | Pre-prod soak | Release manager |
| production | production | Store users | CI tag only |
* staging uses preview profile binary with `expo-channel-name: staging` header override if neededPasso 2 - Conectar branches a canais
# Uma vez: garantir que os canais apontem para os branches pretendidos
eas channel:create preview
eas channel:create production
eas channel:edit preview --branch preview
eas channel:edit production --branch productionPasso 3 - Trabalho de funcionalidade em preview
git checkout -b fix/checkout-validation
# ... Apenas alterações em JS (seguras para OTA) ...
eas update --branch preview --channel preview --environment preview \
--message "fix: regex de validação de cartão"Passo 4 - QA no binário de preview
# QA instala o artefato eas build --profile preview
# Maestro smoke + caminho de pagamento manual em dispositivo físico
eas update:list --branch preview --limit 3Passo 5 - Promover para produção (CI preferencial)
# .github/workflows/eas-update-production.yml (excerpt)
name: Promote OTA to production
on:
workflow_dispatch:
inputs:
message:
required: true
jobs:
update:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: expo/expo-github-action@v8
with:
eas-version: latest
token: ${{ secrets.EXPO_TOKEN }}
- run: eas update --branch production --channel production \
--environment production \
--message "${{ github.event.inputs.message }}"O que isso demonstra:
requestHeaderseas update:list, logs do GitHub Actions)eas update --branch feature-x → escreve o bundle para o branch "feature-x"
eas channel:edit preview --branch feature-x → o canal preview agora serve feature-x
App consulta o canal "preview" → recebe a cabeça do branch feature-x| Conceito | Papel |
|---|---|
| Canal | Ponto de extremidade nomeado que os dispositivos consultam (header expo-channel-name) |
| Branch | Linha de atualizações similar ao Git; armazena o histórico de bundles |
| Perfil de Build | Embuta o canal padrão no binário via eas.json |
eas update --channel production publica no branch atualmente vinculado a production--branch explícito ao promover para que o histórico permaneça rastreáveleas channel:view <name> mostra o mapeamento do branch e o ID da atualização atualdevelopment → preview (QA) → staging (soak opcional) → production
↑ ↑ ↑ ↑
engenheiro build interno soak de 24–48h apenas CI tag# Trunk-based: publicar de main para o branch preview
git checkout main
eas update --branch preview --channel preview --environment preview
# GitFlow: publicar de release/x.y para o branch staging
git checkout release/2.4
eas update --branch staging --channel staging --environment stagingproduction de branches de funcionalidade não mescladosQuando preview e production devem executar o mesmo artefato de bundle:
# Opção A - cherry-pick do commit e publicar para o branch de produção
git checkout main
git cherry-pick <preview-commit-sha>
eas update --branch production --channel production --environment production \
--message "promote: <ticket-id>"
# Opção B - redirecionamento de canal (avançado; use com cuidado)
eas channel:edit production --branch preview
# Siga imediatamente com a divisão do branch se preview continuar divergindopreview nunca vê atualizações de production. Correção: Reconstruir ou corresponder o canal de publicação ao header embutido..env local na publicação de produção - Host de API errado no bundle OTA. Correção: Sempre eas update --environment production.projectId, canal e ID de bundle separados por variante.| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| Branch por funcionalidade Git | QA paralelo de funcionalidades | Muitos branches obsoletos |
Único branch main para todos os canais | Equipe pequena, fluxo linear | Necessidade de soaks paralelos |
eas channel:rollout | Exposição gradual em produção | Necessidade de soak completo em preview primeiro |
| Lançamentos apenas na loja | Native a cada sprint | Correções semanais apenas em JS |
Mínimo: development, preview, production. Adicione staging quando caminhos de receita precisarem de soak de 48h. Evite canais por pessoa.
Tecnicamente sim, mas isso apaga as trilhas de auditoria de promoção. Prefira branches separados e promova via publicação explícita ou edição de canal documentada.
eas channel:view production
eas update:view <update-id>--channel publica no branch vinculado a esse canal. --branch visa um branch diretamente. Use ambos para clareza durante a promoção.
Fortemente recomendado. A publicação de emergência em laptop requer um segundo aprovador, captura de tela do eas update:list e requisito de postmortem.
requestHeadersVersões da Stack: Esta página foi escrita para React 19.2.3, React Native 0.86.0 e Expo SDK 57 (
expo~57.0.4).
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026