Zum Hauptinhalt springen
CI/CD

Dev- und Prod-Builds mit GitHub Actions verwalten

Nutze Capgo, um deinen Devbuild in einen bestimmten Channel zu releasen, und lass dein Team deine Capacitor Ionic App testen, ohne auf das Review von Apple und Google zu warten.

Dev- und Prod-Builds mit GitHub Actions verwalten Capgo Blog-Illustration

Dieses Tutorial konzentriert sich auf das GitHub Hosting, lässt sich aber mit kleinen Anpassungen auf jede andere CI/CD-Plattform übertragen.

Vorwort

Stelle sicher, dass du deine Capacitor App zuerst zu Capgo hinzugefügt hast; dieses Tutorial konzentriert sich nur auf die Upload-Phase.

Commit-Konvention

Zuerst musst du die Commit-Konvention befolgen Conventional Commits` damit das Tooling versteht, wie die Versionsnummer hochgezogen wird. Das lernt man in 5 Minuten.

Conventional Commits

GitHub-Actions für Tags

Dann musst du deine erste GitHub-Action erstellen, um automatisch zu bauen und Tags zu erstellen.

Erstelle eine Datei unter diesem Pfad: .github/workflows/bump_version.yml

mit diesem Inhalt:

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

Dies veröffentlicht ein Tag für jeden Commit in deinem main-Branch. Und ein alpha Release für development, und schließlich einen Changelog-Eintrag für jeden Commit in CHANGELOG.md.

Keine Sorge, falls diese Datei noch nicht existiert – sie wird automatisch für dich erstellt.

Damit das funktioniert, musst du einen PERSONAL ACCESS TOKEN erstellen und ihn zu deinen GitHub Secrets als PERSONAL_ACCESS_TOKEN.

Das ist nötig, damit die CI das Changelog und den Version-Bump committen kann.

Wähle beim Erstellen des Tokens als Ablaufdatum never und als Scope repo.

Setze den version Key in deiner package.json Datei. Nutze dafür die zuletzt im Store veröffentlichte Version.

Das ist nur beim ersten Mal nötig, danach halten die Tools es aktuell.

Du kannst nun beide Dateien committen und siehst deinen ersten Tag in GitHub!

capacitor-standard-version ist das Paket, das die Magie übernimmt. Standardmäßig aktualisiert es auch deine Versionsnummer für Android und iOS.

GitHub Actions für den Build

Erstelle eine Datei unter diesem Pfad: .github/workflows/build.yml

mit diesem Inhalt:

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

Dadurch wird deine Dependency installiert und gebaut, bevor sie an Capgo gesendet wird.

Falls dein Build-Befehl anders lautet, kannst du ihn hier ändern: build_code Schritt.

Wenn du eine Umgebungsvariable benötigst, verwende die MY_ENV_VAR und setze die secret in den Einstellungen deines GitHub-Projekts, dann Secret und dann GitHub Action.

Damit der Capgo-Upload funktioniert, musst du deinen API-Key für Capgo abrufen und ihn in die Secret deines GitHub Repositories hinzu als CAPGO_TOKEN.

Du kannst jetzt beide Dateien committen und deine erste Version in Capgo sehen!

Der Commit erzeugt einen neuen Capacitor-Build für die Produktions- und Entwicklungskanäle.

Füge deinen Test in den Ionic-Build-Schritt ein, um sicherzustellen, dass dein code funktioniert.

Gehe zu deinem Capgo Dashboard und überprüfe deinen soeben erstellten Build – dein CI/CD-System steht nun bereit.

Mach weiter mit: Entwicklung und Produktion mit GitHub-Actions verwalten

Wenn du es nutzt Dev- und Prod-Builds mit GitHub Actions verwalten um Channel-Routing und Staged Rollout zu planen, verbinde es mit Kanäle für die Implementierungsdetails in Channels, Kanäle für die Implementierungsdetails in Channels, Kanäle für die Implementierungsdetails in Channels, Beta-Testing-Lösung für den Produkt-Workflow in der Beta-Testing-Lösung, und Version-Targeting-Lösung für den Produkt-Workflow in der Version-Targeting-Lösung.

Live-Updates für Capacitor-Apps

Wenn ein Bug im Web-Layer live ist, liefere den Fix über Capgo aus, statt Tage auf die App-Store-Freigabe zu warten. Nutzer bekommen das Update im Hintergrund, während native Änderungen im normalen Review-Prozess bleiben.

Neues aus unserem Blog

Capgo gibt dir die besten Insights, um eine wirklich professionelle Mobile App zu erstellen.