Files and Directories for Actions
“Files and Directories for Actions” konusu, GitHub Actions’da kendi aksiyonunu (custom action) oluştururken nasıl bir klasör yapısı (directory structure) kullanman gerektiğini ve hangi dosyaların zorunlu olduğunu açıklar.
JavaScript Action (Node.js tabanlı)
Docker Container Action (Dockerfile + entrypoint ile)
1) JavaScript Action: Dosya ve Klasör Yapısı
Örnek Dizilim
action.yml
Aksiyonun inputs (girdi parametreleri), outputs (çıktı değerleri) ve
runs
(hangi ortamda/ana dosyada çalışacağı) gibi metadata’yı içerir.Örnek:
index.js
Action çalıştığında bu Node.js dosyası çalışır.
@actions/core
gibi paketler kullanarakgetInput()
,setOutput()
yapabilirsin.Mesela:
package.json ve node_modules
Action’ın JS bağımlılıklarını (ör.
@actions/core
,@actions/github
) listelediğin NPM dosyası.“npm install” sonrası
node_modules
klasörü oluşur.Bu klasör isteğe bağlı olarak commit edilebilir (actions require bundling sometimes), ya da bundling / ncc kullanarak tek dosyaya da paketleyebilirsin.
README.md
Action’ın nasıl kullanılacağı, hangi
inputs
/outputs
olduğu, sürüm bilgileri gibi dokümantasyon.
Özet (JavaScript Action)
action.yml → En önemli metadata.
index.js → Ana çalışma dosyası. Node.js kodun burada.
package.json → Bağımlılık yönetimi.
Bu yapı, Node tabanlı (platform bağımsız) action geliştirmeye imkan verir.
2) Docker Container Action: Dosya ve Klasör Yapısı
Örnek Dizilim
Dockerfile
İçinde “FROM ubuntu:latest”, “RUN apt-get install…” vb. satırlar olur.
Action çalışırken GitHub runner, bu Dockerfile’dan bir imaj oluşturur (veya cached). Sonra container’ı çalıştırır.
entrypoint.sh
Container başlarken hangi script’in çalışacağını belirlersin (ENTRYPOINT or CMD).
Örneğin:
“action.yml” dosyasında “args: [ ... ]” diyerek
inputs
parametrelerini bu script’e aktarabilirsin.
action.yml (Docker Sürümü)
“using: docker” diyerek Docker Action olduğunu belirtirsin.
“image: Dockerfile” → Bu Dockerfile bu action’ın imajını inşa eder.
“args: [ ${{ inputs.my-input }} ]” → Bu girdi parametresini container’a komut satırı argümanı olarak iletir.
README.md
Açıklama: “Bu Docker action şu paketleri kuruyor, şu parametreleri alıyor.”
Özet (Docker Container Action)
action.yml → “using: docker” + “image: Dockerfile”.
Dockerfile → Ortam ve bağımlılıklar.
entrypoint.sh (ya da benzer script) → Container çalıştığında asıl kod.
Sadece Linux runner üstünde çalışır.
Sonuç
“Files and Directories for Actions” şöyle özetlenebilir:
action.yml → Tüm action türlerinde (JS, Docker, Composite) kullanılan metadata dosyası. Inputs, outputs, runs.
Ana Kod Dosyası →
JavaScript Action →
index.js
veya benzer.Docker Action →
Dockerfile
+entrypoint.sh
.Composite Action → Sadece
.yml
step tanımları.
package.json, node_modules (JS Action’da) veya Dockerfile (Docker Action’da) ya da step’ler (Composite) eklenir.
README.md → Kullanım dokümantasyonu.
Last updated
Was this helpful?