Próximo: Bônus: Construir manifesto, Anterior: Bônus: Variantes do pacote, Acima: Desenvolvimento de software X [Conteúdo][Índice]
O canal que definimos acima (veja Nível 2: O Repositório como Canal) se torna ainda mais interessante quando configuramos continuous integration (CI). Há várias maneiras de fazer isso.
Você pode usar uma das principais ferramentas de integração contínua, como o GitLab-CI. Para fazer isso, você precisa ter certeza de executar jobs em uma imagem Docker ou máquina virtual que tenha o Guix instalado. Se fizéssemos isso no caso do Guile, teríamos um job que executa um comando shell como este:
guix build -L $PWD/.guix/modules guile@3.0.99-git
Fazer isso funciona muito bem e tem a vantagem de ser fácil de fazer na sua plataforma de CI favorita.
Dito isso, você realmente aproveitará ao máximo usando Cuirass, uma ferramenta de CI projetada para e fortemente integrada com Guix. Usá-la dá mais trabalho do que usar uma ferramenta de CI hospedada porque primeiro você precisa configurá-la, mas essa fase de configuração é bastante simplificada se você usar seu serviço Guix System (veja Integração Contínua em Manual de Referência GNU Guix). Voltando ao nosso exemplo, damos ao Cuirass um arquivo de especificação que é assim:
;; Arquivo de especificações do Cuirass para construir todos os pacotes do canal ‘guile’. (list (specification (name "guile") (build '(channels guile)) (channels (append (list (channel (name 'guile) (url "https://git.savannah.gnu.org/git/guile.git") (branch "main"))) %default-channels))))
Ela difere do que você faria com outras ferramentas de CI em dois aspectos importantes:
guile
e
guix
. De fato, nosso próprio pacote guile
depende de muitos
pacotes fornecidos pelo canal guix
—GCC, o GNU libc, libffi e assim
por diante. Mudanças em pacotes do canal guix
podem potencialmente
influenciar nossa construção guile
e isso é algo que gostaríamos de
ver o mais rápido possível como desenvolvedores do Guile.
guile
obtenham binários pré-compilados de forma transparente!
(veja Substitutos em Manual de Referência do GNU Guix, para
informações básicas sobre substitutos.)
Do ponto de vista de um desenvolvedor, o resultado final é esta
status page listando
avaliações: cada avaliação é uma combinação de confirmações dos
canais guix
e guile
, fornecendo um número de trabalhos
— um trabalho por pacote definido em guile-package.scm vezes o número
de arquiteturas de destino.
Quanto aos substitutos, eles vêm de graça! Por exemplo, já que nosso jobset
guile
é construído em ci.guix.gnu.org, que executa guix
publish
(veja Invocando guix publish em Manual de Referência
do GNU Guix) além do Cuirass, obtém-se automaticamente substitutos para
compilações guile
de ci.guix.gnu.org; nenhum trabalho adicional é
necessário para isso.
Próximo: Bônus: Construir manifesto, Anterior: Bônus: Variantes do pacote, Acima: Desenvolvimento de software X [Conteúdo][Índice]