概要
Android パッケージ登録 CI を GitHub Actions に追加し、Google API キーを公開せずに本番リリースを事前確認します。
対象: GitHub Actions で Android のビルド、署名、リリースを自動化するチーム。
確認手順
- リリース バリアントから本番 application ID を取得する。
- 署名済みアーティファクトから公開 SHA-256 フィンガープリントを抽出する。
- 保護されたジョブまたはチーム エンドポイントから公式 Status API を呼ぶ。
- 未登録または不一致なら昇格を止め、手動例外の方針を適用する。
要点
Actions ログに API キー、キーストア パスワード、秘密署名鍵を出さないでください。公開証明書フィンガープリントは秘密鍵ではありません。
詳しい解説
リリース ゲートのジョブ
リリース APK の署名後、ストア昇格前に照会します。Google API キーは GitHub Actions secrets に保存し、Android Developer ID Status API だけに制限します。信頼できないコードがリリース資格情報へ触れる pull_request コンテキストを避けます。
以下はパッケージ名だけを確認する最小例です。証明書まで検証するには署名済みアーティファクトから SHA-256 を取得し、リクエストに certificateFingerprint を追加します。jq で state を解析し、安定した未解決状態は即時に失敗させ、RESOURCE_EXHAUSTED、INTERNAL、UNAVAILABLE だけを上限付き指数バックオフで再試行します。
- API キーを echo しない。
- リリース ジョブのサードパーティ Actions をコミット SHA で固定する。
- 署名秘密情報を含めず状態アーティファクトを保存する。
- 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"製品版のパッケージ名を入力し、署名も照合する場合は配布 APK の証明書 SHA-256 を追加します。ストア審査やアプリの安全性とは別の確認です。
ステータスを確認 →よくある質問
CI から PkgReady のブラウザ用エンドポイントを呼ぶべきですか?
いいえ。CI は組織が所有し保護する API キーを使い、公式のサーバー間 API を直接呼びます。
どの結果でリリースを失敗させますか?
NOT_REGISTERED と証明書不一致では失敗させます。割り当て超過やサービス障害は、上限付き再試行を伴うインフラ障害として扱います。
出典と更新情報
最終確認日: