Canales de Liberación y Ramas
Promoción staging → producción con EAS Update - un manual de recetas para canales, ramas, y el flujo de promoción lineal que mantiene la QA de vista previa alineada con el comportamiento de producción.
Busca en todas las páginas de la documentación
Promoción staging → producción con EAS Update - un manual de recetas para canales, ramas, y el flujo de promoción lineal que mantiene la QA de vista previa alineada con el comportamiento de producción.
Tarjeta de referencia rápida - lista para copiar y pegar.
// eas.json - un canal por perfil de construcción
{
"build": {
"preview": { "distribution": "internal", "channel": "preview" },
"production": { "channel": "production" }
}
}# Publicar en rama preview (prueba)
eas update --branch preview --channel preview --environment preview \
--message "feat: arreglo de validación de checkout"
# Después de la aprobación de QA - publicar el mismo commit en canal de producción
eas update --branch production --channel production --environment production \
--message "promote: arreglo de validación de checkout"# Inspeccionar qué sirve cada canal
eas channel:view production
eas update:list --branch production --limit 5Cuándo usarlo:
development → preview → production.Cuándo evitarlo:
jane-dev) - usa construcciones de vista previa + actualizaciones de rama en su lugar.Promoción staging → preview → production de extremo a extremo con tablas de canal/rama y puerta de CI.
Paso 1 - Documentar el mapa de canales
<!-- docs/release-channels.md -->
| Canal | Perfil binario | Audiencia | Quién puede publicar |
|--------------|----------------|-----------------|--------------------------|
| development | development | Ingenieros | Cualquier dev (local) |
| preview | preview | QA + stakeholders | Tech lead de turno |
| staging | preview* | Prueba pre-prod | Gerente de liberación |
| production | production | Usuarios de tienda | Solo CI tag |
* staging usa binary de perfil preview con anulación de encabezado `expo-channel-name: staging` si es necesarioPaso 2 - Conectar ramas a canales
# Una sola vez: asegurar que los canales apunten a las ramas deseadas
eas channel:create preview
eas channel:create production
eas channel:edit preview --branch preview
eas channel:edit production --branch productionPaso 3 - Trabajo de feature en preview
git checkout -b fix/checkout-validation
# ... cambios de JS solo (OTA-safe) ...
eas update --branch preview --channel preview --environment preview \
--message "fix: expresión regular de validación de tarjeta"Paso 4 - QA en binario de preview
# QA instala artefacto de eas build --profile preview
# Humo de Maestro + ruta de pago manual en dispositivo físico
eas update:list --branch preview --limit 3Paso 5 - Promocionar a producción (CI preferido)
# .github/workflows/eas-update-production.yml (extracto)
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 }}"Lo que esto demuestra:
requestHeaderseas update:list, registros de GitHub Actions)eas update --branch feature-x → escribe bundle en rama "feature-x"
eas channel:edit preview --branch feature-x → canal preview ahora sirve feature-x
La app verifica el canal "preview" → recibe la cabeza de rama feature-x| Concepto | Rol |
|---|---|
| Canal | Punto final nombrado que los dispositivos consultan (encabezado expo-channel-name) |
| Rama | Línea similar a Git de actualizaciones; mantiene el historial de bundles |
| Perfil de construcción | Incorpora canal predeterminado en binario a través de eas.json |
eas update --channel production publica en la rama actualmente vinculada a production--branch al promocionar para que el historial permanezca rastreableeas channel:view <name> muestra el mapeo de rama y el ID de actualización actualdevelopment → preview (QA) → staging (prueba opcional) → production
↑ ↑ ↑ ↑
ingeniero construcción interna prueba 24-48h solo CI tag# Basado en trunk: publicar desde main a rama preview
git checkout main
eas update --branch preview --channel preview --environment preview
# GitFlow: publicar desde release/x.y a rama staging
git checkout release/2.4
eas update --branch staging --channel staging --environment stagingproduction desde ramas de feature sin fusionarCuando preview y production deben ejecutar el mismo artefacto de bundle:
# Opción A - cherry-pick commit y publicar en rama de producción
git checkout main
git cherry-pick <preview-commit-sha>
eas update --branch production --channel production --environment production \
--message "promote: <ticket-id>"
# Opción B - redirección de canal (avanzado; usa con cuidado)
eas channel:edit production --branch preview
# Sigue inmediatamente con división de rama si preview continúa divergiendopreview nunca ve actualizaciones de production. Solución: Reconstruye o coincide el canal de publicación con el encabezado incorporado..env local en publicación de producción - Host de API incorrecto en bundle de OTA. Solución: eas update --environment production siempre.projectId, canal e ID de bundle por variante.| Alternativa | Usalo cuando | No lo uses cuando |
|---|---|---|
| Rama por feature Git | QA paralela de features | Demasiadas ramas obsoletas |
Rama main única para todos los canales | Equipo pequeño, flujo lineal | Necesitas pruebas paralelas |
eas channel:rollout | Exposición de producción gradual | Necesitas prueba completa en preview primero |
| Liberaciones solo de tienda | Nativo cada sprint | Arreglos de JS solo semanal |
Mínimo: development, preview, production. Agrega staging cuando rutas de ingresos necesitan prueba de 48h. Evita canales por persona.
Técnicamente sí, pero borra rastros de auditoría de promoción. Prefiere ramas separadas y promueve a través de publicación explícita o edición de canal documentada.
eas channel:view production
eas update:view <update-id>--channel publica en la rama vinculada a ese canal. --branch dirige una rama directamente. Usa ambas para claridad durante promoción.
Altamente recomendado. La publicación de laptop de break-glass necesita segundo aprobador, captura de pantalla de eas update:list, y requisito de postmortem.
requestHeadersVersiones de stack: Esta página fue escrita para React 19.2.3, React Native 0.86.0, y Expo SDK 57 (
expo~57.0.4).
Revisado por Chris St. John·Última actualización: 16 jul 2026