Sobes.tech
Junior

Hogyan hajtsunk végre telepítést a GitLab-on?

sobes.tech MI

Válasz az MI-től

A GitLab CI/CD-ben történő telepítés a .gitlab-ci.yml fájl konfigurálásával történik a projekt gyökérkönyvtárában. Ebben a fájlban határozzuk meg a pipeline-okat, a stage-eket és a jobokat.

A tipikus telepítési folyamat magában foglalja:

  • Build: Artefaktumok létrehozása (Docker képek, futtatható fájlok stb.).
  • Tesztelés: Unit, Integration és End-to-End tesztek végrehajtása.
  • Deploy: Artefaktumok telepítése a célkörnyezetekbe.

Példa .gitlab-ci.yml Docker kép telepítéséhez:

stages:
  - build
  - deploy

build:
  stage: build
  image: docker:latest
  services:
    - docker:dind
  script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
    - docker build -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA" .
    - docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA"

deploy_staging:
  stage: deploy
  image: registry.gitlab.com/gitlab-org/cloud-native/gitlab-agent/agentk/kubectl:latest # kubectl használata
  script:
    - kubectl config use-context my-kubernetes-context # Kontextus váltása
    - kubectl apply -f kubernetes/deployment-staging.yaml # YAML fájl telepítése
  environment:
    name: staging
  only:
    - main # Csak a main branch commitjein futtatja a jobot

deploy_production:
  stage: deploy
  image: registry.gitlab.com/gitlab-org/cloud-native/gitlab-agent/agentk/kubectl:latest
  script:
    - kubectl config use-context my-kubernetes-context
    - kubectl apply -f kubernetes/deployment-production.yaml
  environment:
    name: production
  when: manual # Manuális indítás
  only:
    - main

Fő fogalmak:

  • Stages: Meghatározzák a jobok végrehajtási sorrendjét.
  • Jobs: Konkrét feladatok, amelyek a stage-ekben futnak. Különböző Docker képeket használhatnak.
  • Runners: A gép vagy környezet, amely végrehajtja a jobokat. Lehet shared, specific vagy group.
  • Variables: Biztonságos adatok vagy konfigurációk tárolására szolgálnak. Előre definiáltak vagy felhasználói által megadottak (CI/CD beállításokban).
  • Environments: Lehetővé teszik a deploy-ok összekapcsolását konkrét környezetekkel (staging, production). Egyszerűsítik a verziók nyomon követését és a rollback-et.
  • Rules/Only/Except: Meghatározzák, mikor kell végrehajtódnia egy jobnak.

A különböző platformokra történő deploy-hoz megfelelő eszközöket használnak:

Platform Eszköz Példa a .gitlab-ci.yml-ben
Kubernetes kubectl, Helm kubectl vagy Helm kép használata
Docker Swarm docker docker kép használata
Cloud Platforms (AWS, GCP, Azure) AWS CLI, gcloud, az Megfelelő CLI-kat tartalmazó képek használata
SSH ssh ssh képet használva parancsokat futtatva

A telepítés optimalizálása magában foglalja:

  • Cache-elés: Gyorsítja a build folyamatát.
  • Job-ok párhuzamos végrehajtása: Csökkenti a pipeline idejét.
  • Blue/Green vagy Canary deployment: Kockázatok csökkentése érdekében.

A bizalmas adatok (jelszavak, API-kulcsok) tárolása CI/CD változókban ajánlott, maszkolva.