Sobes.tech
Middle

GitLab CI'de tekrar eden görevler nasıl oluşturulur?

sobes.tech yapay zeka

AI'dan gelen yanıt

GitLab CI'de tekrarlayan görevler oluşturmak için birkaç yaklaşım vardır:

  1. Pipeline Planlamaları (Pipeline Schedules): Bu, en yaygın ve bunun için tasarlanmış yöntemdir. GitLab arayüzünde bir zamanlama ayarlarsınız, dal/etiket, değişkenler (gerekirse) ve çalışma sıklığını (cron sözdizimi) belirtirsiniz.
  2. API Tetikleyicileri: GitLab API'sini kullanarak dış bir sistem veya betikten pipeline'ları başlatabilirsiniz. Bu, zamanlamanın daha karmaşık olduğu veya dış olaylara bağlı olduğu durumlar için faydalıdır.
  3. Koşullu yürütme için CI/CD değişkenleri: .gitlab-ci.yml dosyası içinde, önceden tanımlanmış veya özel değişkenler kullanarak görevin yürütülme koşullarını belirleyebilirsiniz. Bu, kendisi bir zamanlama oluşturmasa da, pipeline'ı zamanlamayla başlatıp, içerde zamanlama değişkenlerine göre hangi görevlerin çalıştırılacağını karar verebilirsiniz.

Pipeline Planlaması kullanımı örneği:

GitLab arayüzünde, depo -> Build -> Pipeline planlamalarına gidin. Yeni bir zamanlama oluşturun ve şunları belirtin:

  • Açıklama
  • Dal/etiket
  • Aralık (cron sözdizimi, örneğin, 0 0 * * * gece yarısı günlük çalıştırma için)
  • Değişkenler (isteğe bağlı)

API tetikleyici örneği (curl kullanarak):

# Private-Token'ı kişisel erişim token'ınızla değiştirin, API izinleriyle
# <your_project_id>'yi projenizin ID'siyle değiştirin
# <your_ref_name>'yi dal veya etiket adıyla değiştirin

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 içinde koşullu yürütme için bir değişken kullanma örneği:

stages:
  - build
  - deploy

scheduled_job:
  stage: build
  script:
    - echo "Bu iş, sadece zamanlama tarafından tetiklendiğinde çalışır"
  only:
    variables:
      - $CI_PIPELINE_SOURCE == "schedule"

other_job:
  stage: deploy
  script:
    - echo "Bu iş, tüm pipeline kaynakları için çalışır"
  # `only: variables:` koşulu yok

Yöntem seçimi, belirli gereksinimlere bağlıdır. Basit tekrarlayan görevler için Pipeline Planlamaları en iyi seçimdir. Daha karmaşık senaryolar veya dış sistemlerle entegrasyon için API tetikleyicileri uygundur. Değişkenlerle koşullu yürütme, zaten başlatılmış bir pipeline içindeki akışı kontrol etmek için faydalıdır.