Linux Kamarada

Bastidores do Linux Kamarada: publicando uma versão nova

Anteontem publiquei o Linux Kamarada 15.6 RC (release candidate, versão candidata a lançamento). Aproveitando a oportunidade, venho retomar a série “bastidores do Linux Kamarada”, em que compartilho como é feito o desenvolvimento da distribuição.

Por enquanto, essa série já conta com três artigos:

Além deles, temos também os artigos sobre OBS, KIWI e Git, que ajudam a entender como usar ferramentas usadas no desenvolvimento da distribuição:

Se você ainda não leu os artigos anteriores, recomendo que comece por eles.

Pacotes e imagem no OBS

Tenho trabalhado no projeto de desenvolvimento home:kamarada:15.6:dev.

Vejamos agora como levar os pacotes RPM e a imagem do KIWI desse projeto para o projeto de produção home:kamarada:15.6.

Se o projeto de produção está vazio e estou levando esses pacotes pela primeira vez para ele (por exemplo, no lançamento da versão 15.6 Beta), faço branches de um projeto para o outro (link Branch Package, na barra lateral), de forma parecida como mostrei no artigo anterior. No caso dos pacotes que usam a integração OBS + Git, lembre de editar o arquivo _service e ajustar o parâmetro revision para referenciar o branch 15.6 em vez do 15.6-dev.

Como o projeto de produção não está vazio (já lancei a versão 15.6 Beta, estou lançando agora a versão 15.6 RC), o caminho é um pouco diferente. Nesse caso, podemos comparar os dois projetos e enviar de desenvolvimento para produção apenas os pacotes que tiveram atualizações (link Submit Package).

Comece acessando o projeto de desenvolvimento (home:kamarada:15.6:dev), então abra um pacote que teve atualização (por exemplo, orchis-gtk-theme) e, na barra de ações à esquerda, clique em Submit Package (enviar pacote):

Na tela seguinte, no campo To target project (para o projeto), informe o projeto de produção (no meu caso, home:kamarada:15.6):

O campo To target package (para o pacote) pode ser deixado em branco, porque vamos usar o mesmo nome de pacote.

O campo Please describe your reasons to submit this package (por favor, descreva o motivo para enviar este pacote) é obrigatório. Preencha-o com uma mensagem.

Ao final, clique no botão Submit (enviar).

O OBS cria um pedido (request) de envio (submit) no projeto de produção, que é apresentado na tela seguinte:

Desça até o final da página, desmarque a opção Forward submit request (encaminhar pedido de envio) e clique em Accept request (aceitar pedido):

Repita isso para todos os pacotes do projeto de desenvolvimento que tiveram atualizações desde o lançamento da última versão de produção.

Uma dica para te auxiliar a descobrir quais foram esses pacotes é ordená-los pela modificação (coluna Changed):

No caso dos pacotes que usam a integração OBS + Git, é necessário criar o branch de produção (15.6) caso ainda não exista (lançamento da versão 15.6 Beta), ou mesclar o branch de desenvolvimento (15.6-dev) com o branch de produção caso já exista (lançamento da versão 15.6 RC).

Exemplo de lançamento da versão 15.6 Beta (branch 15.6 ainda não existia):

1
2
3
4
5
6
7
8
$ cd branding
$ git checkout 15.6-dev
$ git pull
$ git checkout 15.5
$ git pull
$ git checkout -b 15.6
$ git merge 15.6-dev
$ git push --set-upstream origin 15.6

Exemplo de lançamento da versão 15.6 RC (branch 15.6 já existia):

1
2
3
4
5
6
7
$ cd branding
$ git checkout 15.6-dev
$ git pull
$ git checkout 15.6
$ git pull
$ git merge 15.6-dev
$ git push

Feitos todos os envios de pacotes do desenvolvimento para produção, aguarde não haver mais nenhum pacote compilando (building) no projeto de produção:

Publicando os pacotes no GitLab Pages

Da mesma forma como o site linuxkamarada.com é servido pelo GitLab Pages com base no repositório kamarada.gitlab.io, os arquivos em packages.linuxkamarada.com também são servidos pelo GitLab Pages com base no repositório packages.

Eu fiz um script para baixar os pacotes RPM do OBS para a minha cópia local do repositório packages. Para rodá-lo, eu faço:

1
2
$ cd Linux-Kamarada-GNOME/scripts
$ ./download-packages.sh

Você pode ver o código-fonte do script aqui: download-packages.sh.

Em resumo, o que ele faz é acessar a página:

E, usando o wget, faz um espelho (mirror) dessa pasta, excluindo alguns arquivos que não são do interesse, a exemplo de páginas HTML e imagens ISO.

Eu prefiro baixar as imagens ISO manualmente para evitar duplicidade:

Ainda mais que a imagem ISO é um arquivo grande. Baixá-la duas vezes não dá.

Concluído o script, eu faço um git commit e git push do repositório packages, aguardo alguns minutos o pipeline do GitLab Pages rodar e atualizar os arquivos, e pronto: o usuário do Linux Kamarada 15.6 Beta que atualizar o sistema já poderá migrar para o 15.6 RC.

Publicando a imagem no SourceForge

As imagens ISO do Linux Kamarada são hospedadas no SourceForge, que oferece gratuitamente espaço para que projetos de software livre disponibilizem seus arquivos para download, além de outros recursos, como wiki, Git, sistema de suporte por chamados (tickets), dentre outros.

Para publicar a nova imagem ISO, eu começo baixando a imagem do OBS:

Além da imagem ISO, eu baixo também os outros arquivos relacionados: .sha256 (soma de verificação), .sha256.asc (soma de verificação assinada) e .packages (lista de pacotes).

Quando o download termina, eu confiro a soma de verificação:

1
2
3
$ sha256sum -c Linux_Kamarada-15.6-x86_64-Build6.1.iso.sha256

Linux_Kamarada-15.6-x86_64-Build6.1.iso: SUCESSO

Com isso, eu sei que a imagem ISO foi baixada com sucesso do OBS.

Também convém testar a imagem ISO com o VirtualBox para se certificar de que tudo está funcionando.

Estando tudo certo, eu faço o envio (upload) da imagem ISO e dos arquivos relacionados para o SourceForge via SFTP usando o FileZilla:

Se acessarmos os arquivos do projeto no SourceForge, já veremos a imagem ISO listada lá:

Isso é um bom sinal: já temos um link para download e podemos divulgá-lo!

Atualizando o site

Quem quiser já consegue baixar a imagem ISO ou os pacotes RPM da nova versão. Só falta o mundo saber disso. E, para isso, eu atualizo os links no site e faço uma notícia de lançamento. Tenho dois scripts que me ajudam com isso.

Um deles é o update-website.sh, que atualiza as informações e links na página de download da versão, como nome do arquivo, data, tamanho e soma SHA-256.

O outro é o list-package-versions-for-specs.sh, que me fornece as versões de alguns pacotes de interesse, que listo na notícia de lançamento.

Atualizados os links e redigida a notícia, eu faço um git commit e git push do repositório kamarada.gitlab.io, aguardo alguns minutos o pipeline do GitLab Pages rodar e atualizar o site, e pronto: compartilho a notícia nas redes sociais.

Atualizando o SourceForge

Para que não fique nenhum link quebrado no site, eu deixo pra excluir a imagem ISO antiga (e seus arquivos relacionados) depois que a notícia da versão nova foi ao ar. Feita a exclusão, agora sim eu posso fechar o FileZilla.

Ainda há mais um link para atualizar, além do link no site do Linux Kamarada: o link para a versão mais recente no SourceForge.

Eu atualizo esse link somente quando é o lançamento de uma versão Final, para que caso alguém descubra o Linux Kamarada pelo SourceForge não baixe uma versão de desenvolvimento (Beta ou RC).

Para atualizar esse link, entro com a minha conta no SourceForge, acesso o projeto do Linux Kamarada, procuro a imagem ISO correspondente à última versão Final, clico no ícone para ver detalhes do arquivo e defino aquele arquivo como download padrão, qualquer que seja o sistema operacional do visitante:

Marcando as tags no Git

Por último, mas não menos importante, lembremos que o Linux Kamarada é um projeto de software livre. E se alguém quiser obter o código-fonte da imagem ISO ou dos pacotes desta versão? Para isso, eu marco os últimos commits nos repositórios do Git com tags.

No repositório da imagem ISO (Linux-Kamarada-GNOME), eu uso uma tag anotada:

1
2
3
$ cd Linux-Kamarada-GNOME
$ git tag -a 15.6-RC1-Build6.1 -m "Linux Kamarada 15.6 RC 1 Build 6.1"
$ git push origin --tags

Nos demais repositórios, eu uso tags leves. Por exemplo:

1
2
3
$ cd branding
$ git tag 15.6-RC1-Build6.1
$ git push origin --tags

Conclusão

Se você está criando sua própria distribuição Linux, ou desenvolvendo algum software livre ou apenas tem curiosidade de saber como é feito o Linux Kamarada, espero que esse artigo tenha te fornecido ideias boas e úteis. Se ficou com alguma dúvida, por favor, comente, terei prazer em responder.

E, claro, não deixe de conferir a última versão do Linux Kamarada!

Abraço e até a próxima!

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