Saltar al contenido principal
CI/CD

Gestión del build de desarrollo y producción con GitHub Actions

Usa Capgo para lanzar tu devbuild a un canal específico y deja que tu equipo pruebe tu app de Ionic con Capacitor, sin esperar la revisión de Apple y Google

Gestión del build de desarrollo y producción con GitHub Actions

Este tutorial se centra en el hosting de GitHub, pero puedes adaptarlo fácilmente a cualquier otra plataforma de CI/CD.

Prefacio

Asegúrate de haber añadido primero tu app Capacitor a Capgo; este tutorial solo cubre la fase de upload.

Convención de commits

Primero, debes empezar a seguir la convención de commits conventional commits` esto ayudará a las herramientas a entender cómo actualizar el número de versión; se aprende en 5 min.

Commits convencionales

acciones de GitHub para tags

Luego, debes crear tu primera acción de GitHub para automatizar el build y la creación de tags.

Crea un archivo en esta ruta: .github/workflows/bump_version.yml

con este contenido:

name: Bump version

on:
  push:
    branches:
      - main
      - development

jobs:
  bump-version:
    if: "!startsWith(github.event.head_commit.message, 'chore(release):')"
    runs-on: ubuntu-latest
    name: "Bump version and create changelog with standard version"
    steps:
      - name: Check out
        uses: actions/checkout@v6
        with:
          fetch-depth: 0
          filter: blob:none
          token: '${{ secrets.PERSONAL_ACCESS_TOKEN }}'
      - name: Git config
        run: |
          git config --local user.name "github-actions[bot]"
          git config --local user.email "github-actions[bot]@users.noreply.github.com"
      - name: Create bump and changelog
        if: github.ref == 'refs/heads/main'
        run: npx capacitor-standard-version
      - name: Create bump and changelog
        if: github.ref != 'refs/heads/main'
        run: npx capacitor-standard-version --prerelease alpha
      - name: Push to origin
        run: |
          CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
          remote_repo="https://${GITHUB_ACTOR}:${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/${GITHUB_REPOSITORY}.git"
          git pull $remote_repo $CURRENT_BRANCH
          git push $remote_repo HEAD:$CURRENT_BRANCH --follow-tags --tags

Esto generará un tag por cada commit en tu rama main. Y un alpha release para development, y por último, una entrada en el changelog por cada commit en CHANGELOG.md.

No te preocupes si no tienes este archivo, se creará automáticamente.

Para que esto funcione, debes crear un TOKEN DE ACCESO PERSONAL y añadirlo a los secrets de tu GitHub secrets como PERSONAL_ACCESS_TOKEN.

Esto es necesario para que la CI pueda hacer commit del changelog y el version bump.

Al crear el token, elige como expiración never y como scope repo.

Configura la version key en tu package.json file. Usa para ello la última versión lanzada en la store.

Esto solo es necesario la primera vez; después, las herramientas lo mantendrán actualizado.

¡Ya puedes hacer commit de estos dos archivos y ver aparecer tu primer tag en GitHub!

capacitor-standard-version es el paquete que hace la magia; por defecto, también actualiza tu número de versión en Android e iOS

acciones de GitHub para el build

Crea un archivo en esta ruta: .github/workflows/build.yml

con este contenido:

name: Build source code and send to Capgo

on:
  push:
    tags:
      - '*'
      
jobs:
  deploy:
    runs-on: ubuntu-latest
    name: "Build code and release"
    steps:
      - name: Check out
        uses: actions/checkout@v6
      - name: Install dependencies
        id: install_code
        run: npm i
      - name: Build
        id: build_code
        run: npm build
        env:
          MY_ENV_VAR: ${{ secrets.MY_ENV_VAR }}
      - name: Create Release Alpha
        if: "contains(github.ref, '-alpha.')"
        id: create_release_prepro
        run: npx @capgo/cli@latest bundle upload -a ${{ secrets.CAPGO_TOKEN }} -c development
      - name: Create Release Production
        if: "!contains(github.ref, '-alpha.')"
        id: create_release_prod
        run: npx @capgo/cli@latest bundle upload -a ${{ secrets.CAPGO_TOKEN }} -c production

Esto instalará y hará el build de tu dependencia antes de enviarla a Capgo.

Si tu comando de build es distinto, puedes cambiarlo en el build_code paso.

Si necesitas una variable de entorno, usa MY_ENV_VAR y configura el secret en la configuración de tu proyecto GitHub, luego en secrets y después en GitHub Action.

Para que funcione el upload de Capgo, necesitas obtener tu clave de API para Capgo y añadirla en el secret de tu repositorio de GitHub como CAPGO_TOKEN.

¡Ahora puedes hacer commit de estos dos archivos y ver tu primera versión en Capgo!

Al hacer commit, se generará un nuevo build de Capacitor para los canales de production y development.

Deberías añadir tu test en el paso de build de Ionic para asegurarte de que tu code funciona.

Ve a tu dashboard de Capgo y revisa el build que acaba de aparecer; ya tienes tu sistema CI/CD.

Continúa desde Gestión del build de desarrollo y producción con GitHub Actions

Si estás usando Gestión del build de desarrollo y producción con GitHub Actions para planificar el enrutamiento de canales y el despliegue gradual, conéctalo con Canales para los detalles de implementación en Channels, Canales para los detalles de implementación en Channels, Canales para los detalles de implementación en Channels, Solución de beta testing para el workflow del producto en la solución de beta testing, y Solución de segmentación por versión para el workflow del producto en la solución de segmentación por versión.

Live updates para apps Capacitor

Cuando un bug de la capa web está en producción, publica el fix a través de Capgo en lugar de esperar días a la aprobación de la app store. Los usuarios reciben la actualización en segundo plano mientras los cambios nativos siguen el flujo de revisión habitual.

Lo último de nuestro blog

Capgo te da la información clave que necesitas para crear una app móvil realmente profesional.