Como criar um RPM

Em construção.

Pacote para módulo FWFLEX

Os módulos (rpms) da itflex são construídos no diretório itflex/server/pkgs/ do projeto itflex. No arquivo Makefile principal, é especificado todos os pacotes e feito include de todos os demais makefiles de cada módulo.

Um módulo possui um diretório com o próprio nome e nele constam binários, libs, scripts e outros confs que serão empacotados. Também há um Makefile específico, com todos os comandos necessários para build e deploy. Em geral, esses comandos não mudam muito, sendo necessário apenas ajustar para o novo módulo criado.

No mesmo diretório, há também um arquivo de spec para o pacote. O spec é uma espécie de receita de bolo usada pelo comando rpmbuild para empacotar o RPM. Mais detalhes em What a SPEC file is. Em geral, a estrutura do spec também não muda muito de um módulo para o outro. Nele são especificados os pacotes dependência requeridos, confs a serem instalados no servidor, serviços a serem ativados, etc.

O build e deploy desses pacotes é feito através do bot + GitLab CI/CD. Criando os arquivos acima, é possível testar o funcionamento, gerando pacotes através do bot para a branch específica. Para saber como, veja Deploy de RPMs para Ambiente de Testes. Não é necessário alterar o CI/CD para adicionar novos módulos, mas para conhecer a fundo o funcionamento, veja Gitlab CI/CD Pipelines.

Pacote para ferramentas 3rd-party

Pacotes de terceiros adicionados no repo02 pela iTFLEX ficam no projeto itflex em itflex/third_party/rpms/. Cada pacote possui um diretório, um .tar.gz do source code, arquivos confs customizados a serem empacotados e um arquivo de spec. O spec é uma espécie de receita de bolo usada pelo comando rpmbuild para empacotar o RPM. Mais detalhes em What a SPEC file is.

No diretório há o arquivo Makefile com as instruições para build e deploy. Nele há os comandos de rpmbuild necessários. Em geral, não muda muito de um pacote para outro. É necessário avaliar caso a caso e construir o Makefile correto.

O deploy do Makefile copia o arquivo para o repo02, mas não executa createrepo para atulizar o repo. É possível fazer isso manualmente via SSH ou através de deploy do 3rd-party pelo bot.

Para atualizaçao de versão de algum pacote, é necessário alterar no Makefile a versão. Por exemplo, o prometheus, pode ser alterado na linha 7 do Makefile de ${VERSION}-2 para ${VERSION}-3. No spec do itflex-core também precisa alterar a dependência para forçar a atualização. Por exemplo, o prometheus, pode ser alterado na linha 7 do spec de Requires: prometheus >= 2.5.0-2 para Requires: prometheus >= 2.5.0-3.