Act ile GitHub Eylemlerinizi Yerel Olarak Nasıl Çalıştırırsınız

GitHub Actions, geliştiricilerin iş akışlarını otomatikleştirmesini sağladı. CI/CD'den etiketlemeye, not oluşturmaya kadar her şey GitHub'da yönetilir. Ancak, geliştirme ve test zor olabilir.

Efe Demir

Efe Demir

5 June 2025

Act ile GitHub Eylemlerinizi Yerel Olarak Nasıl Çalıştırırsınız

GitHub Actions, geliştiricilerin depolarındaki iş akışlarını otomatikleştirme biçiminde devrim yarattı. Sürekli entegrasyon ve sürekli dağıtım (CI/CD) boru hatlarından, sorun etiketlemesini ve sürüm notları oluşturmayı otomatikleştirmeye kadar, Actions, yazılım geliştirme yaşam döngüsünü doğrudan GitHub içinde yönetmek için güçlü, entegre bir yol sunar.

Ancak, bu iş akışlarını geliştirmek ve test etmek bazen zahmetli olabilir. Geleneksel döngü şunları içerir:

  1. İş akışı dosyalarınızda değişiklik yapmak (genellikle .github/workflows/ içinde bulunur).
  2. Bu değişiklikleri kaydetmek.
  3. Bunları GitHub deponuza göndermek.
  4. GitHub'ın çalıştırıcılarının işi almasını ve yürütmesini beklemek.
  5. Değişikliklerinizin çalışıp çalışmadığını veya hatalara neden olup olmadığını görmek için GitHub web sitesindeki günlükleri analiz etmek.

Bu süreç, özellikle bekleme kısmı ve yerel düzenleyiciniz ile GitHub kullanıcı arayüzü arasındaki bağlam geçişi, özellikle karmaşık iş akışları üzerinde yineleme yaparken veya zorlu sorunları ayıklarken, geliştirmeyi önemli ölçüde yavaşlatabilir. Ya Actions'larınızı göndermeden önce test edebilseydiniz?

Tam olarak bu noktada act devreye giriyor. Etiket satırının önerdiği gibi, "Küresel düşün, act yerel olarak". act, GitHub Actions iş akışlarınızı yerel olarak Docker kapsayıcılarını kullanarak çalıştırmak için tasarlanmış, açık kaynaklı bir komut satırı aracıdır. GitHub Actions tarafından sağlanan ortamı simüle eder, iş akışlarınızı kaydetme ve gönderme ihtiyacı duymadan hızlı bir şekilde test etmenize ve yinelemenize olanak tanır.

💡
Güzel API Dokümantasyonu oluşturan harika bir API Test aracı mı istiyorsunuz?

Geliştirici Ekibinizin maksimum verimlilikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?

Apidog tüm taleplerinizi karşılıyor ve Postman'in yerini çok daha uygun bir fiyata alıyor!
button

Neden GitHub Actions'ı act ile Yerel Olarak Çalıştıralım?

act'i geliştirme iş akışınıza dahil etmenin faydaları önemli ölçüdedir:

  1. Hızlı Geri Bildirim: Bu, birincil avantajdır. Kaydet-gönder-bekle-hata ayıklama döngüsü yerine, iş akışınızı yerel olarak bir değişiklik yaptıktan hemen sonra çalıştırabilirsiniz. Dakikalarca veya onlarca dakika yerine saniyeler veya dakikalar içinde geri bildirim alın. Bu, .github/workflows/ dosyalarınız için geliştirme ve hata ayıklama sürecini önemli ölçüde hızlandırır.
  2. Yerel Görev Çalıştırıcısı: Birçok proje, yaygın geliştirme görevlerini (derleme, test etme, linting vb.) tanımlamak için make, npm scripts veya özel kabuk komut dosyaları gibi araçlar kullanır. act, bu görevleri birleştirmenize olanak tanır. Derleme, test ve diğer süreçlerinizi GitHub Actions işleri olarak tanımlayabilir ve ardından geliştirme amaçları için bu aynı işleri yerel olarak çalıştırmak için act'i kullanabilirsiniz. Bu, yinelenmeyi azaltır ve yerel geliştirme ortamınız ile CI/CD boru hattınız arasında tutarlılık sağlar. Görevleri bir kez iş akışı dosyalarınızda tanımlarsınız ve her yerde aynı (veya çok benzer) şekilde çalışırlar.
  3. Çevrimdışı Geliştirme: Sabit bir internet bağlantısı olmasa bile temel iş akışı sözdizimini ve mantığını test edin (ancak ilk görüntü indirmeleri ve belirli eylemler bağlantı gerektirebilir).
  4. Maliyet Tasarrufu: GitHub, genel depolar için cömert bir ücretsiz katman ve özel olanlar için makul fiyatlandırma sağlarken, geliştirme sırasında karmaşık veya uzun iş akışlarını tekrar tekrar çalıştırmak, çalıştırıcı dakikalarını tüketebilir. Yerel olarak test etmek bu kullanımı önler.
  5. Hata Ayıklama Gücü: GitHub'da başarısız olan Actions'ları hata ayıklamak genellikle ek günlük kaydı eklemeyi, göndermeyi ve beklemeyi içerir. act ile yerel ortamı inceleyebilir, birimleri bağlayabilir ve döndürdüğü Docker kapsayıcıları içinde daha gelişmiş hata ayıklama tekniklerini potansiyel olarak kullanabilirsiniz.

act Nasıl Çalışır?

act'in arkasındaki mekanizmayı anlamak, onu etkili bir şekilde kullanmanıza ve olası sorunları gidermenize yardımcı olur. İşte çalışmasının bir dökümü:

  1. İş Akışı Ayrıştırma: Deponuzun kök dizininde act komutunu yürüttüğünüzde, iş akışı YAML dosyalarınız için .github/workflows/ dizinini tarar.
  2. Olay Tetikleme Simülasyonu: Varsayılan olarak, act bir push olayını simüle eder, ancak pull_request, workflow_dispatch vb. gibi diğer olayları belirtebilirsiniz. Belirtilen olaya ve iş akışı dosyalarınızda tanımlanan on: tetikleyicilere göre hangi iş akışlarının ve işlerin çalıştırılması gerektiğini belirler.
  3. Bağımlılık Analizi: act, doğru yürütme sırasını belirlemek için bir iş akışı içindeki işler arasındaki bağımlılıkları (needs: anahtar sözcüğünü kullanarak) analiz eder.
  4. Docker Görüntüsü Yönetimi: Her iş için, act belirtilen çalıştırıcı ortamını (örneğin, runs-on: ubuntu-latest) tanımlar. Daha sonra bunu belirli bir Docker görüntüsüne eşler. act, Docker API'sini kullanır:
  1. Kapsayıcı Yürütme: act, bir iş içindeki her adım için kapsayıcılar oluşturmak ve çalıştırmak için Docker API'sini kullanır. Bu kapsayıcıları, GitHub Actions ortamını olabildiğince yakından taklit edecek şekilde yapılandırır:
  1. Günlük Akışı: act, çalışan kapsayıcılardan gelen günlükleri doğrudan terminalinize aktarır ve yürütme ilerlemesi ve olası hatalar hakkında gerçek zamanlı geri bildirim sağlar.

Esasen, act, GitHub Actions iş akışlarınızın yürütme akışını ve ortamını çoğaltmak için yerel Docker kapsayıcılarını düzenler.

Önkoşullar: Docker Kurulumu

act için temel bağımlılık Docker'dır. act, iş akışı adımlarınızı çalıştırmak için gereken yalıtılmış ortamları oluşturmak için Docker motorundan yararlanır. act'i yüklemeden önce, sisteminizde çalışan bir Docker kurulumunuz olmalıdır.

act'i Yükleme

Docker çalıştıktan sonra, act'i yükleyebilirsiniz. İşletim sisteminize ve tercihlerinize bağlı olarak bunu yapmanın birkaç yolu vardır.

1. Homebrew (macOS ve Linux)

Homebrew paket yöneticisini kullanıyorsanız, kurulum basittir:

brew install act

Bu, en son kararlı sürümü yükler. En son geliştirme sürümünü (derleyici gerektirebilir) istiyorsanız, şunu kullanabilirsiniz:

brew install act --HEAD

2. GitHub CLI Uzantısı (macOS, Windows, Linux)

Zaten GitHub CLI'yi (gh) kullanıyorsanız, act'i bir uzantı olarak yükleyebilirsiniz:

gh extension install nektos/gh-act

Kurulumdan sonra, act'i gh komutu aracılığıyla çağırırsınız:

gh act          # Sadece 'act' yerine
gh act -l
gh act pull_request

3. Chocolatey (Windows)

Windows'ta Chocolatey paket yöneticisini kullananlar için:

choco install act-cli

(Not: Bazı kaynaklar act-cli yerine act listeleyebilir. Sorunlarla karşılaşırsanız, Chocolatey topluluk deposundaki en son paket adını kontrol edin.)

4. Scoop (Windows)

Windows'ta Scoop paket yöneticisini kullananlar için:

scoop install act

5. WinGet (Windows)

Windows Paket Yöneticisi'ni (winget) kullananlar için:

winget install nektos.act

6. Linux Komut Dosyası Yükleyicisi

Paket yöneticileri aracılığıyla kolay erişimi olmayan Linux dağıtımları için bir kolaylık komut dosyası mevcuttur:

curl -s https://raw.githubusercontent.com/nektos/act/master/install.sh | sudo bash

(Not: Komut dosyalarını doğrudan sudo'ya yönlendirirken her zaman dikkatli olun. Güvenlik endişeleriniz varsa önce komut dosyası içeriğini inceleyin.)

7. Diğer Yöntemler (Arch, COPR, MacPorts, Nix)

pacman (Arch), COPR (Fedora), MacPorts ve Nix gibi diğer paket yöneticileri için kurulum talimatları resmi act belgelerinde mevcuttur:

Doğrulama:

Kurulumdan sonra, yeni bir terminal penceresi açın ve şunu çalıştırın:

act --version
# veya gh uzantısını kullanıyorsanız:
gh act --version

Bu, act'in yüklü sürümünü yazdırmalı ve kurulumun başarılı olduğunu doğrulamalıdır.

İlk Yapılandırma: Çalıştırıcı Görüntüleri

Bir proje dizininde act'i ilk çalıştırdığınızda, varsayılan bir çalıştırıcı görüntüsü boyutu seçmenizi isteyebilir. GitHub Actions, farklı kaynaklara ve önceden yüklenmiş yazılımlara sahip çalıştırıcılar sunar. act, farklı temel Docker görüntüleri kullanarak bunu taklit etmeye çalışır.

Tipik olarak, bunun gibi bir seçim sunulacaktır:

? Lütfen act ile kullanmak istediğiniz varsayılan görüntüyü seçin:

  - Micro: Nodejs desteği olan minimum görüntü (~200MB) docker.io/node:16-buster-slim
  - Medium: Temel araçlara sahip Act görüntüsü (~500MB) ghcr.io/catthehacker/ubuntu:act-latest
  - Large: Github Actions çalıştırıcı görüntüsü (~17GB) ghcr.io/catthehacker/ubuntu:full-latest

Varsayılan görüntü? [Medium]:

Öneri: Medium görüntüsüyle başlayın. İyi bir denge sağlar ve birçok yaygın kullanım durumu için çalışır. Eksik yazılımlar nedeniyle sorunlarla karşılaşırsanız, yazılımı iş akışı adımlarınız içinde yükleyebilir veya o belirli çalıştırıcı için Large görüntüsünü kullanmaya geçebilirsiniz (bununla ilgili daha fazla bilgi daha sonra).

act, seçiminizi bir yapılandırma dosyasına (~/.actrc) kaydeder. Bu dosyayı düzenleyerek veya yapılandırması gereken bir dizinde act'i yeniden çalıştırarak varsayılanı daha sonra değiştirebilirsiniz.

Temel act Kullanımı: İş Akışlarınızı Çalıştırma

Yüklendikten ve yapılandırıldıktan sonra, act'i kullanmak nispeten basittir. Terminalinizde projenizin kök dizinine (.github klasörünü içeren) gidin.

1. Varsayılan Olayı Çalıştır (push)

En basit komut, varsayılan push olayı tarafından tetiklenen iş akışlarını çalıştırır:

act
# veya
gh act

act, iş akışlarınızı ayrıştıracak, on: push tarafından tetiklenen işleri belirleyecek, gerekli Docker görüntülerini çekecek (henüz önbelleğe alınmadıysa) ve işleri yürütecektir.

2. Mevcut İş Akışlarını ve İşleri Listeleme

act'in hangi iş akışlarını ve işleri tanıdığını ve varsayılan olay için çalıştıracağını görmek için:

act -l
# veya
gh act -l

Bu, şuna benzer bir liste çıkarır:

Aşama  İş Kimliği        İş adı      İş Akışı adı  İş Akışı dosyası  Olaylar
0      build         Derleme         CI Boru Hattı    ci.yaml        push
1      test          Test          CI Boru Hattı    ci.yaml        push
1      lint          Lint          Kod Kalitesi   codeql.yaml    push,pull_request

3. Belirli Bir İşi Çalıştırma

Bir iş akışından yalnızca tek bir işi test etmek istiyorsanız, act -l çıktısından sonra iş kimliğini izleyen -j bayrağını kullanın:

act -j build
# veya
gh act -j build

4. Belirli Bir Olayı Tetikleme

İş akışları genellikle push dışında olayları tetikler. Bu olayları, olay adını act'e bir argüman olarak sağlayarak simüle edebilirsiniz:

# Bir çekme isteği olayını simüle et
act pull_request

# Bir workflow_dispatch olayını (manuel tetikleyici) simüle et
act workflow_dispatch

# Bir zamanlama olayını simüle et
act schedule

# Bir yayın olayını simüle et
act release -e event.json # Gerekirse olay yükü ayrıntılarını sağlayın

act, yalnızca belirtilen on: olayını çalıştırmak üzere yapılandırılmış iş akışlarını ve işleri yürütecektir.

5. workflow_dispatch için Girişleri Geçme

workflow_dispatch tarafından tetiklenen iş akışları, girişleri kabul edebilir. Bunları --input bayrağını veya -i'yi kullanarak sağlayabilirsiniz:

# İş akışınızın 'environment' adında bir girişi olduğunu varsayarsak
act workflow_dispatch --input environment=staging

6. Sırları İşleme

GitHub Actions iş akışları genellikle sırlar (API anahtarları veya belirteçler gibi) kullanır. act, GitHub sırlarını otomatik olarak erişmez. Bunları yerel olarak sağlamanız gerekir.

act -s MY_SECRET_TOKEN -s ANOTHER_SECRET

Alternatif olarak, sadece act -s tüm sırları ister.

export SECRET_MY_SECRET_TOKEN="your_value"
act
MY_SECRET_TOKEN=your_value
ANOTHER_SECRET=another_value

Ardından, --secret-file bayrağıyla act'i çalıştırın:

act --secret-file .secrets

(Sırları kaydetmekten kaçınmak için bu dosyanın .gitignore'unuza eklendiğinden emin olun!)

7. Değişkenleri ve Ortam Değişkenlerini İşleme

act --env NODE_ENV=development --env CUSTOM_FLAG=true
act --env-file .env_vars

Çalıştırıcı Ortamlarını ve Görüntülerini Yönetme

Varsayılan çalıştırıcı görüntüleri (Micro, Medium, Large) birçok senaryoyu kapsarken, genellikle daha fazla kontrole ihtiyacınız olur.

1. Varsayılan Görüntülerin Sınırlamaları

Varsayılan act çalıştırıcı görüntülerinin (özellikle Micro ve Medium), GitHub tarafından sağlanan ortamlara aynı olmadığını unutmayın. İş akışınızın beklediği belirli araçlardan, kitaplıklardan veya sistem hizmetlerinden (systemd gibi) yoksun olabilirler. Large görüntüleri daha yüksek doğruluk sunar, ancak önemli boyut dezavantajıyla birlikte gelir.

2. -P ile Alternatif Görüntüleri Belirtme

Bir iş, varsayılan görüntüde bulunmayan belirli bir ortam veya araç takımı gerektiriyorsa, act'e -P (platform) bayrağını kullanarak belirli bir platform için farklı bir Docker görüntüsü kullanmasını söyleyebilirsiniz.

Biçim -P <platform>=<docker-image>'dir.

Örnekler:

# ubuntu-22.04'te çalışan işler için özel olarak Large görüntüsünü kullanın
act -P ubuntu-22.04=ghcr.io/catthehacker/ubuntu:full-22.04

# ubuntu-latest işleri için belirli bir Node.js sürümünü kullanın
act -P ubuntu-latest=node:18-bullseye

# nektos/act-environments'tan daha eksiksiz bir görüntü kullanın (çok büyük!)
# UYARI: nektos/act-environments-ubuntu:18.04 >18GB
act -P ubuntu-18.04=nektos/act-environments-ubuntu:18.04

# İş akışınız kullanıyorsa birden çok platform belirtin
act -P ubuntu-20.04=node:16-buster -P ubuntu-22.04=node:18-bullseye

3. Yerel Çalıştırıcı Görüntülerini Kullanma (--pull=false)

Varsayılan olarak, act, belirtilen Docker görüntüsünün en son sürümünü her çalıştırmasında çekmeye çalışır. Yerel olarak özel bir çalıştırıcı görüntüsü oluşturduysanız veya önbelleğe aldığınız tam sürümü kullandığınızdan emin olmak istiyorsanız, bu davranışı devre dışı bırakabilirsiniz:

act --pull=false
# veya potansiyel olarak çevrimdışı modu kullanın
act --action-offline-mode

Bu, act'e mevcutsa yerel olarak kullanılabilir görüntüyü kullanmasını ve yalnızca eksikse çekmeyi denemesini söyler.

4. Ana Bilgisayarda Yerel Olarak Çalıştırma (-self-hosted)

macOS veya Windows'u hedefleyen iş akışları için (runs-on: macos-latest veya runs-on: windows-latest), act'i aynı ana bilgisayar işletim sisteminde çalıştırıyorsanız, act'e çalıştırıcının kendisi için bir Docker kapsayıcısı kullanmamasını söyleyebilirsiniz. Bunun yerine, adımları doğrudan ana makinenizde yürütecektir. Bu, Docker uyumluluğu bir sorunsa veya ana bilgisayar kaynaklarına doğrudan erişmeniz gerekiyorsa faydalı olabilir.

# macos-latest işlerini doğrudan Mac ana bilgisayarınızda çalıştırın
act -P macos-latest=-self-hosted

# windows-latest işlerini doğrudan Windows ana bilgisayarınızda çalıştırın
act -P windows-latest=-self-hosted

Dikkat: Doğrudan ana bilgisayarda çalıştırmak, Docker tarafından sağlanan yalıtımı atlar. İş akışı adımları, dosya sisteminize erişebilecek ve potansiyel olarak ana bilgisayar ortamınızı değiştirebilecektir. Bu seçeneği dikkatli kullanın. Hizmet kapsayıcıları veya kapsayıcı eylemleri gibi Docker kapsayıcılarını açıkça kullanan iş içindeki adımlar yine de Docker'ı kullanacaktır.

Sınırlamalar ve Hususlar

act inanılmaz derecede faydalı olsa da, sınırlamalarının farkında olmak önemlidir:

Öneri: Hızlı geliştirme, sözdizimi kontrolü, temel mantık testi ve tek tek işler veya adımlar üzerinde yineleme için act'i kullanın. Özellikle dağıtım boru hatları için, kritik değişiklikleri birleştirmeden önce iş akışlarınızı her zaman GitHub'da çalıştırarak son doğrulama gerçekleştirin. Ayrıntılı destek matrisi ve bilinen sorunlar için resmi act belgelerine bakın.

Sonuç

GitHub Actions'ı yerel olarak test etmek, potansiyel olarak yavaş ve sıkıcı hata ayıklama döngüsünü hızlı, yinelemeli bir sürece dönüştürerek önemli bir üretkenlik artırıcıdır. act CLI aracı, yerel makinenizde GitHub Actions çalıştırıcı ortamını simüle etmek için Docker'dan yararlanarak bunu başarmak için sağlam ve esnek bir yol sağlar.

act'i iş akışınıza entegre ederek şunları elde edersiniz:

Sınırlamaları olsa ve canlı GitHub ortamının mükemmel bir 1:1 değişimi olmasa da, act çok çeşitli kullanım durumlarını kapsar ve güvenilir ve etkili GitHub Actions iş akışları geliştirme ile ilgili sürtünmeyi önemli ölçüde azaltır. Kurun, mevcut iş akışlarınızı yerel olarak çalıştırmayı deneyin ve yerel olarak hareket ederken küresel düşünmenin faydalarını deneyimleyin.

💡
Güzel API Dokümantasyonu oluşturan harika bir API Test aracı mı istiyorsunuz?

Geliştirici Ekibinizin maksimum verimlilikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?

Apidog tüm taleplerinizi karşılıyor ve Postman'in yerini çok daha uygun bir fiyata alıyor!
button

Explore more

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Yapay zeka hızla gelişiyor. FractalAIResearch/Fathom-R1-14B, 14.8 milyar parametreyle matematik ve genel akıl yürütmede başarılı.

5 June 2025

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code'u keşfedin: Kurumsal kullanıma özel, en özelleştirilebilir yapay zeka destekli kodlama asistanı.

5 June 2025

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code, 2025'te yapay zeka destekli kodlamayı nasıl devrimleştiriyor? Özelliklerini, kullanımını ve Windsurf kısıtlamalarından sonra neden popüler olduğunu öğrenin. Geliştiriciler için okunması gereken!

5 June 2025

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin