Solução do Discord

O que fazer quando o envio de uma aplicação para a App Store do CasaOS ou do ZimaOS continua pendente

A contributor followed up on a long-running Popcornn App Store pull request after migrating it to v2 and passing automated checks, asking whether any merge blocker remained.

Conclusão principal: um pipeline de CI verde prova que as verificações automatizadas foram aprovadas; não significa que um pull request da App Store tenha sido aprovado. Se uma submissão de aplicação CasaOS/ZimaOS estiver aberta há meses, pare de voltar a verificar os mesmos indicadores e determine qual a camada que ainda está pendente: validação do repositório, feedback do revisor, requisitos de merge ou revisão do maintainer.

O exemplo do mundo real que esteve na origem desta página estava excecionalmente bem preparado: a aplicação tinha sido migrada para o formato v2, as verificações estavam verdes, as tags do Docker estavam fixadas, os metadados estavam preenchidos e o contribuidor estava a fazer uma pergunta simples — “Há algo a bloquear o merge ou alguma alteração necessária da minha parte?”

Primeiro, verifique as verificações que realmente importam para o repositório atual da App Store

O atual fluxo de contribuição para a App Store pede aos contribuidores que façam um fork do repositório, efetuem e testem as alterações e, em seguida, abram um pull request a explicar o que foi alterado e como foi validado.

Para validação local, o repositório pede especificamente aos contribuidores que executem:

./scripts/build_dist.sh

Um resultado positivo é mais específico do que “o meu ficheiro compose parece estar correto”. A compilação deve ser concluída sem erros, produzir dist/index.jsone gerar a aplicação alterada em dist/apps/<app-id>/.

As verificações de CI da App Store do repositório executam a validação do compose e uma verificação completa de compilação v2 nos pull requests. YAML inválido, metadados obrigatórios da aplicação em falta, recursos referenciados inexistentes ou incompatibilidades de arquitetura podem fazer a compilação falhar.

Um CI verde é necessário, mas não constitui a decisão de merge

Este é o ponto que muitos contribuidores não compreendem. Uma verificação automatizada bem-sucedida apenas indica que o commit cumpriu as condições testadas por essa verificação. As verificações de estado do GitHub são independentes das decisões de revisão e merge.

Um pull request pode continuar aberto porque precisa de:

  • uma revisão do maintainer ou do responsável pelo código;
  • as alterações solicitadas a implementar;
  • a branch a atualizar;
  • um conflito de merge a resolver;
  • decisões de aceitação ou curadoria específicas do repositório que a CI não pode tomar.

Os requisitos de integração do GitHub tratam as revisões, as verificações de estado e as regras do branch como condições de integração separadas.

Utilize o próprio PR para identificar o bloqueio

Antes de publicar outro comentário «alguma novidade?», verifique quatro locais:

  1. Verificações: confirme que o commit mais recente — e não um SHA antigo — passou nos fluxos de trabalho obrigatórios.
  2. Conversa: procure comentários do responsável pela manutenção ou pedidos de alterações ainda não resolvidos.
  3. Ficheiros alterados: confirme que a migração para v2 não deixou metadados legados no local errado.
  4. Caixa de integração: normalmente, o GitHub indica se ainda é necessária uma revisão, uma verificação de estado, a resolução de conflitos ou uma atualização do branch.

Se a CI estiver verde e a caixa de integração não indicar nenhum bloqueio que o contribuidor possa resolver, o passo restante será provavelmente a revisão humana, e não outra alteração de código.

Para submissões v2, valide o contrato de origem — não apenas o contentor Docker

Um contentor funcional não é automaticamente uma entrada válida na App Store. O protocolo v2 atual espera que a definição da aplicação de origem contenha uma configuração de execução Docker Compose padrão, além de um bloco de metadados x-casaos de nível superior. O esquema de metadados x-casaos define campos como id, main, index, port_map, icon, title, categoria, arquitetura e metadados da versão.

Assim, quando uma submissão indica «CI passed», o acompanhamento útil não é «o SonarQube passou?», mas sim:

  • Fá-lo ./scripts/build_dist.sh passou no branch mais recente?
  • A aplicação gera o resultado v2 esperado?
  • Todos os ícones, miniaturas e capturas de ecrã referenciados estão acessíveis?
  • A arquitetura declarada corresponde à imagem?
  • Os metadados da versão e da publicação estão atualizados?
  • Todos os comentários da revisão foram resolvidos?

Como fazer o acompanhamento sem gerar ruído

Se a submissão estiver sem novidades há muito tempo, publique uma atualização de estado breve em vez de repetir toda a apresentação original. Um acompanhamento útil é semelhante a isto:

PR: #888
Último commit: <SHA>
Compilação v2: ./scripts/build_dist.sh concluída com êxito
GitHub Actions: aprovado no commit mais recente
Comentários de revisão em aberto: nenhum
O que preciso: confirmação de qualquer bloqueio ainda existente do lado do responsável pela manutenção

Isso dá imediatamente ao responsável pela manutenção uma questão à qual pode responder.

Se a revisão da loja oficial for demorada, uma loja de terceiros é um canal de distribuição válido

O ecossistema v2 não está limitado a um único repositório. A ZimaOS também documenta a configuração de lojas de terceiros para repositórios compatíveis. Se uma aplicação precisar de distribuição pela comunidade antes de uma integração oficial, publicá-la através de uma loja de terceiros mantida pode ser uma alternativa prática enquanto o PR original continua aberto.

Para os utilizadores, e não para os contribuidores, a Loja de aplicações ZimaOS explica o modelo de aplicações com um clique e o conceito de lojas de terceiros. A plataforma de aplicações ZimaOS apresenta a visão geral atual do ecossistema. Se estiver a criar um anfitrião compacto para testar aplicações com utilização intensiva de Docker, a ZimaBoard 2 é uma plataforma de teste x86 relevante, mas não é um requisito para submeter uma aplicação.

Perguntas frequentes

A aprovação na CI significa que a minha aplicação já deve ser integrada?

Não. A CI apenas comprova o que os fluxos de trabalho automatizados validam. A revisão humana, as regras do repositório, os comentários por resolver, os conflitos e as decisões dos responsáveis pela manutenção são aspetos distintos.

Qual é o comando de validação local mais útil para a App Store atual?

O guia de contribuição do repositório aponta para ./scripts/build_dist.sh. Confirme que termina corretamente e produz os ficheiros v2 esperados.

Devo continuar a alterar o código se todas as verificações estiverem aprovadas?

Não sem um motivo específico. Primeiro, inspecione a caixa de merge e reveja os comentários. Se não houver nenhum bloqueio que o contribuidor possa resolver, peça a decisão de revisão em falta em vez de fazer alterações especulativas.

Posso publicar a aplicação fora da loja oficial?

Sim. A documentação atual da v2 suporta explicitamente lojas ZimaOS de terceiros, pelo que uma loja externa pode ser um canal de distribuição legítimo.