Github Token Secret
GITHUB_TOKEN, GitHub Actions tarafından otomatik ve geçici olarak oluşturulan bir erişim anahtarıdır (token). Bir depo içinde GitHub Actions etkinleştirdiğinde, her job başlarken GitHub bu “token”ı job’a ekler. Bu token sayesinde iş akışın (Workflow), repo üzerinde (issue açma, pull request’e yorum yapma, vb.) ya da GitHub API çağrısı yaparken kimlik doğrulaması yapabilir. Böylece manuel olarak herhangi bir “Personal Access Token” (PAT) oluşturup saklamana gerek kalmadan, güvenli ve geçerli bir izinle GitHub eylemleri gerçekleştirebilirsin.
1) Nasıl Oluşur ve Ne İşe Yarar?
Her job başında GitHub depoya bir GitHub App yükler ve o job’a özel bir “installation access token” tanımlar. Bu token “GITHUB_TOKEN” adıyla environment’a eklenir (aynı zamanda
secrets.GITHUB_TOKEN
gibi erişebilirsin).Bu token, GitHub API’sine veya gh CLI’sine karşı depoya ait belirli yetkilerle (permissions) işlemler yapmanı sağlar. Örneğin:
Issue oluşturmak / güncellemek
Kodu klonlamak veya bir pull request eylemi yapmak (örn. label eklemek)
Pull request’e yorum yazmak
Önemli: Varsayılan yetkiler okuma (read) + yakın eylemler olabilir, ancak “permissions” ayarıyla write
veya diğer gerekli alanları açıp kapayabilirsin.
2) Workflow’da Kullanımı
En yaygın kullanım:
Bir step’te
env
olarak GITHUB_TOKEN’ı atamak veya doğrudansecrets.GITHUB_TOKEN
ifadesini kullanmak.gh
CLI veyacurl
ile GitHub API çağrısı yaparak issue, PR vb. eylemler yapmak.
Örnek 1: GitHub CLI ile Issue Açmak
permissions.issues: write
→ Bu job, depo üzerinde “issues” konusunda yazma izni alır.env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
→gh
CLI “GH_TOKEN” veya “GITHUB_TOKEN” adlı env’i okuyarak yetkilendirme yapar.
Örnek 2: curl
ile GitHub REST API
authorization: Bearer ${{ secrets.GITHUB_TOKEN }}
→ GitHub REST API çağrılarında HTTP header olarak token’ı ekliyoruz.Bu sayede “issue” oluşturma izni varsa işleme koyar.
3) Permissions (İzinler)
permissions alanıyla,
contents: read | write
,issues: write
,pull-requests: write
vb. kontrolleri yaparsın.Varsayılan olarak GitHub Actions, GITHUB_TOKEN’a “read” izni verir. Daha fazla (write) lazım olduğunda
permissions
eklemek gerekir.Bu ayarlar, istenmeyen bir Action’ın, deposuna zarar vermesini engellemeye yönelik güvenlik amaçlı bir önlem.
4) Süresi ve Geçerliliği
Token job boyunca geçerlidir. Job bittiğinde token da devre dışı kalır.
Her job yeni bir token alır, bu yüzden bir job’tan diğerine GITHUB_TOKEN taşınmaz veya aynı kalmaz.
5) Farkı Nedir? (Personal Access Token vs. GITHUB_TOKEN)
GITHUB_TOKEN → Otomatik, geçici, repo-lokal. Workflow context’inde kolay kullanılır.
Personal Access Token (PAT) → Kullanıcının el ile oluşturduğu, GitHub kullanıcı hesabına bağlı, genelde daha geniş/küresel izinlere sahip olabilir. PAT ile org veya repo’lar arası iş yaparken dikkatli olmak ve token’i saklamak gerekir.
GITHUB_TOKEN, genellikle PR/Issue otomasyonu gibi repo içi eylemler için en güvenli yaklaşım kabul edilir.
Özet
Otomatik oluşturulur: Workflow job’u başlayınca GitHub bir token tanımlar.
secrets.GITHUB_TOKEN şeklinde erişilir.
İzinleri
permissions:
bloğuyla ayarlanır (varsayılan read-only, write yapmak için belirtmen gerekir).API/CLI işlemlerinde repo düzeyinde kimlik doğrulaması sağlar: Issue açmak, PR yorumlamak, label düzenlemek vb.
Geçici: Job bitince token geçersiz olur.
Bu şekilde GITHUB_TOKEN kullanarak GitHub’da otomatik işlemler yapabilir, manuel PAT yönetimiyle uğraşmadan güvenli ve pratik bir şekilde CI/CD senaryolarını oluşturabilirsin.
Last updated
Was this helpful?