Sobes.tech
Middle

Kaip sukurti pasikartojančius užduotis GitLab CI?

sobes.tech AI

Atsakymas iš AI

Yra keletas būdų kurti pasikartojančius užduotis GitLab CI:

  1. Pipeline tvarkaraščiai (Pipeline Schedules): Tai yra labiausiai paplitęs ir tam skirtas būdas. Jūs nustatote tvarkaraštį GitLab sąsajoje, nurodydami šaką/tagą, kintamuosius (jei reikia) ir vykdymo dažnį (cron sintaksė).
  2. API paleidikliai: Galite naudoti GitLab API, kad paleistumėte konvejerius iš išorinės sistemos ar skripto. Tai naudinga, jei tvarkaraštis yra sudėtingesnis arba priklauso nuo išorinių įvykių.
  3. CI/CD kintamieji sąlyginiam vykdymui: .gitlab-ci.yml faile galite naudoti iš anksto apibrėžtus arba naudotojo kintamuosius, kad nustatytumėte užduoties vykdymo sąlygas. Nors tai nesukuria tvarkaraščio kaip tokio, galite paleisti konvejerį pagal tvarkaraštį (per Pipeline Schedules) ir viduje nuspręsti, kokias užduotis vykdyti remiantis kintamaisiais.

Pavyzdys naudojant Pipeline Schedules:

GitLab sąsajoje eikite į saugyklą -> Build -> Pipeline schedules. Sukurkite naują tvarkaraštį, nurodydami:

  • Aprašymą
  • Šaką/tagą
  • Intervalą (cron sintaksė, pvz., 0 0 * * * kasdieninis paleidimas vidurnaktį)
  • Kintamuosius (pasirinktinai)

API paleidiklio pavyzdys (curl naudojant):

# Pakeiskite Private-Token savo asmeniniu API prieigos žetonu
# Pakeiskite <your_project_id> savo projekto ID
# Pakeiskite <your_ref_name> savo šakos ar žymės pavadinimu

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'

Kintamųjų naudojimo pavyzdys .gitlab-ci.yml faile sąlyginiam vykdymui:

stages:
  - build
  - deploy

scheduled_job:
  stage: build
  script:
    - echo "Šis darbas vykdomas tik, kai jis yra pradėtas pagal tvarkaraštį"
  only:
    variables:
      - $CI_PIPELINE_SOURCE == "schedule"

other_job:
  stage: deploy
  script:
    - echo "Šis darbas vykdomas iš visų pipeline šaltinių"
  # Nėra `only: variables:` sąlygos

Pasirinkimas priklauso nuo konkrečių reikalavimų. Paprastiems pasikartojantiems užduotims Pipeline Schedules yra optimalus pasirinkimas. Sudėtingesniems scenarijams arba integracijai su išorinėmis sistemomis tinka API paleidikliai. Sąlyginiam vykdymui su kintamaisiais naudinga valdyti srautą jau pradėto konvejerio viduje.