Automatisierung · Repository anbinden
Leiten Sie Jobs mit eindeutigen Labels an diesen Mac
Der Mac ist exklusiv Ihrem Team zugeordnet. Wie viele Builds parallel laufen können, hängt dennoch von Arbeitsspeicher, Speicherplatz und der Isolierung der Jobs ab. Testen Sie zunächst die gesamte Pipeline mit einem Build und erhöhen Sie erst danach die Parallelität.
GitHub Actions: self-hosted runner
Fügen Sie in den Actions-Einstellungen Ihres Repositorys oder Ihrer Organisation einen self-hosted runner hinzu und wählen Sie macOS und ARM64 aus. Führen Sie die dort aktuell bereitgestellten Befehle zum Herunterladen, Prüfen und Registrieren aus. Verwenden Sie keine Installationspakete aus unbekannten Quellen.
Registrieren Sie den Runner mit einem eigens dafür vorgesehenen Systembenutzer und vergeben Sie Labels wie vmfly und ios-build. Richten Sie runs-on im Workflow auf die passenden Labels aus, damit Jobs nicht länger in einer gemeinsam genutzten Ausführungsumgebung landen.
runs-on: [self-hosted, macOS, ARM64, vmfly, ios-build]
GitLab Runner
Verwenden Sie eine Runner-Version, die mit Ihrer GitLab-Umgebung kompatibel ist, und erstellen Sie den Runner nach dem Ablauf für Ihr Projekt oder Ihre Gruppe. Verwenden Sie unter macOS den Shell-Executor und versehen Sie den Mac mit dem Label macos-arm64 sowie passenden Labels für den Einsatzzweck.
Geben Sie in den Pipeline-Jobs dieselben Tags an. Stellen Sie sicher, dass das Arbeitsverzeichnis dem ausführenden Benutzer gehört. Auch auf Zertifikate, Abhängigkeits-Caches und Build-Ausgaben sollte derselbe Benutzer zugreifen können. So vermeiden Sie, dass Befehle im interaktiven Terminal funktionieren, automatisierte Jobs aber fehlschlagen.
ios_archive:
tags:
- macos-arm64
- ios-build
script:
- bundle exec fastlane gym
Neustart in die Abnahme einbeziehen
Für einen GitHub Runner können Sie im Registrierungsverzeichnis das Serviceskript mit ./svc.sh install und ./svc.sh start ausführen. Bei einem GitLab Runner verwenden Sie je nach Installationsart gitlab-runner install und gitlab-runner start. Richten Sie für denselben Runner nicht mehrere Autostart-Mechanismen ein.
Dienste, die unter macOS als LaunchAgent eines Benutzers laufen, hängen in der Regel von dessen angemeldeter Sitzung ab. Prüfen Sie die tatsächlich erzeugte Dienstkonfiguration und den ausführenden Benutzer. Ein gestarteter Mac bedeutet nicht automatisch, dass der Build-Benutzer angemeldet ist. Testen Sie nach einem Neustart, ob der Runner online geht, Pfade stimmen, der Schlüsselbund verfügbar ist und Artefakte exportiert werden können – am besten außerhalb eines Release-Laufs.
Signiermaterial sicher verwahren
Übertragen Sie Build-Zertifikate und Provisioning-Profile ausschließlich über einen vom Team genehmigten sicheren Weg. Ein Zertifikat muss den zugehörigen privaten Schlüssel enthalten; ein öffentliches Zertifikat allein reicht zum Signieren nicht aus. Hinterlegen Sie Entsperrpasswörter und Automatisierungstoken in geschützten CI-Variablen und beschränken Sie den Zugriff auf die erforderlichen Branches und Jobs.
Teams, die fastlane match nutzen, sollten die bestehende Speicher- und Zugriffsrichtlinie beibehalten. Wenn CI bereits vorhandenes Signiermaterial abruft, verwenden Sie nach Möglichkeit den schreibgeschützten Modus. Prüfen Sie Bundle Identifier, Team, Exportoptionen und Gültigkeit des Provisioning-Profils, bevor Sie den Archivierungsbefehl selbst untersuchen.
Unbeaufsichtigte Jobs müssen auf den vorgesehenen Schlüsselbund zugreifen können. Schreiben Sie dauerhafte Klartextpasswörter nicht in Skripte und geben Sie nicht sämtliche Umgebungsvariablen im Log aus. Entfernen Sie vor dem Teilen von Logs private Schlüssel, Token, Passwörter und Inhalte von Signiermaterial.