Sobes.tech
Middle

Hogyan hozzunk létre ismétlődő feladatokat a GitLab CI-ben?

sobes.tech MI

Válasz az MI-től

Számos megközelítés létezik a rendszeres feladatok létrehozására a GitLab CI-ben:

  1. Pipeline ütemezések: Ez a leggyakoribb és erre a célra tervezett módszer. Beállít egy ütemezést a GitLab felületén, megadva az ágat/címkét, változókat (ha szükséges), és a végrehajtás gyakoriságát (cron szintaxis).
  2. API trigger: Használhatod a GitLab API-t külső rendszer vagy szkript segítségével pipeline-ok indítására. Ez akkor hasznos, ha az ütemezés összetettebb vagy külső eseményektől függ.
  3. Feltételes végrehajtás CI/CD változókkal: A .gitlab-ci.yml fájlban előre definiált vagy egyedi változókat használhatsz a feladat végrehajtási feltételeinek meghatározására. Bár ez nem hoz létre ütemezést magától, elindíthatsz egy pipeline-t ütemezés szerint (Pipeline Schedules segítségével), és a változók alapján dönthetsz arról, mely feladatokat futtatod.

Példa Pipeline Schedules használatára:

A GitLab felületén navigálj a repository -> Build -> Pipeline schedules menübe. Hozz létre egy új ütemezést, megadva:

  • Leírás
  • Ág/címke
  • Intervallum (cron szintaxis, pl. 0 0 * * * napi futtatáshoz éjfélkor)
  • Változók (opcionális)

API trigger példája (curl használatával):

# Cseréld le a Private-Token-t a saját API jogosultságokkal rendelkező személyes hozzáférési tokenedre
# Cseréld le `<your_project_id>`-t a projekt azonosítójára
# Cseréld le `<your_ref_name>`-t az ág vagy címke nevére

curl --request POST \
     --header 'Content-Type: application/json' \
     --header 'Private-Token: <your_private_token>' \
     --data '{
       "ref": "<your_ref_name>",
       "variables": {
         "MY_VARIABLE": "some_value"
       }
     }' \
     'https://gitlab.com/api/v4/projects/<your_project_id>/trigger/pipeline'

A .gitlab-ci.yml-ben egy változó használata feltételes végrehajtáshoz:

stages:
  - build
  - deploy

scheduled_job:
  stage: build
  script:
    - echo "Ez a feladat csak akkor fut, ha ütemezés által indították"
  only:
    variables:
      - $CI_PIPELINE_SOURCE == "schedule"

other_job:
  stage: deploy
  script:
    - echo "Ez a feladat minden pipeline forráshoz fut"
  # Nincs `only: variables:` feltétel

A módszer kiválasztása a konkrét követelményektől függ. Egyszerű ismétlődő feladatokhoz a Pipeline Schedules a legjobb választás. Komplexebb szcenáriók vagy külső rendszerekkel való integráció esetén az API trigger-ek megfelelőek. A változókkal történő feltételes végrehajtás hasznos az áramlás irányítására már elindított pipeline-on belül.