Roteiro de trabalho
Ao final deste roteiro, o aluno terá construído uma pipeline de integração e entrega contínua básica em cima das aplicações apresentadas, que serão executadas em containers cujas imagens serão publicadas no Amazon ECR . Esta pipeline será executada pelo GitLab Runner que será executado sobre uma instância EC2 Spot com escalabilidade automática.
Pré requisitos:
- O aluno deve possuir uma conta na AWS
Parte 1 - Criação de um modelo de execução
#!/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 gitlab 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 \
--locked \
--paused \
--executor docker \
--docker-image docker:dind
# 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 = "7Hu-XErZW6f1W_zt21kg"
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
Parte 2 - Criação de grupos auto scaling
TODO
Parte 3 - Criação de um repositório no ECR
TODO
Parte 4 - Configuração no GitLab
TODO
Parte 5 - Criação da pipeline de CI/CD
TODO