Resumo
Adicione uma consulta de registro ao GitHub Actions sem expor a chave da API do Google.
Para quem: Equipes que automatizam build, assinatura e lançamento Android com GitHub Actions.
Etapas do lançamento
- Resolva o applicationId de produção a partir da variante de release.
- Extraia a impressão SHA-256 pública do artefato assinado.
- Chame a API oficial em um job protegido ou endpoint interno.
- Bloqueie a promoção em status pendente ou divergente, com política de exceção manual.
Informações-chave
Nunca grave a chave da API, a senha do keystore ou a chave privada nos logs. A impressão pública do certificado não é a chave privada.
Orientação detalhada
Um job como gate do release
Execute após assinar o APK e antes de promovê-lo. Guarde a chave em GitHub Actions Secrets, restrinja-a à Android Developer ID Status API e evite contextos de pull request em que código não confiável acessa credenciais de release.
O trecho abaixo é um exemplo mínimo que consulta apenas o pacote. Para validar a assinatura, acrescente certificateFingerprint com o SHA-256 do APK de produção. Analise state com jq; estados estáveis bloqueiam o release e RESOURCE_EXHAUSTED, INTERNAL e UNAVAILABLE recebem apenas backoff limitado.
- Nunca exiba a chave da API.
- Fixe a versão de Actions de terceiros no job de release.
- Inclua certificateFingerprint para conferir a assinatura de produção.
- 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"Informe o nome de produção e, para conferir a assinatura, o SHA-256 do certificado do APK entregue aos usuários. A consulta não substitui a análise da loja.
Verificar status →Perguntas frequentes
O CI deve chamar o endpoint do navegador do PkgReady?
Não. O CI deve chamar a API oficial de servidor com uma chave protegida e pertencente à sua organização.
O que deve bloquear o lançamento?
NOT_REGISTERED e divergência de certificado bloqueiam a promoção. Erros de quota e serviço são falhas de infraestrutura com tentativas limitadas.
Fontes e revisão
Última revisão: