Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • W wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Create a new issue
  • Jobs
  • Issue Boards
Collapse sidebar
  • workshop-ages-winter-2021
  • wiki
  • Wiki
  • Dia 3: Containers Docker e CI CD

Dia 3: Containers Docker e CI CD · Changes

Page history
Update Dia 3: Containers Docker e CI CD authored Jul 22, 2021 by Angelo Calebe Araujo da Rocha's avatar Angelo Calebe Araujo da Rocha
Hide whitespace changes
Inline Side-by-side
Dia-3:-Containers-Docker-e-CI-CD.md
View page @ 26ed09c4
......@@ -30,6 +30,17 @@ Inicialmente é necessário definir quais portas do nodo estarão expostas na in
- **type** `SSH` e **origin** `0.0.0.0/0`
6. Clicar em **Create Security Group**
Agora registraremos um *runner* manualmente:
1. Acessar o seu GitLab e, em **Groups** escolher o seu grupo
2. No menu lateral, em **Settings** selecionar **CI/CD**
3. Expandir **Runners** e, na seção **Set up a group Runner manually**, copiar o *registration token*
4. Executar o seguinte comando, substituindo *TOKEN_COPIADO* pelo token copiado no passo anterior:
```sh
curl -X POST https://tools.ages.pucrs.br/api/v4/runners --form "token=TOKEN_COPIADO"
```
5. Será retornado um JSON contendo um token, que deve ser copiado e utilizado na próxima seção. Exemplo de retorno:
```{"id":1,"token":"dg9kxmnH1cv_eiwhGJpY"}```
Para automatizar a criação do GitLab Runner iremos utilizar um template de execução:
1. Acessar o painel do serviço **EC2** no console da AWS
......@@ -41,38 +52,57 @@ Para automatizar a criação do GitLab Runner iremos utilizar um template de exe
- Inserir um nome (ex.: `workshop-app`) e clicar em **Create New Key Pair**
- :warning: Baixe o arquivo pois a AWS não realiza backup deste certificado!
8. Na seção **Network Configuration** selecionar o grupo de segurança criado (ex.: `gitlab-runner-sg`)
9. Na seção **Advanced Details** acessar o campo de texto **User Data** e inserir o seguinte *shell scrpit*:
```sh
#!/bin/bash
# install docker
yum update -y
amazon-linux-extras install docker -y
yum install docker -y
service docker start
usermod -a -G docker ec2-user
# run gitlab runner container
docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
# register runner
docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register \
--non-interactive \
--url https://tools.ages.pucrs.br/ \
--registration-token X6kyNTAx9jyqFdZXWhHU \
--name gitlab-runner \
--executor docker \
--docker-image docker:dind \
--docker-privileged
--docker-volumes "/var/run/docker.sock:/var/run/docker.sock"
--locked
# set cronjob for cleanup
echo "0 */1 * * * docker system prune -af" | crontab -
```
9. Registrar um runner
10. Na seção **Advanced Details** acessar o campo de texto **User Data** e inserir o seguinte *shell script*, substituindo *TOKEN_GERADO* pelo token gerado na seção anterior (registrar um *runner*):
```sh
#!/bin/bash
# install docker
yum update -y
amazon-linux-extras install docker -y
yum install docker -y
service docker start
usermod -a -G docker ec2-user
# run gitlab runner container
docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
# configure gitlab runner
cat > /srv/gitlab-runner/config/config.toml << EOF
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "gitlab-runner"
url = "https://tools.ages.pucrs.br"
token = "TOKEN_GERADO"
executor = "docker"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
image = "docker:dind"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]
shm_size = 0
EOF
# set cronjob for cleanup
echo "0 */1 * * * docker system prune -af" | crontab -
```
### Parte 2 - Criação de grupos auto scaling
......
Clone repository
  • Dia 1: Frontend, Backend e Git
  • Dia 2: Amazon Web Services (AWS)
  • Dia 3: Containers Docker e CI CD
  • Home