Add Script to workflow
GitHub Actions içerisinde kendi bash script’lerini (veya benzer komut dosyalarını) nasıl çalıştırabileceğin üzerine odaklanıyor. Normalde “run:” satırlarıyla tek satırlık veya birkaç satırlık komutları çalıştırabiliyorsun; fakat uzun veya karmaşık işlemler için bunları .sh
gibi script dosyalarında tutmak daha düzenli olur. GitHub Actions, bu script’leri repo içinde saklamana ve iş akışı sırasında çağırmana imkan tanır.
1) runs-on: ubuntu-latest
runs-on: ubuntu-latest
Bu, job’un Ubuntu işletim sisteminde çalışan bir runner üzerinde çalışacağını belirtir.
Dolayısıyla
.sh
(bash) komut dosyaları varsayılan olarak desteklenir.
2) defaults.run.working-directory: ./scripts
defaults.run.working-directory: ./scripts
defaults.run
bloğu ile, job içerisindeki tümrun:
satırlarının varsayılan çalışma dizinini (working-directory
) ayarlıyorsun.Burada
./scripts
dendiği için, repo’nun checkout edildikten sonraki kök dizininde bulunan “scripts” klasörüne gidiliyor.Yani “run: ./my-script.sh” gibi komutlar,
scripts
klasöründen çağrılmış oluyor.
Sık Karşılaşılan Sorunlar
İzinler: Script’e çalıştırma izni (executable permission) verilmemişse (
chmod +x my-script.sh
), script çalışmaz. Genellikle repo’da commit’lerken yürütme iznini korumak gerekir.Yanlış Path: “
defaults.run.working-directory
” yoksa, script için tam yolu yazman (./scripts/my-script.sh
) veyacd scripts
komutu kullanman gerekir.Shebang: Script dosyası başında
#!/usr/bin/env bash
gibi bir shebang satırı kullanman önerilir (özellikle farklı shell’lerde tutarlılık için).
Özet
Checkout step’iyle repo kodunu indir.
defaults.run.working-directory: ./scripts
diyerek job içindeki tüm komutların “scripts” klasöründe çalışmasını sağla (isteğe bağlı).run: ./my-script.sh
diyerek script’ini çağır.Script dosyası içinde istediğin karmaşık komutları saklayabilir, bakımını kolaylaştırırsın.
Böylece “Add Script to Workflow”, yani GitHub Actions’da .sh
(veya diğer dillerde) script dosyalarını iş akışında kullanma konusu netleşmiş oluyor.
Last updated
Was this helpful?