Docs

Dokümantasyon / Pipeline'lar

Step pack'ler

Ekibinizin tekrar kullanılabilir pipeline step'lerini step pack olarak tanımlayın, version'layın ve uses ile çağırın.

Step pack nedir?#

Step pack, ekibinizin bir kez tanımlayıp her pipeline'da kullanabildiği tekrar kullanılabilir step'lerden oluşur. Her step bir container image içinde çalışır. Pipeline'lar bir step'i uses: ile çağırır:

steps:
  - name: Ekibe haber ver
    uses: slack/notify@1.2
    with:
      channel: "#releases"
      webhook_url: "{{.SLACK_URL}}"

Step pack'ler konsolda Delivery > Step pack'ler altında yönetilir.

Ön koşullar#

  • Developer veya admin rolü. Viewer rolü step pack'lere bakabilir ama değiştiremez.
  • Test run için agent'ı olan bir environment.

Pack oluşturma#

  1. Delivery > Step pack'ler sayfasında Yeni step pack'e basın.
  2. Nasıl başlayacağınızı seçin:
    • Şablondan başla: Slack mesajı, health check, Helm ve testler gibi hazır, çalışan örnekler.
    • SHELL step'ini pack'e çevir: Step library'nizde image ve command'ı olan bir SHELL step'i yeni bir pack draft'ının ilk step'i olur. Orijinal step olduğu gibi kalır.
    • Boş, YAML veya zip: Boş başlayın, bir plugin.yaml ve ardından her step için bir step.yaml yapıştırın (aralarında ---) ya da başka bir konsoldan Zip olarak export et ile indirilmiş bir zip yükleyin.
  3. Pack'e bir ad verin. Ad küçük harf, rakam ve tire içerir ve sonradan değiştirilemez.

Değişiklikler draft olarak otomatik kaydedilir. Pipeline'lar bir version'ı ancak publish ettikten sonra görür.

Step tanımlama#

Her step iki şekilde çalışabilir:

  • Script: Seçtiğiniz base image içinde bir script çalışır; image build etmeniz gerekmez. Script en fazla 64 KiB olabilir.
  • Kendi image'ım: Aracınızı zaten içeren bir image getirirsiniz. Digest'e sabitle ile tag'i digest'e çevirin; tag başka bir image'a kayabileceği için publish etmeden önce sabitlemeniz istenir.

Input'lar#

Alan Açıklama
Ad Harf, rakam ve alt çizgi; rakamla başlamaz. Step'e INPUT_<AD> variable'ı olarak gelir.
Tip Metin, sayı, evet / hayır ya da seçim listesi.
Zorunlu, default Default'u olmayan zorunlu bir input'u step'i kullanan her pipeline doldurmak zorundadır.
Pattern (regex) Değerin uyması gereken düzenli ifade.
Secret Değer pipeline'a düz yazılmaz; kullanıcı {{.SLACK_URL}} gibi bir variable referansı verir. Değer log'larda maskelenir ve ayrıca $INPUT_<AD>_FILE dosyası olarak gelir.

Script'lerde input'ları environment'tan okuyun ("$INPUT_CHANNEL"). Bir komutun içine {{.INPUT_CHANNEL}} yazmayın: değer shell script'i ayrıştırmadan önce metne yerleşir ve kod olarak çalışabilir. Secret'lar için $INPUT_<AD>_FILE dosyasını tercih edin.

Output'lar#

Step, output'larını $EJO_OUTPUT dosyasına AD=değer satırları olarak yazar. Yalnızca tanımlı output'lar sonraki step'lere geçer; WorkDir gibi sistem adları kullanılamaz. Repo, step'in içinde /workspace altındadır.

Test etme#

Testi çalıştır, publish etmeden önce step'in draft'ını seçtiğiniz bir environment'ta bir kez çalıştırır. Test run'lar metrics, DORA, notification ve dashboard'larda sayılmaz. Production veya approval gerektiren environment'larda freeze window'lar ve approval'lar test run'lar için de geçerlidir.

Version publish etme#

Version publish et draft'ı yeni bir version olarak yayınlar. EJO değişikliklere göre bir version önerir:

Değişiklik Version
Zorunlu bir input eklendi ya da bir input veya output silindi major
Opsiyonel bir input veya bir output eklendi minor
Yalnızca script veya image değişti patch

Publish edilmiş bir version asla değişmez.

Pipeline'da kullanma#

  • Version 1, 1.2 veya 1.2.0 olarak yazılabilir; eşleşen publish edilmiş version'a çözülür.
  • with: değerleri {{.VAR}} template'leri olabilir. Secret input'lar yalnızca tek bir variable referansı kabul eder.
  • Referans, pipeline version'ı oluşturulurken çözülür ve image digest'i o version'a kaydedilir. Pack sonradan değişse bile pipeline version'ı aynı image'ı kullanmaya devam eder.
  • Eksik bir zorunlu input, tipine uymayan bir değer ya da bilinmeyen veya withdraw edilmiş bir version pipeline version'ının oluşturulmasını engeller.

Pack sayfasındaki Nerede kullanılıyor bölümü hangi pipeline'ların pack'in step'lerini çağırdığını gösterir.

Version'ı withdraw etme#

Hatalı bir version'ı Withdraw et ile geri çekebilirsiniz; bir sebep yazmanız gerekir. Yalnızca admin'ler withdraw edebilir.

  • Withdraw edilmiş bir version yeni bir pipeline version'ına giremez.
  • Onu hâlâ pin'leyen bir run, agent claim ettiğinde slack/notify@1.1.0 was withdrawn: <reason> hatasıyla fail olur.
  • Kullanan pipeline'lar uyarı alır.

Step image policy#

Her environment'ın bir Step image policy'si ayarı vardır: Kapalı (Off), Warn veya Enforce. Bu ayar, pack step'lerinin ve image'lı SHELL step'lerinin image'larına imza ve kritik zafiyet kurallarını uygular. Warn step'i çalıştırıp ihlali log'a yazar; Enforce step'i sebebiyle fail eder. Bkz. Supply chain güvenliği.

Not: Sunucu, salt okunur olarak işaretlenen pack'ler konsoldan değiştirilemez. Değiştirmek için Yeni pack'e kopyala ile kendi pack'inizi oluşturun.

Sonraki adımlar#

Son güncelleme: 16 Ekim 2026