Próximo: , Anterior: , Acima: Desenvolvimento de software X   [Conteúdo][Índice]


7.5 Nível 3: Configurando a integração contínua

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:

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]