Intégration CI

Contrôler l’enregistrement Android dans GitHub Actions

Le workflow de release peut vérifier l’applicationId de production et l’empreinte du certificat avant la promotion. La clé API doit rester un secret CI chiffré ou être placée derrière un proxy interne contrôlé.

En bref

Ajoutez à GitHub Actions un contrôle préalable de l’enregistrement Android sans exposer la clé API Google.

Pour qui: Équipes qui utilisent GitHub Actions pour compiler, signer et publier leurs applications Android.

Étapes de publication

  1. Résoudre l’applicationId de la variante de production.
  2. Extraire le SHA-256 public du certificat de l’artefact signé.
  3. Appeler l’API Status officielle depuis un job protégé ou un endpoint d’équipe.
  4. Bloquer la promotion sur un état non résolu ou une différence de certificat, avec une procédure d’exception manuelle.

Repères

SecretGoogle API key
Sortie de build sûrePublic certificate SHA-256
Contrôle recommandéBefore store promotion
Point d’attention

N’affichez jamais la clé API, le mot de passe du keystore ou la clé privée dans les journaux Actions. Une empreinte de certificat publique n’est pas une clé privée.

Conseils détaillés

Un job de contrôle avant release

Exécutez le contrôle après la signature de l’APK de release et avant la promotion vers le store. Placez la clé API Google dans les secrets GitHub Actions, limitez-la à l’Android Developer ID Status API et évitez les contextes de pull request où du code non fiable pourrait accéder aux identifiants de release.

L’exemple minimal ci-dessous ne contrôle que le nom de package. Pour valider aussi la signature, ajoutez certificateFingerprint avec le SHA-256 du certificat de production. Analysez state avec jq ; échouez pour les états stables non résolus et n’appliquez un backoff borné qu’à RESOURCE_EXHAUSTED, INTERNAL et UNAVAILABLE.

  • Ne jamais afficher la clé API.
  • Ajouter certificateFingerprint pour contrôler le certificat de production.
  • Conserver l’artefact de statut sans secret de signature.
Exemple minimal GitHub Actions — package seul
- name: Check Android registration
  env:
    API_KEY: ${{ secrets.ANDROID_DEVELOPER_ID_API_KEY }}
    PACKAGE_NAME: com.example.app
  run: |
    curl --fail --silent --show-error \
      -H "X-Goog-Api-Key: $API_KEY" \
      "https://androiddeveloperidstatus.googleapis.com/v1/packages/$PACKAGE_NAME/packageRegistrationStatus:check" \
      | tee status.json
    test "$(jq -r .state status.json)" = "REGISTERED"

Saisissez le nom de production et, pour contrôler la signature, l’empreinte SHA-256 du certificat de l’APK livré aux utilisateurs. L’API indique l’état d’enregistrement, pas l’approbation du store.

Lancer la vérification →

Questions fréquentes

La CI doit-elle appeler l’endpoint web de PkgReady ?

Non. Une CI doit appeler l’API serveur à serveur officielle avec une clé protégée appartenant à votre organisation.

Quels résultats doivent bloquer la release ?

Bloquez NOT_REGISTERED et la différence de certificat. Traitez les erreurs de quota ou de service comme des incidents d’infrastructure, avec un nombre borné de tentatives.

Sources et révision

Dernière révision: