Sobes.tech
Middle

GitLab CI-де кайталанган тапшырмаларды кантип түзүү керек?

sobes.tech AI

AIден жооп

GitLab CI-де қайталанатын тапсырмаларды құру үшін бірнеше тәсілдер бар:

  1. Жоспарлар (Pipeline Schedules): Бұл ең кең таралған және оған арналған әдіс. Сіз GitLab интерфейсінде жоспарлауды орнатасыз, бұта/тег, өзгермелі мәндер (қажет болса) және орындалу жиілігін (cron синтаксисі) көрсетесіз.
  2. API триггерлері: Сіз сыртқы жүйеден немесе скрипттен конвейерлерді іске қосу үшін GitLab API-ін пайдалана аласыз. Бұл жоспарлау күрделірек немесе сыртқы оқиғаларға байланысты болған жағдайда пайдалы.
  3. CI/CD өзгермелілері шартты орындалу үшін: .gitlab-ci.yml файлы ішінде сіз алдын ала анықталған немесе пайдаланушы өзгермелілерін пайдалана аласыз, тапсырманың орындалу шарттарын анықтау үшін. Бұл жоспарды тудырмайды, бірақ сіз жоспар бойынша (Pipeline Schedules арқылы) конвейерді іске қосып, оның ішінде өзгермелілер негізінде қандай тапсырмаларды орындау керектігін шешесіз.

Мысал ретінде Pipeline Schedules қолдану:

GitLab интерфейсінде репозиторий -> Build -> Pipeline schedules бөліміне өтіңіз. Жаңа жоспар құрыңыз, көрсетіңіз:

  • Сипаттама
  • Бұта/тег
  • Интервал (cron синтаксисі, мысалы, 0 0 * * * күн сайын түнгі сағат 12-де іске қосу үшін)
  • Өзгермелілер (міндетті емес)

API триггерінің мысалы (curl пайдалана отырып):

# Private-Token-ді API құқықтары бар жеке токеніңізбен ауыстырыңыз
# <your_project_id>-ді жобаның ID-мен ауыстырыңыз
# <your_ref_name>-ді бұта немесе тег атауымен ауыстырыңыз

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'

Пайдаланушы өзгермелілерін .gitlab-ci.yml файлында шартты орындалу үшін пайдалану мысалы:

stages:
  - build
  - deploy

scheduled_job:
  stage: build
  script:
    - echo "Бұл тапсырма тек жоспар бойынша іске қосылғанда орындалады"
  only:
    variables:
      - $CI_PIPELINE_SOURCE == "schedule"

other_job:
  stage: deploy
  script:
    - echo "Бұл тапсырма барлық pipeline көздеріне арналған"
  # `only: variables:` шарт жоқ

Әдісті таңдау нақты талаптарға байланысты. Қарапайым қайталанатын тапсырмалар үшін Pipeline Schedules ең жақсы таңдау. Күрделі сценарийлер немесе сыртқы жүйелермен интеграция үшін API триггерлері қолайлы. Шартты орындалу өзгермелілер арқылы іске асыру — іске қосылғаннан кейінгі pipeline ішінде процесті бақылау үшін пайдалы.