Linux Kamarada

Integrando Open Build Service com GitHub

Se você desenvolve software para Linux, deveria conhecer o Open Build Service (OBS). O que o torna uma ferramenta tão interessante? Extraído do seu site (tradução livre minha):

O Open Build Service (OBS) é um sistema para compilar e distribuir pacotes binários a partir de códigos-fonte de forma automática, consistente e reprodutível. Você pode distribuir pacotes, assim como atualizações, add-ons, appliances e distribuições Linux inteiras para uma vasta gama de sistemas operacionais e arquiteturas de hardware.

Na prática, você desenvolvedor pode enviar o código-fonte do seu software para o OBS e obter pacotes prontos para instalar no openSUSE, Fedora, Debian, Ubuntu e outras distribuições, assim como pacotes para i586, x86_64, ARM e outras arquiteturas. Os usuários do software podem baixar esses pacotes diretamente do OBS. Ele também é capaz de fazer sistemas Live: você pode oferecer aos seus usuários a possibilidade de testar seu software em um sistema limpo e controlado sem necessidade de instalação.

O OBS é um software livre, de modo que você pode baixá-lo, instalá-lo em um servidor próprio e usá-lo localmente. Ou (mais facil) você pode usar o servidor de referência, disponível pública e gratuitamente em build.opensuse.org. Esse servidor é usado principalmente para o desenvolvimento da distribuição openSUSE, mas também hospeda vários projetos comunitários.

Além disso, se você é um desenvolvedor, provavelmente conhece o Git e o GitHub — dispensam apresentações. E se eu te disser que você pode integrar o OBS com o GitHub de modo que seu software seja sempre compilado, empacotado e disponibilizado para download logo após um git push? Ficou interessado?

Como configurar essa integração é o que você verá neste post!

Começando a usar o OBS

Não vou falar sobre os conceitos básicos do OBS aqui, seria assunto para um post inteiro. Para aprender o básico do OBS, consulte as páginas a seguir (em inglês):

Vou assumir que você já consegue entrar (“fazer login”) com sua conta do openSUSE em build.opensuse.org. Se você ainda não tem uma conta, crie uma clicando no link Sign Up (inscrever-se) no topo da página.

Crie um pacote vazio para o seu software no OBS. Aqui vou usar como exemplo o repositório patterns do Linux Kamarada no GitHub, que no momento possui apenas um arquivo spec.

Se você não sabe o que é um arquivo spec e/ou é novo no empacotamento RPM, leia (em inglês):

Também vou assumir que você instalou o osc (o cliente de linha de comando do OBS) no seu computador. Se você usa openSUSE, pode instalar o osc executando:

1
# zypper install osc

Crie uma cópia local (“faça checkout”) do seu projeto pessoal (home project) do OBS:

1
$ osc checkout home:seu_nome_de_usuario

Entre na pasta do pacote:

1
$ cd home:seu_nome_de_usuario/nome_do_pacote

Agora vamos integrar o OBS com o GitHub.

OBS: obtendo o código-fonte do GitHub

Usando o osc, configure o serviço de código-fonte (source service) do OBS para obter o código-fonte do GitHub:

1
$ osc add git://github.com/kamarada/patterns.git

É criado na pasta um arquivo _service. Abra-o e substitua seu conteúdo pelo seguinte:

1
2
3
4
5
6
7
8
<services>
    <service name="obs_scm">
        <param name="scm">git</param>
        <param name="url">git://github.com/kamarada/patterns.git</param>
        <param name="revision">15.1-dev</param>
        <param name="extract">patterns-kamarada-gnome.spec</param>
    </service>
</services>

Note que estou usando o ramo (branch) 15.1-dev. Se você pretende usar o ramo master para o seu pacote, pode simplesmente omitir o parâmetro revision (revisão).

Comite as alterações (“faça o commit” das alterações):

1
$ osc commit

Comitar para o OBS automaticamente dispara o serviço de código-fonte e o processo de compilação e empacotamento. Se você acessar build.opensuse.org, verá que seu projeto está compilando (building):

Para que o GitHub possa disparar essas mesmas ações, você precisa gerar um token de autorização (authorization token) usando o osc:

1
$ osc token --create home:seu_nome_de_usuario nome_do_pacote

O comando retornará o token e sua identificação (id):

1
2
3
4
5
<status code="ok">
  <summary>Ok</summary>
  <data name="token">UmAsTrInGeNoRmEcOmSeUtOkEn</data>
  <data name="id">4321</data>
</status>

Como teste, você pode disparar manualmente a criação do seu pacote usando esse token:

1
$ osc token --trigger UmAsTrInGeNoRmEcOmSeUtOkEn

Se você acessar build.opensuse.org, verá que seu projeto está compilando.

GitHub: avisando novos commits ao OBS

Queremos atualizar o código-fonte do nosso pacote no OBS toda vez que ele mudar no GitHub. Podemos fazer com que o GitHub dispare automaticamente essa atualização configurando um webhook do GitHub.

Para fazer isso, execute os seguintes passos:

  1. Entre (sign in) no GitHub e vá até seu repositório (no meu caso, https://github.com/kamarada/patterns)
  2. Clique em Settings (configurações)
  3. Clique em Webhooks
  4. Clique no botão Add webhook (adicionar webhook):

Forneça os seguintes parâmetros:

  • Payload URL: https://build.opensuse.org/trigger/webhook?id=4321 (endereço de carregamento, substitua 4321 pela id do seu token)
  • Content type (tipo do conteúdo): application/x-www-form-urlencoded (padrão)
  • Secret (segredo, senha): AcRaZyStRiNgWhIcHiSyOuRtOkeN

Deixe os outros parâmetros como estão, com seus valores padrão:

  • SSL verification: Enable SSL verification (verificação SSL: habilitar)
  • Which events would you like to trigger this webhook? Just the push event (que eventos você gostaria que disparassem este webhook? Apenas o evento push)
  • Active (ativo)

Finalmente, clique no botão verde Add webhook (adicionar webhook):

De volta à página anterior, você pode ver o webhook adicionado:

A partir de agora, cada git push para o GitHub irá disparar automaticamente uma reconstrução do pacote no OBS. Seu nome de usuário aparecerá no histórico do código-fonte do OBS, que pode ser verificado com o comando osc log.

Divirta-se muito! (Have a lot of fun!)

Referências

Me paga um café?
Se você gostou muito, se foi muito útil pra você, será que vale um café? Se quiser, você pode "me pagar um café" pelo PayPal ou contribuir com o projeto de outras formas.

Comentários

Sobre

O Projeto Linux Kamarada visa divulgar e promover o Linux como um sistema operacional robusto, seguro, versátil e fácil de usar, adequado para o uso diário seja em casa, no trabalho ou no servidor. Os focos do projeto são principalmente distribuição e documentação.

Anúncios

Facebook

Autor