Nossa infraestrutura de compilações e lançamentos, e as próximas atualizações

Nos bastidores do F-Droid existe uma pilha gigantesca de automação para gerenciar o processo de construção de milhares de aplicativos a partir da fonte. Isto significa, verificar milhares de fontes de repositórios, verificar tudo por atualizações, compilações e novos lançamentos e assiná-los em lote com segurança. Todas as compilações são executadas em uma nova máquina virtual, conhecida como buildserver. Todos os binários Gradle e pacotes SDK do Android são verificados com a base de nossos registros públicos acompanhados de checksums SHA-256. Os processos de registro de transparência também são conferidos com a base upstream de checksums públicos.

Nossa configuração está rodando quase exclusivamente no Debian. O Debian é um líder em software livre, tem servidores sólidos e compilações reproduzíveis. Isso faz dele um lar adequado para F-Droid. Também queremos garantir a manutenção dos pacotes que usamos, e compilamos nossos processos através de pacotes do Debian. Isso significa que compartilhamos a manutenção com qualquer coisa que use Debian. Pode parecer que da mais trabalho para retribuir, mas nossa experiência confirmou que isso compensa a longo prazo. A comunidade do F-Droid é capaz de manter muitas coisas com uma pequena equipe. Outro exemplo disso é este site: ele é construído usando pacotes Jekyll que estão presentes no Debian.

Se você tem um aplicativo no f-droid.org, você deve ter notado que todas as compilações acontecem na versão do Debian de 5 anos atrás: stretch. Neste momento estamos no meio de um grande esforço para atualizar à última versão lançada, bullseye. Isto não é apenas um simples apt-get upgrade, estamos também aproveitando esta oportunidade para revisar o processo de compilação para que os apps funcionem com uma instalação do Debian relativamente simples que pode ser usado como o sistema básico. Temos que fornecer uma plataforma para construir milhares de apps e não podemos simplesmente atualizar a imagem base com a frequência que gostaríamos. Alguns aplicativos precisam de versões mais recentes. Outros apps precisam da versão antiga e estável do sistema base. Esta mudança significa que os metadados contém o máximo possível da lógica de compilação, de modo que o administrador do aplicativo tenha controle sobre todas as etapas. Para conseguir isto, está sendo retirado da imagem base do buildserver tanto quanto possível.

Nós pensamos em oferecer uma seleção de imagens de base. Esta é uma solução possível, mas não é tão fácil como usar apenas qualquer imagem do Docker disponível. Somente imagens de base que são de software livre são apropriadas. Apenas apontar para qualquer imagem do Docker abriria a possibilidade de compilação de dependências proprietárias, já que não é possível verificar automaticamente se qualquer imagem do Docker é 100% software livre. O uso de uma seleção de base pré-aprovada poderia resolver isso. Observe que isto é mais complexo que em distros GNU/Linux, dado que os aplicativos do Android são compilados de forma híbrida. As distros GNU/Linux constroem seus pacotes em próprio sistema operacional. Durante a construção, o Debian não permite nem sequer o acesso à rede, já que todas as dependências precisam vir de pacotes do Debian. Esse nível de verificação é um objetivo do F-Droid e o trabalho do Maven em direção a um ecossistema reprodutível Maven Central ajuda muito.

Desde quando o CalyxOS começou a fazer compilações no F-Droid por padrão, Calyx Institute também queria garantir que o F-Droid está funcionando sem problemas e que os desenvolvedores de apps estão felizes. Gostaria de agradecer ao Calyx Institute por patrocinar 42 horas por mês do meu tempo para trabalhar para que a nossa infraestrutura de compilação funcione sem problemas. Além disso, estarei trabalhando para melhorar a automatização de processos de assinatura. Nosso processo de assinatura está atualmente 100% offline. Embora isto seja bom para a segurança, desacelera o processo de lançamento. Com modernos módulos de segurança de hardware e configurações de servidores é possível ter uma boa segurança, sem estar 100% offline. A automação da assinatura abre possibilidades de fazer todo o processo em paralelo, incluindo a execução de compilação de vários apps e também execução de principais etapas de compilação, geração de índices e assinaturas, tudo em paralelo. Este trabalho será implantado gradualmente à medida que cada bit for finalizado. Portanto, seja paciente, e você notará que os lançamentos estão acontecendo cada vez mais rápido!