Blog

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

    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.