Um respin é o processo de mesclagem, reconstrução, novo teste e recertificação de um binário após um lançamento público do kernel GKI.
Antes de solicitar um respin, observe as diretrizes a seguir.
Qualificação e ciclo de vida
- Tempo:só é possível solicitar respins em ramificações de lançamento após o lançamento público inicial de um build trimestral. Solicite respins de hooks de fornecedor ou outros recursos apenas para uma determinada ramificação de lançamento por no máximo seis meses após o lançamento público inicial.
- Segurança e LTS:após seis meses, as ramificações só poderão passar por respin apenas para patches de segurança citados em um Boletim de Segurança do Android (ASB) ou correções de bugs críticos.
- Descontinuação:quando os requisitos de LTS, definidos pelo Boletim de Segurança do Android (ASB), fazem com que a ramificação não esteja em conformidade, ela é descontinuada. Não é possível fazer solicitações de respin para ramificações descontinuadas.
- A data de descontinuação de uma determinada ramificação de lançamento do GKI está incluída nas notas de build de lançamento trimestral do GKI em "Lançamentos". Por exemplo, o lançamento de setembro de 2025 tem suporte para respins até março de 2027. Essa data reflete o ciclo de vida da versão do kernel LTS 2.0 de 18 meses para lançamentos a partir de setembro de 2025 (os lançamentos anteriores a setembro de 2025 tinham um ciclo de vida de 12 meses).
- Escopo:solicite respins apenas para correções de bugs urgentes, atualizações de lista de símbolos ou para aplicar um patch para corrigir um recurso atual.
Padrões de envio de patch
Para atender ao tempo de resolução padrão esperado (ESRT, na sigla em inglês) para o processamento de solicitações de respin , todos os patches enviados a uma ramificação de lançamento precisam obedecer às seguintes regras técnicas.
Fonte de verdade e cherry-picks
- Ramificação de desenvolvimento primeiro:todos os patches que entram na ramificação de lançamento trimestral já precisam ser mesclados na ramificação de desenvolvimento principal do GKI. Por
exemplo, se um patch for necessário para um respin de
android15-6.6-2025-08, ele já precisará ser mesclado emandroid15-6.6. - Cherry-pick limpo:é necessário fazer cherry-pick de patches diretamente da ramificação de desenvolvimento. Não faça cherry-pick de outras ramificações de lançamento (por exemplo, não escolha de
2025-08para2025-09), porque isso pode resultar em informações de autor ou commit inconsistentes com a versão na ramificação de desenvolvimento. Patches com informações inconsistentes não serão aceitos. - Preservar metadados:preserve os metadados de commit originais (por exemplo, autor, carimbo de data/hora original). Use
git cherry-pick -xpara preservar os metadados.
Cadeia de commits
- Cadeia sequencial:se a solicitação de respin envolver vários patches, faça o upload deles como uma cadeia única e sequencial de commits.
- Posicionamento de ABI e KMI:se um respin de vários patches incluir atualizações de interface de módulo do kernel (KMI) e interface binária de aplicativo (ABI) (por exemplo, mudanças na lista de símbolos ou atualizações de arquivos XML/STG), coloque esses commits no final da cadeia de commits.
- Rebase:se você editar um commit pai na cadeia, será necessário fazer rebase de todos os patches filhos na revisão mais recente do patch pai para evitar falhas de build.
- Resolução de conflitos:verifique se não há marcadores de conflito em nenhum patch.
- Verificação de build:toda a cadeia de commits precisa ser criada.
Tags obrigatórias
O progresso na solicitação de respin é bloqueado sem as seguintes tags na mensagem de commit:
Change-Id: precisa ser idêntico aoChange-Idda mudança na ramificação de desenvolvimento.- Exceção: se o patch foi mesclado na ramificação de desenvolvimento como parte de uma atualização do LTS, ele precisa fazer cherry-pick da versão do LTS e formatado como um patch
UPSTREAM. Consulte Como enviar patches para kernels comuns do Android.
- Exceção: se o patch foi mesclado na ramificação de desenvolvimento como parte de uma atualização do LTS, ele precisa fazer cherry-pick da versão do LTS e formatado como um patch
Bug(existente): as tagsBug: XYZatuais do commit original da ramificação de desenvolvimento não podem ser removidas.Bug(respin): é necessário adicionar uma nova tagBug: XYZ, em que XYZ corresponde ao ID do bug associado à solicitação de respin atual.- Atualize a tag de commit
UPSTREAMse necessário: ao fazer cherry-pick de um CL da ramificação de desenvolvimento para a ramificação de lançamento, e o CL estiver marcado comoUPSTREAM, considere os seguintes cenários:- Se o CL for aplicado corretamente à ramificação de lançamento, não será necessário fazer mais nada.
- Se o CL não for aplicado corretamente, corrija os conflitos,
atualize a tag para
BACKPORT, e documente o que foi feito como parte da resolução de conflitos. Consulte Requisitos para backports do Linux principal.
Prioridade e ESRT
Atribua uma prioridade (urgência) à solicitação de respin para ajudar a equipe do GKI a priorizar. Essa prioridade ajuda a equipe do GKI a ajudar melhor parceiros de maneira oportuna.
- Para solicitações críticas ou urgentes, marque a prioridade como P0.
- Para solicitações P0 e P1, também é necessário justificar a urgência.
A tabela a seguir fornece um mapeamento da prioridade do bug e do tempo de resolução (ESRT):
| Prioridade | ESRT |
|---|---|
| P0 | 2 dias úteis |
| P1 | 5 dias úteis |
| P2 | 10 dias úteis |
| P3 | 15 dias úteis |
Políticas de SLA
- Envie uma solicitação de respin separada para cada ramificação de lançamento.
- Se você tiver mudanças em uma solicitação de respin marcada como corrigida, envie uma nova solicitação de respin. Não reabra a solicitação para adicionar mais listas de mudanças (CLs).
- Se uma solicitação de respin exigir sua resposta e você não responder em três dias úteis, a prioridade será reduzida em um nível. Por exemplo, P0 será reduzida para P1.
- Se você não responder por duas semanas, o bug será marcado como Não será corrigido (obsoleto).
Enviar uma solicitação de respin
O diagrama a seguir mostra o processo de respin. O processo começa quando o parceiro OEM (você) envia a solicitação de respin.
Figura 1.Processo de respin de emergência.
Para enviar uma solicitação de respin:
Preencha o formulário de solicitação de respin do GKI e entre em contato com seu ponto de contato do Google imediatamente.
- Esse formulário cria um bug de solicitação de respin do GKI.
Prepare seus patches :
- Verifique se o patch foi mesclado na ramificação de desenvolvimento do GKI.
- Aplique o patch à ramificação de lançamento do GKI apropriada.
- Altere o patch escolhido para incluir uma tag
Bug: XYZque cita o ID da solicitação de respin.
Exemplo: Para fazer cherry-pick de um CL de
android16-6.12paraandroid16-6.12-2025-12:# 1. Checkout the target release branch git checkout android16-6.12-2025-12 # 2. Fetch the upstream development branch (Source of Truth) git fetch aosp android16-6.12 # 3. Cherry-pick the commit (Preserving metadata) git cherry-pick -x <commit_hash> # 4. Update the commit message to include the Respin Bug ID # (Do not remove existing Bug IDs or change the Change-Id)Envie o bug. O seguinte ocorre depois que você envia a solicitação:
Processo de revisão após o envio :
- A equipe do GKI do Google analisa a solicitação e a aprova ou a atribui de volta a você se mais informações forem necessárias.
- Depois que uma correção é acordada, a equipe do GKI do Google revisa o código da mudança. O timer ESRT fica ativo durante essa revisão. No entanto, se o patch for rejeitado ou exigir retrabalho, o timer ESRT será redefinido.
- A equipe do GKI mescla, cria, testa a regressão e certifica a mudança.
Lançamento :
- O binário é lançado em ci.android.com.
- O período do ESRT termina, e a equipe do GKI do Google marca a solicitação como corrigida e faz referência ao build de respin.
- O build de respin também é postado na página de builds de lançamento da imagem genérica do kernel (GKI).