Gitlab Runner
Gitlab Runner é a aplicação que orquestra a execução de pipelines do Gitlab na infraestrutura provida pelo usuário.
No casso da AGES, cada projeto possui um servidor (máquina EC2) disponibilizado na AWS (Clique para mais informações).
Instalação
Consulte a documentação oficial.
Registrando o Runner
O Executor
A maneira mais limpa para execução de Jobs neste Host, é através de containers Docker. Dessa maneira garantimos separação lógica entre os jobs, bem como deleção de arquivos ou bibliotecas necessárias somente durante a execução de cada job.
Neste cenário, o executor necessário será do tipo docker: Executor Docker.
Docker in Docker
Visto que de dentro de um container docker estaremos executando comandos para atualização dos serviços presentes no host, precisaremos dar acesso ao serviço docker do host para o container.
Isso é feito através de socket binding, entretanto se ressalta que essa prática não é aconselhável em ambientes de produção.
Registration Token
Uma máquina cadastrada no gitlab pode operar dentro de um dos 3 escopos abaixo de acordo com a documentação:
- Shared Runner - Para uso de qualquer projeto presente no servidor Gitlab da AGES.
- Group Runner - Para uso de qualquer projeto presente em um grupo específico de projetos.
- Project-Specific Runner - Para uso exclusivo de um projeto.
Dado que cada projeto do semestre AGES possuirá uma máquina na AWS e seus projetos git estarão organizados dentro de um grupo, utilizaremos Group Runner.
Dadas as informações acima poderemos executar a registro do runner em um comando único:
sudo gitlab-runner register -n \
--url https://tools.ages.pucrs.br \
--registration-token REGISTRATION_TOKEN \
--executor docker \
--description "Runner do Projeto <NOME-PROJETO>" \
--docker-image "alpine:latest" \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock
Veja a documentação para informações detalhadas.