Sobes.tech
Middle

Cum să creezi sarcini repetitive în GitLab CI?

sobes.tech AI

Răspuns de la AI

Există mai multe abordări pentru crearea sarcinilor recurente în GitLab CI:

  1. Programări ale pipeline-urilor (Pipeline Schedules): Aceasta este metoda cel mai frecvent și destinată pentru acest scop. Configurați un program în interfața GitLab, indicând ramura/tag-ul, variabilele (dacă este necesar) și frecvența de execuție (sintaxa cron).
  2. Trigger-uri API: Puteți folosi API-ul GitLab pentru a porni pipeline-uri dintr-un sistem extern sau script. Acest lucru este util dacă programarea este mai complexă sau depinde de evenimente externe.
  3. Variabile CI/CD pentru execuție condiționată: În fișierul .gitlab-ci.yml, puteți folosi variabile predefinite sau personalizate pentru a determina condițiile de execuție ale sarcinii. Deși acest lucru nu creează o programare în sine, puteți porni un pipeline conform unui program (prin Pipeline Schedules) și decideți ce sarcini să executați pe baza variabilelor programului.

Exemplu de utilizare a Pipeline Schedules:

În interfața GitLab, mergeți la depozit -> Build -> Pipeline schedules. Creați un nou program indicând:

  • Descriere
  • Ramură/eticheta
  • Interval (sintaxa cron, de exemplu, 0 0 * * * pentru rulare zilnică la miezul nopții)
  • Variabile (opțional)

Exemplu de trigger API (folosind curl):

# Înlocuiți Private-Token cu token-ul dvs. personal de acces cu drepturi API
# Înlocuiți `<your_project_id>` cu ID-ul proiectului dvs.
# Înlocuiți `<your_ref_name>` cu numele ramurii sau etichetei

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'

Exemplu de utilizare a unei variabile în .gitlab-ci.yml pentru execuție condiționată:

stages:
  - build
  - deploy

scheduled_job:
  stage: build
  script:
    - echo "Această sarcină rulează doar atunci când este declanșată de un program"
  only:
    variables:
      - $CI_PIPELINE_SOURCE == "schedule"

other_job:
  stage: deploy
  script:
    - echo "Această sarcină rulează pentru toate sursele pipeline-ului"
  # Fără condiția `only: variables:`

Alegerea metodei depinde de cerințele specifice. Pentru sarcini simple recurente, Pipeline Schedules sunt cea mai bună alegere. Pentru scenarii mai complexe sau integrare cu sisteme externe, sunt potrivite trigger-urile API. Executarea condiționată cu variabile este utilă pentru controlul fluxului în cadrul unui pipeline deja pornit.