2026 Notarisation Apple en CI Mac cloud : identifiants notarytool, refus fréquents et matrice « SSH headless vs courte session bureau »
Beaucoup d’équipes stabilisent xcodebuild archive sur des nœuds Mac loués mais bloquent sur la notarisation : clés API mal injectées, refus Apple opaques, ou pipeline qui ne passe qu’avec une session graphique locale. Ce guide structure le tri : un tableau classe les symptômes, une matrice tranche SSH pur versus fenêtre bureau courte, et un runbook en cinq étapes couvre notarytool submit, le polling, stapler, l’archivage des journaux et le rollback. Des repères disque et parallélisme complètent les revues capacité 2026.
Sommaire
1. Trois chaînes à séparer
Sur Mac cloud auto-hébergés, on regroupe souvent signature de code, notarisation Apple et upload App Store Connect / TestFlight dans le même coffre de secrets. Les chaînes se touchent mais n’utilisent ni les mêmes points de terminaison ni les mêmes messages d’erreur.
- Signature : profils, chaînes de certificats et drapeaux Hardened Runtime pilotent
codesign; les journaux vivent surtout dansxcodebuild. - Notarisation : vous envoyez zip, dmg ou bundles signés ; les refus apparaissent dans le JSON
notarytoolounotarytool log, pas dans le compilateur. - Upload : Transporter, outils successeurs ou Fastlane
upload_to_testflightemploient d’autres clés API que la notarisation. Un seul pot de secrets casse la logique en couches.
Sans séparation, vous brûlez des fenêtres nocturnes sur « vert en local, rouge en CI ». Pour une automatisation SSH façon VPS sur macOS, la découpe est le prérequis.
Industrialisez la séparation avec des modèles de pipeline distincts, des scopes de secrets différents et des profils de timeout dédiés, afin qu’une lenteur notary ne soit pas prise pour une régression compilateur et que des builds rapides ne meurent pas sur des timeouts d’upload trop courts. Des chemins d’artefacts explicites comme build/ipa, notary/logs et store/receipts aident support et sécurité à identifier la couche immédiatement.
Les équipes venues de flottes Linux sous-estiment souvent à quel point macOS diffère sur les répertoires temporaires, le trousseau et DerivedData. Un job de notarisation semble léger mais décompresse localement et à distance de gros archives, créant des pics d’E/S qui entrent en collision avec des xcodebuild parallèles. La notarisation doit donc figurer dans la même feuille capacité que la parallélisation compilateur, pas en note de bas de page.
2. Taxonomie
Utilisez le tableau en post-mortem pour décider si vous inspectez d’abord les entitlements ou le réseau et les clés. Exploitation et développement doivent partager les mêmes tableaux de bord sur latences notary et durées d’upload, sinon les responsabilités se contredisent.
| Symptôme | Cause probable | Premier geste |
|---|---|---|
| Échec d’auth immédiat | Mauvais issuer, clé expirée, secret tronqué | Rôle de clé, chemin .p8, sauts de ligne CI |
| Long « In Progress » | File Apple, gros paquet | Conserver submission id, tirer les logs, allonger backoff |
| Erreurs Hardened Runtime | Helpers non signés, entitlements risqués | codesign --verify profond, diff entitlements |
| Vert en local avec GUI seulement | Trousseau ou interaction | Matrice §3, file VNC courte |
3. Headless vs bureau
Le Mac cloud brille quand launchd, SSH et la supervision ressemblent à une ferme Linux. La notarisation traîne parfois des hypothèses GUI ou trousseau. La matrice est technique ; la sécurité tranche la frontière.
| Axe | Headless par défaut | Bureau / VNC court |
|---|---|---|
| Identifiants | Clé API + flags notarytool non interactifs | Dialogues trousseau ou outils GUI obligatoires |
| Audit | Journaux dans le build, versionnés avec artefacts | Preuve de chaque clic plus coûteuse |
| Stabilité | Idéal 24/7 et multi-branches | Rare, file séparée des pics compile |
| Adéquation Mac cloud | PATH figé via launchd, CLI versionnée | File notary isolée, éviter contention CPU/IO |
4. Runbook en cinq étapes
Séquence portable entre fournisseurs CI en 2026 ; validez toujours les flags contre vos Command Line Tools installés.
- Épingler la toolchain. Documenter
xcodebuild -versionsur l’image et le sélectionner explicitement en CI pour éviter que des mises à jour silencieuses bouleversent le comportement notary. - Préparer le paquet. sha256 pour zip/dmg/pkg, droits de lecture CI, espace scratch pour gros bundles.
- Soumettre avec ID.
notarytool submitavec clé API ; stdout/JSON versartifacts/notary/submit.logpour corrélation Apple. - Poller.
notarytool infoavec backoff exponentiel ; en échec attachernotarytool logau magasin d’artefacts. - Stapler et rollback. Succès :
xcrun stapler staplesur le support de distribution ; journaliser ; échec staple : bloquer le train de release et conserver la dernière version staplée saine.
Injectez les commandes via un chargeur de secrets, jamais d’écho de clés dans les logs console ; exportez NOTARY_SUBMISSION_ID comme champ artefact dédié pour le support.
Après chaque succès, lancez un smoke test court sur une VM neuve ou un second nœud Mac qui n’installe que le paquet staplé : vous détectez la dérive entre QA interne et ce que les clients voient avec Gatekeeper avant les notes de version.
5. Chiffres
Pour revues SRE et capacité : recoupez toujours la doc Apple et la conformité.
Dans les réseaux d’entreprise, les listes proxy blanches couvrent souvent Git et les registres conteneurs mais oublient les domaines notary et Transporter, d’où des timeouts aléatoires qui survivent aux simples retries car le proxy répond à moitié. Ajoutez les exceptions Apple dans le même changement que l’extension de runners et documentez-les dans le runbook réseau à côté des chemins Xcode et CocoaPods déjà connus.
Autre schéma : rotation des clés. Si une même clé API modifie les métadonnées App Store Connect et téléverse des binaires, la fuite agrège les dommages. Séparez les rôles moindre privilège et automatisez les rappels dans votre outil de tickets plutôt que de compter uniquement sur les e-mails Apple. Sur nœuds Mac loués, utilisez des utilisateurs CI distincts ou au minimum des partitions de trousseau pour build, notary et upload afin qu’un compartiment compromis n’expose pas toute la chaîne.
- Disque scratch : ~25 Go de marge sur le volume système après archives ; sous ~10 Go, refuser de nouveaux jobs notary ou purger
DerivedDataet vieuxipa. - Polling : séparer métriques « soumis » et « accepté » ; plafond 45–90 minutes par soumission selon taille pour alerter sur les blocages.
- Parallélisme : au plus deux
notarytoolsimultanés par hôte ; décaler des picsxcodebuild. - Journaux : JSON/texte ≥ 90 jours ; compartiment distinct des logs upload TestFlight pour éviter qu’une clé mal scope empoisonne deux triages.
- Clés : clé API dédiée notary, séparée des clés métadonnées ; rotation ~90 jours ou mouvement personnel.
Notariser uniquement sur portable heurte sommeil, VPN et politiques locales. Les runners hébergés à la minute rendent gros paquets et files d’attente coûteux et peu reproductibles. La capacité Mac cloud dédiée réduit cette friction car vous gardez la discipline SSH Linux tout en conservant le matériel Apple pour chaînes d’outils et secrets matériels.
6. FAQ
Notariser avant TestFlight ? Typiquement signer et notariser ou stapler puis uploader—figer l’ordre dans le runbook pour éviter plaintes Gatekeeper quand App Store Connect affiche « ready ». Hors store, gardez journaux notary et reçus upload séparés. Si marketing ou support distribue des binaires, tracez quelle version staplée et quels reçus vont avec quel commit, sinon les enquêtes post-incident laissent des trous.
TLS ou proxy capricieux ? Règles HTTPS_PROXY/NO_PROXY distinctes pour points notary et hôtes upload sont fréquentes.
Supprimer VNC ? Souvent oui en pipelines modernes ; pour trousseau résiduel, préférez scinder secrets et une porte manuelle rare plutôt qu’un bureau partagé permanent. Documentez les exceptions dans le manuel d’exploitation pour que l’astreinte sache si un écran ouvert est normal.
Les flottes Linux seules ne remplacent pas le matériel Apple pour distribuer iOS et macOS. À long terme, louer de la capacité Mac coûte souvent moins en charge totale que bichonner du hardware perso, car vous combinez prévisibilité, audit des clés API et versions d’outil figées. Croisez cet article avec le guide TestFlight VPSMAC pour aligner jobs, secrets et ordre en une passe. Pour stabiliser l’outillage Apple tout en gardant un modèle d’exploitation proche du VPS, les nœuds Mac loués VPSMAC offrent généralement un meilleur équilibre que des postes improvisés ou des pools à la minute onéreux, ce qui recentre l’équipe sur des releases reproductibles plutôt que sur des interventions ad hoc.