İçeriğe geç
edumintsBlog
Yazılım3 dk okuma

GitHub Actions İş Akışlarınızı Kilitleyin (Lockfiles)

Kaynak: Hacker News

Paylaş
YazılımEdumints Blog
İçindekiler 4 başlık

GitHub Actions artık iş akışı kilit dosyalarını (workflow lockfiles) destekliyor. GitHub Actions bileşenleri doğrudan Git üzerinden çekildiği için, önceki güvenlik tavsiyesi sürüm etiketleri (tag) yerine tam bir commit SHA değerine sabitleme yapmaktı. Bunun temel nedeni, etiketlerin değiştirilebilir (mutable) olması ve bir saldırganın daha önce güvenli olan bir etiketi kötü amaçlı bir koda yönlendirebildiği tedarik zinciri (supply-chain) saldırılarına açık olmasıdır.

Örneğin, eski yöntemle güvenliği sağlanmış bir iş akışı dosyası şu şekilde görünüyordu:

name: Lint
on: [push, pull_request, workflow_dispatch]
permissions: {}
env:
  FORCE_COLOR: 1
  RUFF_OUTPUT_FORMAT: github
jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
        with:
          persist-credentials: false
      - uses: j178/prek-action@44924fe9ef4a6f88253c4b6b1bf11c689d3ce53d # v3.1.0

Yazılım geliştirme süreçlerinde karmaşık SHA özetlerini yorum satırlarıyla takip etmek yerine kilit dosyalarını nasıl kurabileceğinizi adım adım inceleyelim.

Kurulum (Install)#

İlk adım olarak gh-actions-lock eklentisini gh CLI aracına kurun:

$ gh extension install github/gh-actions-lock
✓ Installed extension github/gh-actions-lock

Kilitleme İşlemi (Lock ’em)#

Proje deponuzun (repository) içinde aşağıdaki komutu çalıştırın:

$ gh actions-lock
✓ All 1 workflows valid

Bu işlemden sonra iş akışı dosyanız okunabilir vX.Y.Z etiketlerini kullanmaya başlar ve yapılan değişiklik şu şekilde görünür:

-      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
+      - uses: actions/[email protected]
         with:
           persist-credentials: false
-      - uses: j178/prek-action@44924fe9ef4a6f88253c4b6b1bf11c689d3ce53d # v3.1.0
+      - uses: j178/[email protected]

Komut aynı zamanda .github/workflows/actions.lock yolunda otomatik bir kilit dosyası oluşturur:

# This file is machine-generated by `gh actions-lock`.
# Do not edit by hand; run `gh actions-lock` to update.
# Docs: https://gh.io/actions-lockfile
version: v0.0.3
workflows:
  .github/workflows/lint.yml:
    - actions/[email protected]
    - j178/[email protected]
dependencies:
  actions/[email protected]:
    ref: v7.0.1
    commit: sha1-3d3c42e5aac5ba805825da76410c181273ba90b1
    owner_id: 44036562
    repo_id: 197814629
  j178/[email protected]:
    ref: v3.1.0
    commit: sha1-44924fe9ef4a6f88253c4b6b1bf11c689d3ce53d
    owner_id: 10510431
    repo_id: 1052387486
  • Pratik Çıkarım: Tıpkı paket yöneticilerindeki (package-lock.json veya poetry.lock) yaklaşımda olduğu gibi, iş akışı dosyalarınızda okunabilirliği korurken arka planda kriptografik SHA, owner_id ve repo_id sabitlemesi elde edersiniz.
  • Değiştirilen iş akışı dosyalarını ve yeni oluşturulan actions.lock dosyasını deponuza commit edin.

Renovate ve Dependabot#

İyi haber şu ki, hem Renovate hem de Dependabot şimdiden kilit dosyalarını destekliyor! Düzenli bağımlılık güncellemeleriniz artık kilit dosyasını da otomatik olarak güncelleyecektir. Tedarik zinciri güvenliğini artırmak için güncellemelerde bekleme süreleri (cooldowns) kullanmayı unutmayın.

Doğrulama (Validate)#

GitHub, kilit dosyalarının güncel olduğundan ve bozulmadığından emin olmak için CI süreçlerinde doğrulanmasını önerir. Bunun için ayrı bir verify-lockfile.yml dosyası kopyalanabileceği gibi, mevcut lint iş akışının içine bağımsız ve paralel çalışan ayrı bir job olarak da eklenebilir:

  lockfile:
    runs-on: ubuntu-slim
    env:
      GH_TOKEN: ${{ github.token }}
    steps:
      - uses: actions/[email protected]
        with:
          persist-credentials: false
      - run: gh extension install github/gh-actions-lock --pin v0.4.1
      - run: gh actions-lock --verify
  • Bu yapılandırmada .github/workflows/actions.lock dosyası iş akışlarıyla senkronize olmadığında veya kilitli bir sürüm artık kaynakta doğrulanamadığında CI adımı hata verir.
  • Doğrulama işlemi için hafif sıklet ubuntu-slim çalıştırıcısı (runner) kullanmak kaynak verimliliği sağlar.
  • Eklenti kurulumunda --pin v0.4.1 ile belirli bir sürüm sabitlenmiştir; ilerleyen süreçte bu sürümü güncellemek veya otomatikleştirmenin bir yolunu bulmak gerekecektir.

Kaynak ve atıf

Bu yazı, Hacker News üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:

  • hugovk.dev/blog/2026/lock-github-actions