Workflow Context
GitHub Actions Context’leri, bir Workflow içinde pek çok farklı bilgilere (ör. hangi branch üzerinde çalışıldığı, hangi ortam değişkenleri set edildiği, hangi sıradaki job/step’in yürüdüğü vb.) erişebilmeni sağlar. Bu bilgilere “expression syntax” kullanarak, yani ${{ context.key }}
şeklinde ulaşabilirsin.
1) github
github
Ne içerir?
Repo bilgisi (ör.
github.repository
→ “owner/repo”)Event bilgisi (ör.
github.event_name
,github.event.pull_request.title
, vb.)Ref bilgisi (ör.
github.ref
→ hangi branch/tag)Actor bilgisi (
github.actor
→ iş akışını tetikleyen kullanıcı)
Bu örnekte, branch ana dal (main
) ise koşul sağlanır.
2) env
env
Ne içerir?
Workflow, job veya step düzeyinde tanımladığın environment değişkenleri.
env.FOLDER
→ "scripts"
bilgisini döndürür.
3) vars
vars
Ne içerir?
GitHub ayarlarında (repo, org veya environment düzeyinde) tanımlanmış değişkenler (Variables) bulunur.
Farkı nedir?
env
Workflow içinde tanımladığın değişkenler,vars
ise GitHub’ın “Settings → Variables” menüsünde eklediğin değişkenlerdir.
vars.GLOBAL_VAR
→ GitHub’ın arayüzünde tanımladığın bir değer döner.
4) job
job
Ne içerir?
O an çalışan job ile ilgili bilgiler: job adı, durumu, container ayarları vb.
Kullanım Örneği
Çok sık kullanılmaz, ancak job düzeyinde metadata gerekirken faydalı olabilir. Örneğin
job.status
vb.
5) jobs
(Reusable Workflows İçin)
jobs
(Reusable Workflows İçin)Ne içerir?
Reusable Workflow’larda, birden fazla job’un çıktısına (outputs) erişmene yarar.
Normal (tekil) Workflows’da genelde “
needs
” üzerinden job’ların çıktılarına bakarız; “jobs
” genellikle Reusable Workflow senaryolarında kullanılır.
6) steps
steps
Ne içerir?
Şu anda içinde bulunduğun job’daki step’lerin durum ve çıktı (outputs) bilgileri.
7) runner
runner
Ne içerir?
İş akışını çalıştıran runner hakkında bilgi: işletim sistemi, mimari, vb.
Örnek:
runner.os
,runner.arch
.
Bu koşul sadece Linux runner’da çalışsın istiyorsan kullanabilirsin.
8) secrets
secrets
Ne içerir?
GitHub “Settings → Secrets” bölümünde tanımladığın gizli değerler (API anahtarları, parolalar vb.).
secrets.MY_SECRET_KEY
ile sakladığın gizli değere erişirsin. Loglarda bu değer maskelenir.
9) strategy
strategy
Ne içerir?
Eğer bir matrix strategy (matris yapısı) kullanıyorsan,
strategy
context’i ile matris detaylarına ulaşabilirsin.
matrix.node
→ Her job varyantında ilgili Node sürümü.
10) matrix
matrix
Ne içerir?
strategy.matrix
ile tanımladığın parametre değerlerini taşıyan context.Örneğin “
matrix.os
” veya “matrix.node
” gibi parametreler.
11) needs
needs
Ne içerir?
Bu job’un bağımlı olduğu (önce çalışan) job’ların outputs değerleri.
needs.build.outputs.build_number
→ “build” job’undan dönen output.
12) inputs
inputs
Ne içerir?
Manuel tetiklenebilir (
workflow_dispatch
) Workflow’larda ya da Reusable Workflow’larda kullanıcıdan alınan input değerleri.
Kısaca Nasıl Kullanırız?
Bu context’lere, Workflow içindeki “expression syntax” ile, yani
${{ <context>.<property> }}
şeklinde erişirsin.Örneğin,
echo "Repo: ${{ github.repository }}"
diyerek console’a yazdırabilirsin.Koşul ifadelerinde
if: ${{ condition }}
şeklinde de kullanılır. Örneğin:
Token boş değilse adım çalışsın.
Özet
Context = Workflow içinde pek çok meta bilgiyi saklayan objeler.
github
→ Tetikleme, branch, event, aktör bilgisienv
vevars
→ Ortam değişkenleri (yerel veya global tanımlı)runner
→ Makine/OS bilgisisecrets
→ Gizli anahtarlar/parolalarsteps
,jobs
,needs
→ Adımlar arası veya job’lar arası çıktı/bağımlılık bilgisimatrix
vestrategy
→ Matris stratejisinde sürüm ve platform varyasyonlarıinputs
→ Kullanıcının manuel tetiklemede veya Reusable Workflow’da girdiği değerler
Bu context’lerle, GitHub Actions içinde hem condition’lar (if), hem değişken atamalar, hem de step’ler arası veri alışverişi gibi dinamik özellikler elde edersin.
Last updated
Was this helpful?