Vaig a crear una infraestructura de contenidors docker per a CI/CD. Assumim que ja tenim una instalacio docker amb portainer.
Contenidors essencials per a CI/CD:
- GitLab CE
-
Funció: Repositori de codi + gestió de pipelines.
-
Imatge:
gitlab/gitlab-ce
-
Ports:
-
80: HTTP (interficie web)
-
443: HTTPS (interficie web)
-
22: SSH (per a clonar el repositori i fer commit al remot)
-
-
Consideracions:
- Muntar volums per a dades persistents:
- /etc/gitlab
- /var/opt/gitlab
- var/log/gitlab
- Muntar volums per a dades persistents:
-
- GitLab Runner
-
Funció: Execució dels jobs dels pipelines (build, test, deploy…)
-
Imatge:
gitlab/gitlab-runner
-
Tipus d’execució:
-
Docker: cada job s’executa dins un contenidor separat. (usaré aquesta).
-
Shell: s’executen directament al host (o contenidor).
-
-
Estructura de carpetes recomanada:
/infra-ci-cd/
│
├── docker-compose.yml
├── gitlab/
│ ├── config/
│ ├── logs/
│ └── data/
│
└── runner/
└── config/
Creació dels contenidors
#docker-compose.yml
services:
gitlab:
image: gitlab/gitlab-ce:latest
restart: always
hostname: 'gitlab.local'
ports:
- '880:80'
- '8443:443'
- '822:22'
volumes:
- './gitlab/config:/etc/gitlab'
- './gitlab/logs:/var/log/gitlab'
- './gitlab/data:/var/opt/gitlab'
gitlab-runner:
image: gitlab/gitlab-runner:latest
restart: always
volumes:
- './runner/config:/etc/gitlab-runner'
- '/var/run/docker.sock:/var/run/docker.sock'
He especificat ports diferents de la màquina local redirigits als ports necesaris al contenidor per a no provocar conflictes:
ports:
- '880:80'
- '8443:443'
- '822:22'
Una volta creat tot, executar:
docker compose up -d
Açò posarà en marxa els contenidors que podrem vore al Portainer.
Accés al GitLab
A l’arxiu /etc/hosts
configure el domini gitlab.local
) per a accedir amb el navegador web per aquesta direcció.
#/etc/hosts
127.0.0.1 gitlab.local
Per a obtenir la contrasenya de root del GitLab que s’ha creat automàticament, cal executar:
docker exec -it [nom_contenidor_gitlab] grep 'Password:' /etc/gitlab/initial_root_password
Ja es pot accedir a http://gitlab.local:880 i entrar amb el usuari root i aquesta contrasenya. A continuació, cree un projecte en blanc per a la API (crearé un nou projecte en blanc per al frontend en pròxims passos):
A la seguent part començaré a fer el primer commit per a configurar els pipelines.