|
|
|
# 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](https://tools.ages.pucrs.br/olive/olive-wiki/wikis/aws)).
|
|
|
|
|
|
|
|
## Instalação
|
|
|
|
Consulte a [documentação](https://docs.gitlab.com/runner/install/) oficial.
|
|
|
|
|
|
|
|
## Registrando o Runner
|
|
|
|
### O Executor
|
|
|
|
A maneira mais limpa para execução de [Jobs](https://docs.gitlab.com/ee/ci/jobs/) neste Host, é através de [containers Docker](https://tools.ages.pucrs.br/olive/olive-wiki/wikis/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](https://docs.gitlab.com/runner/executors/docker.html).
|
|
|
|
|
|
|
|
### Docker in Docker
|
|
|
|
Visto que de dentro de um container docker estaremos executando comandos para atualização dos [serviços presentes no host](https://tools.ages.pucrs.br/olive/olive-wiki/wikis/docker#docker-swarm), precisaremos dar acesso ao serviço docker do host para o container.
|
|
|
|
|
|
|
|
Isso é feito através de *[socket binding](https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#use-docker-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](https://docs.gitlab.com/ee/ci/runners/README.html#group-runners)**.
|
|
|
|
|
|
|
|
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](https://docs.gitlab.com/runner/register/) para informações detalhadas. |