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.