Creació d’un entorn CI/CD (part 1)

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
  • 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.