{"id":37041,"date":"2025-12-26T16:30:38","date_gmt":"2025-12-26T13:30:38","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/"},"modified":"2025-12-26T16:30:38","modified_gmt":"2025-12-26T13:30:38","slug":"act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/","title":{"rendered":"Act ile GitHub Actions \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Yerelde Test Ederek H\u0131zland\u0131r\u0131n"},"content":{"rendered":"<h2>Act ile GitHub Actions \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Yerelde Test Ederek H\u0131zland\u0131r\u0131n<\/h2>\n<p>GitHub Actions, modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinin vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015ftir. Otomatik testlerden da\u011f\u0131t\u0131ma kadar bir\u00e7ok g\u00f6revi otomatize ederek geli\u015ftiricilerin hayat\u0131n\u0131 kolayla\u015ft\u0131r\u0131r. Ancak, her de\u011fi\u015fiklikte i\u015f ak\u0131\u015f\u0131n\u0131n GitHub sunucular\u0131nda \u00e7al\u0131\u015fmas\u0131n\u0131 beklemek, \u00f6zellikle hata ay\u0131klama a\u015famas\u0131nda zaman kayb\u0131na ve verimsizli\u011fe yol a\u00e7abilir. \u0130\u015fte tam bu noktada <strong>Act<\/strong> devreye giriyor. Act, GitHub Actions i\u015f ak\u0131\u015flar\u0131n\u0131z\u0131 yerel makinenizde \u00e7al\u0131\u015ft\u0131rman\u0131za olanak tan\u0131yan g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Bu makalede, Act&#8217;in ne oldu\u011funu, nas\u0131l kuruldu\u011funu, nas\u0131l kullan\u0131laca\u011f\u0131n\u0131 ve geli\u015ftirme s\u00fcrecinize nas\u0131l entegre ederek verimlili\u011finizi art\u0131rabilece\u011finizi detayl\u0131 bir \u015fekilde inceleyece\u011fiz.<\/p>\n<h2>Giri\u015f: GitHub Actions ve Yerel Test \u0130htiyac\u0131<\/h2>\n<h3>GitHub Actions Nedir?<\/h3>\n<p>GitHub Actions, do\u011frudan GitHub deponuzda yaz\u0131l\u0131m geli\u015ftirme ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc otomatikle\u015ftirmek i\u00e7in kullanabilece\u011finiz bir s\u00fcrekli entegrasyon ve s\u00fcrekli teslimat (CI\/CD) platformudur. Kodunuzu derlemek, test etmek, paketlemek, yay\u0131nlamak veya da\u011f\u0131tmak gibi g\u00f6revleri otomatize etmenizi sa\u011flar. YAML dosyalar\u0131 arac\u0131l\u0131\u011f\u0131yla tan\u0131mlanan i\u015f ak\u0131\u015flar\u0131 (workflows), belirli olaylar (push, pull request vb.) tetiklendi\u011finde otomatik olarak \u00e7al\u0131\u015f\u0131r. Bu otomasyon, geli\u015ftirme h\u0131z\u0131n\u0131 art\u0131r\u0131rken insan hatalar\u0131n\u0131 azalt\u0131r ve kod kalitesini y\u00fckseltir.<\/p>\n<h3>Neden Yerel Test Gereklidir?<\/h3>\n<p>GitHub Actions&#8217;\u0131n sundu\u011fu t\u00fcm avantajlara ra\u011fmen, i\u015f ak\u0131\u015flar\u0131n\u0131 her seferinde uzak sunucularda \u00e7al\u0131\u015ft\u0131rman\u0131n baz\u0131 dezavantajlar\u0131 vard\u0131r:<\/p>\n<ul>\n<li><strong>Yava\u015f Geri Bildirim D\u00f6ng\u00fcs\u00fc:<\/strong> K\u00fc\u00e7\u00fck bir de\u011fi\u015fiklik veya hata ay\u0131klama i\u00e7in bile, i\u015f ak\u0131\u015f\u0131n\u0131n sunucularda tamamlanmas\u0131n\u0131 beklemek zaman al\u0131c\u0131d\u0131r. Bu durum, \u00f6zellikle karma\u015f\u0131k i\u015f ak\u0131\u015flar\u0131nda veya s\u0131k yap\u0131lan de\u011fi\u015fikliklerde geli\u015ftirme h\u0131z\u0131n\u0131 d\u00fc\u015f\u00fcr\u00fcr.<\/li>\n<li><strong>Maliyet:<\/strong> GitHub Actions, belirli bir kullan\u0131m limitinin \u00fczerinde \u00fccretlendirme yapabilir. Her deneme \u00e7al\u0131\u015ft\u0131rmas\u0131 bu limite dahil olur ve gereksiz maliyetlere yol a\u00e7abilir.<\/li>\n<li><strong>\u00c7evrimd\u0131\u015f\u0131 \u00c7al\u0131\u015fma Zorlu\u011fu:<\/strong> \u0130nternet ba\u011flant\u0131s\u0131 olmadan i\u015f ak\u0131\u015flar\u0131n\u0131z\u0131 test etmek m\u00fcmk\u00fcn de\u011fildir.<\/li>\n<li><strong>Hata Ay\u0131klama Zorlu\u011fu:<\/strong> Uzak sunuculardaki hatalar\u0131 ay\u0131klamak, yerel ortamda hata ay\u0131klamaktan daha zordur \u00e7\u00fcnk\u00fc daha az kontrol ve daha s\u0131n\u0131rl\u0131 hata ay\u0131klama ara\u00e7lar\u0131na sahip olursunuz.<\/li>\n<\/ul>\n<h3>Act&#8217;in Sundu\u011fu \u00c7\u00f6z\u00fcm<\/h3>\n<p>Act, bu sorunlara \u00e7\u00f6z\u00fcm sunmak i\u00e7in tasarlanm\u0131\u015ft\u0131r. GitHub Actions i\u015f ak\u0131\u015flar\u0131n\u0131z\u0131 yerel makinenizde, t\u0131pk\u0131 GitHub&#8217;\u0131n kendi runner&#8217;lar\u0131 gibi Docker kapsay\u0131c\u0131lar\u0131 i\u00e7inde \u00e7al\u0131\u015ft\u0131r\u0131r. Bu sayede:<\/p>\n<ul>\n<li>An\u0131nda geri bildirim al\u0131rs\u0131n\u0131z.<\/li>\n<li>GitHub Actions dakikalar\u0131n\u0131z\u0131 harcamazs\u0131n\u0131z.<\/li>\n<li>\u0130nternet ba\u011flant\u0131s\u0131na ihtiya\u00e7 duymadan \u00e7al\u0131\u015fabilirsiniz.<\/li>\n<li>Hatalar\u0131 yerel ortamda, tan\u0131d\u0131k ara\u00e7larla kolayca ay\u0131klayabilirsiniz.<\/li>\n<\/ul>\n<h2>Act Nedir ve Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/h2>\n<h3>Act&#8217;in Temel Amac\u0131<\/h3>\n<p>Act, GitHub Actions i\u015f ak\u0131\u015flar\u0131n\u0131z\u0131 yerel makinenizde sim\u00fcle etmeyi ama\u00e7lar. Bunu yaparken, her bir i\u015f (job) i\u00e7in ayr\u0131 bir Docker kapsay\u0131c\u0131s\u0131 olu\u015fturur ve bu kapsay\u0131c\u0131 i\u00e7inde i\u015f ak\u0131\u015f\u0131n\u0131zdaki ad\u0131mlar\u0131 (steps) s\u0131rayla \u00e7al\u0131\u015ft\u0131r\u0131r. Kapsay\u0131c\u0131lar, GitHub Actions&#8217;\u0131n sa\u011flad\u0131\u011f\u0131 sanal ortamlar\u0131 taklit eder, b\u00f6ylece i\u015f ak\u0131\u015f\u0131n\u0131z\u0131n uzakta \u00e7al\u0131\u015f\u0131yormu\u015f gibi davranmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>Act Nas\u0131l Kurulur?<\/h3>\n<p>Act&#8217;i kurmak olduk\u00e7a basittir. \u00d6ncelikle makinenizde <a href=\"https:\/\/www.docker.com\/products\/docker-desktop\/\" target=\"_blank\">Docker<\/a> kurulu ve \u00e7al\u0131\u015f\u0131r durumda olmal\u0131d\u0131r. Act, i\u015f ak\u0131\u015flar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in Docker&#8217;\u0131 kullan\u0131r.<\/p>\n<h4>macOS i\u00e7in Kurulum (Homebrew ile):<\/h4>\n<pre><code class=\"language-bash\">brew install act<\/pre>\n<p><\/code><\/p>\n<h4>Linux i\u00e7in Kurulum (Manuel):<\/h4>\n<pre><code class=\"language-bash\">curl https:\/\/raw.githubusercontent.com\/nektos\/act\/master\/install.sh | sudo bash<\/pre>\n<p><\/code><\/p>\n<h4>Windows i\u00e7in Kurulum (Chocolatey veya Scoop ile):<\/h4>\n<p><strong>Chocolatey ile:<\/strong><\/p>\n<pre><code class=\"language-bash\">choco install act<\/pre>\n<p><\/code><\/p>\n<p><strong>Scoop ile:<\/strong><\/p>\n<pre><code class=\"language-bash\">scoop install act<\/pre>\n<p><\/code><\/p>\n<p>Kurulumdan sonra, terminalinizde <code>act --version<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak kurulumun ba\u015far\u0131l\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol edebilirsiniz.<\/p>\n<h3>Act'in Ba\u011f\u0131ml\u0131l\u0131klar\u0131 (Docker)<\/h3>\n<p>Act, her bir GitHub Actions i\u015fini izole edilmi\u015f bir ortamda \u00e7al\u0131\u015ft\u0131rmak i\u00e7in Docker'a g\u00fcvenir. \u0130\u015f ak\u0131\u015f\u0131n\u0131zdaki her ad\u0131m, belirli bir Docker imaj\u0131 i\u00e7inde \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r. Act, varsay\u0131lan olarak <code>catthehacker\/ubuntu:act-latest<\/code> gibi hafif imajlar\u0131 kullan\u0131r, ancak isterseniz kendi \u00f6zel imajlar\u0131n\u0131z\u0131 da belirleyebilirsiniz. Bu, i\u015f ak\u0131\u015f\u0131n\u0131z\u0131n ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 ve ortam\u0131n\u0131 yerel olarak tam olarak kontrol etmenizi sa\u011flar.<\/p>\n<h2>Act ile \u0130lk \u0130\u015f Ak\u0131\u015f\u0131n\u0131z\u0131 \u00c7al\u0131\u015ft\u0131rma<\/h2>\n<h3>Basit Bir Workflow Olu\u015fturma<\/h3>\n<p>\u015eimdi Act ile basit bir GitHub Actions i\u015f ak\u0131\u015f\u0131n\u0131 nas\u0131l \u00e7al\u0131\u015ft\u0131raca\u011f\u0131m\u0131za bakal\u0131m. Projenizin k\u00f6k dizininde <code>.github\/workflows\/<\/code> klas\u00f6r\u00fc alt\u0131nda <code>main.yml<\/code> ad\u0131nda bir dosya olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-yaml\"># .github\/workflows\/main.yml\nname: Basit Yerel Test\n\non: [push]\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\/checkout@v4\n      - name: Merhaba D\u00fcnya Ad\u0131m\u0131\n        run: echo \"Merhaba, Act ile yerel test yap\u0131yorum!\"\n      - name: Tarihi Yazd\u0131r\n        run: date\n      - name: Dizin \u0130\u00e7eri\u011fini Listele\n        run: ls -la<\/pre>\n<p><\/code><\/p>\n<h3><code>act<\/code> Komutunun Temelleri<\/h3>\n<p>Bu i\u015f ak\u0131\u015f\u0131n\u0131 yerel olarak \u00e7al\u0131\u015ft\u0131rmak i\u00e7in terminalinizde projenizin k\u00f6k dizinindeyken basit\u00e7e <code>act<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">act<\/pre>\n<p><\/code><\/p>\n<p>Act, ilk \u00e7al\u0131\u015ft\u0131rmada size hangi Docker imaj\u0131n\u0131 kullanmak istedi\u011finizi sorabilir (\u00f6rne\u011fin, <code>micro<\/code>, <code>medium<\/code>, <code>large<\/code>). Genellikle <code>micro<\/code> veya <code>medium<\/code> yeterli olacakt\u0131r. Act, i\u015f ak\u0131\u015f\u0131n\u0131zdaki ad\u0131mlar\u0131 s\u0131rayla \u00e7al\u0131\u015ft\u0131racak ve \u00e7\u0131kt\u0131y\u0131 terminalinize yazd\u0131racakt\u0131r. \u0130\u015flem tamamland\u0131\u011f\u0131nda, i\u015f ak\u0131\u015f\u0131n\u0131z\u0131n ba\u015far\u0131l\u0131 olup olmad\u0131\u011f\u0131n\u0131 ve her ad\u0131m\u0131n \u00e7\u0131kt\u0131s\u0131n\u0131 g\u00f6rebilirsiniz.<\/p>\n<h3>Ortam De\u011fi\u015fkenleri ve Giri\u015fler<\/h3>\n<p>GitHub Actions i\u015f ak\u0131\u015flar\u0131 genellikle ortam de\u011fi\u015fkenleri (environment variables) ve giri\u015fler (inputs) kullan\u0131r. Act, bunlar\u0131 yerel olarak da destekler:<\/p>\n<h4>Ortam De\u011fi\u015fkenleri:<\/h4>\n<p>\u0130\u015f ak\u0131\u015f\u0131n\u0131zda tan\u0131mlanan ortam de\u011fi\u015fkenleri Act taraf\u0131ndan otomatik olarak alg\u0131lan\u0131r. Ayr\u0131ca, Act komutunu \u00e7al\u0131\u015ft\u0131r\u0131rken de ortam de\u011fi\u015fkenleri tan\u0131mlayabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">act -e .env --secret MY_SECRET=myvalue<\/pre>\n<p><\/code><\/p>\n<p>Veya bir <code>.env<\/code> dosyas\u0131 olu\u015fturarak:<\/p>\n<pre><code class=\"language-bash\"># .env dosyas\u0131\nMY_VARIABLE=MerhabaAct\nANOTHER_VAR=TestDe\u011feri<\/pre>\n<p><\/code><\/p>\n<pre><code class=\"language-yaml\"># .github\/workflows\/env_test.yml\nname: Ortam De\u011fi\u015fkeni Testi\n\non: [push]\n\njobs:\n  env_job:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Ortam De\u011fi\u015fkenini Yazd\u0131r\n        run: echo \"MY_VARIABLE de\u011feri: $MY_VARIABLE\"<\/pre>\n<p><\/code><\/p>\n<p><code>act -e .env<\/code> komutu ile \u00e7al\u0131\u015ft\u0131r\u0131n.<\/p>\n<h4>Giri\u015fler (Inputs):<\/h4>\n<p>E\u011fer i\u015f ak\u0131\u015f\u0131n\u0131z <code>workflow_dispatch<\/code> ile tetikleniyorsa ve giri\u015fler bekliyorsa, bunlar\u0131 Act ile sa\u011flayabilirsiniz:<\/p>\n<pre><code class=\"language-yaml\"># .github\/workflows\/input_test.yml\nname: Giri\u015f Testi\n\non:\n  workflow_dispatch:\n    inputs:\n      name:\n        description: 'Ad\u0131n\u0131z'\n        required: true\n        default: 'D\u00fcnya'\n\njobs:\n  greet:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Selamlama\n        run: echo \"Merhaba, ${{ github.event.inputs.name }}!\"<\/pre>\n<p><\/code><\/p>\n<pre><code class=\"language-bash\">act workflow_dispatch -i name=ActKullan\u0131c\u0131s\u0131<\/pre>\n<p><\/code><\/p>\n<h2>Geli\u015fmi\u015f Act Kullan\u0131m\u0131 ve \u0130pu\u00e7lar\u0131<\/h2>\n<h3>Belirli \u0130\u015fleri \u00c7al\u0131\u015ft\u0131rma<\/h3>\n<p>Bazen t\u00fcm i\u015f ak\u0131\u015f\u0131n\u0131 de\u011fil, sadece belirli bir i\u015fi (job) \u00e7al\u0131\u015ft\u0131rmak isteyebilirsiniz. Act bunu <code>-j<\/code> veya <code>--job<\/code> bayra\u011f\u0131 ile sa\u011flar:<\/p>\n<pre><code class=\"language-bash\">act -j build # Sadece 'build' isimli i\u015fi \u00e7al\u0131\u015ft\u0131r\u0131r<\/pre>\n<p><\/code><\/p>\n<h3>Matrix Stratejileri ile \u00c7al\u0131\u015fma<\/h3>\n<p>GitHub Actions'\u0131n matrix stratejileri, birden fazla konfig\u00fcrasyonda i\u015fleri \u00e7al\u0131\u015ft\u0131rmak i\u00e7in kullan\u0131l\u0131r (\u00f6rne\u011fin, farkl\u0131 Node.js versiyonlar\u0131 veya i\u015fletim sistemleri). Act, matrix stratejilerini yerel olarak da destekler. Act, her bir matrix kombinasyonu i\u00e7in ayr\u0131 bir Docker kapsay\u0131c\u0131s\u0131 ba\u015flat\u0131r.<\/p>\n<pre><code class=\"language-yaml\"># .github\/workflows\/matrix_test.yml\nname: Matrix Testi\n\non: [push]\n\njobs:\n  test:\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        node-version: [16.x, 18.x]\n    steps:\n      - uses: actions\/checkout@v4\n      - name: Node.js ${{ matrix.node-version }} Kurulumu\n        uses: actions\/setup-node@v4\n        with:\n          node-version: ${{ matrix.node-version }}\n      - name: Node.js Versiyonunu Yazd\u0131r\n        run: node -v<\/pre>\n<p><\/code><\/p>\n<p>Bu i\u015f ak\u0131\u015f\u0131n\u0131 <code>act<\/code> ile \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, Act her iki Node.js versiyonu i\u00e7in de ayr\u0131 ayr\u0131 i\u015fleri \u00e7al\u0131\u015ft\u0131racakt\u0131r.<\/p>\n<h3>Secret Y\u00f6netimi<\/h3>\n<p>GitHub Actions i\u015f ak\u0131\u015flar\u0131 genellikle hassas bilgileri (API anahtarlar\u0131, parolalar vb.) saklamak i\u00e7in secret'lar\u0131 kullan\u0131r. Act, bu secret'lar\u0131 yerel olarak y\u00f6netmek i\u00e7in birka\u00e7 yol sunar:<\/p>\n<ul>\n<li><strong>Komut Sat\u0131r\u0131 Arg\u00fcman\u0131:<\/strong> Tek seferlik secret'lar i\u00e7in <code>--secret<\/code> veya <code>-s<\/code> bayra\u011f\u0131n\u0131 kullan\u0131n:\n<pre><code class=\"language-bash\">act --secret MY_API_KEY=my_super_secret_key<\/pre>\n<p><\/code>\n    <\/li>\n<li><strong><code>.secrets<\/code> Dosyas\u0131:<\/strong> Birden fazla secret'\u0131 y\u00f6netmek i\u00e7in projenizin k\u00f6k dizininde <code>.secrets<\/code> ad\u0131nda bir dosya olu\u015fturabilirsiniz. Her sat\u0131ra <code>SECRET_ADI=de\u011fer<\/code> format\u0131nda yaz\u0131n:\n<pre><code class=\"language-text\"># .secrets dosyas\u0131\nMY_API_KEY=my_super_secret_key\nDB_PASSWORD=secure_password<\/pre>\n<p><\/code><br \/>\n        Ard\u0131ndan <code>act<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda Act bu dosyay\u0131 otomatik olarak okuyacakt\u0131r. <strong>Bu dosyay\u0131 asla versiyon kontrol\u00fcne (git) eklemeyin!<\/strong>\n    <\/li>\n<\/ul>\n<h3>\u00d6zel Runner'lar ve Docker \u0130majlar\u0131<\/h3>\n<p>Varsay\u0131lan olarak Act, <code>catthehacker\/ubuntu:act-latest<\/code> gibi hafif Docker imajlar\u0131n\u0131 kullan\u0131r. Ancak, i\u015f ak\u0131\u015f\u0131n\u0131z belirli ara\u00e7lara veya daha spesifik bir ortama ihtiya\u00e7 duyuyorsa, Act'in kullanaca\u011f\u0131 imaj\u0131 belirtebilirsiniz:<\/p>\n<ul>\n<li><strong><code>--container-architecture<\/code>:<\/strong> Farkl\u0131 i\u015flemci mimarilerine sahip makineler i\u00e7in (\u00f6rne\u011fin Apple M1\/M2 \u00e7ipleri i\u00e7in <code>arm64<\/code>) do\u011fru Docker imaj\u0131n\u0131 se\u00e7mek i\u00e7in kullan\u0131l\u0131r:\n<pre><code class=\"language-bash\">act --container-architecture arm64<\/pre>\n<p><\/code>\n    <\/li>\n<li><strong><code>--pull<\/code>:<\/strong> Her zaman en g\u00fcncel Docker imaj\u0131n\u0131 \u00e7ekmek i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><strong><code>.actrc<\/code> Dosyas\u0131:<\/strong> Act'in varsay\u0131lan davran\u0131\u015flar\u0131n\u0131 yap\u0131land\u0131rmak i\u00e7in projenizin k\u00f6k dizininde <code>.actrc<\/code> ad\u0131nda bir dosya olu\u015fturabilirsiniz. \u00d6rne\u011fin, varsay\u0131lan imaj\u0131 veya mimariyi belirtebilirsiniz:\n<pre><code class=\"language-text\"># .actrc dosyas\u0131\n-P ubuntu-latest=catthehacker\/ubuntu:full-latest\n--container-architecture arm64<\/pre>\n<p><\/code>\n    <\/li>\n<\/ul>\n<h2>Act'in Avantajlar\u0131 ve En \u0130yi Uygulamalar<\/h2>\n<h3>H\u0131zl\u0131 Geri Bildirim D\u00f6ng\u00fcs\u00fc<\/h3>\n<p>Act'in en b\u00fcy\u00fck avantaj\u0131, i\u015f ak\u0131\u015flar\u0131n\u0131z\u0131 an\u0131nda yerel olarak test edebilmenizdir. Bir de\u011fi\u015fiklik yapt\u0131\u011f\u0131n\u0131zda, GitHub'a push yap\u0131p uzak sunucular\u0131n \u00e7al\u0131\u015fmas\u0131n\u0131 beklemek yerine, saniyeler i\u00e7inde Act ile test edebilir ve hatalar\u0131 h\u0131zla d\u00fczeltebilirsiniz. Bu, geli\u015ftirme s\u00fcrecini \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zland\u0131r\u0131r.<\/p>\n<h3>Maliyet Tasarrufu<\/h3>\n<p>GitHub Actions, belirli bir kullan\u0131m limitinin \u00fczerinde \u00fccretlidir. Act kullanarak i\u015f ak\u0131\u015flar\u0131n\u0131z\u0131 yerel olarak test etmek, gereksiz uzak \u00e7al\u0131\u015ft\u0131rmalar\u0131 \u00f6nler ve dolay\u0131s\u0131yla GitHub Actions dakikalar\u0131n\u0131zdan tasarruf etmenizi sa\u011flar. Bu, \u00f6zellikle b\u00fcy\u00fck ekipler ve s\u0131k CI\/CD kullanan projeler i\u00e7in \u00f6nemli bir maliyet avantaj\u0131 sunar.<\/p>\n<h3>\u00c7evrimd\u0131\u015f\u0131 Geli\u015ftirme Yetene\u011fi<\/h3>\n<p>\u0130nternet ba\u011flant\u0131n\u0131z olmasa bile Act ile i\u015f ak\u0131\u015flar\u0131n\u0131z\u0131 test edebilirsiniz (Docker imajlar\u0131 \u00f6nceden \u00e7ekilmi\u015fse). Bu, seyahat ederken veya ba\u011flant\u0131 sorunlar\u0131 ya\u015farken bile \u00fcretken kalman\u0131z\u0131 sa\u011flar.<\/p>\n<h3>En \u0130yi Uygulama \u0130pu\u00e7lar\u0131<\/h3>\n<ul>\n<li><strong>K\u00fc\u00e7\u00fck ve Mod\u00fcler \u0130\u015f Ak\u0131\u015flar\u0131:<\/strong> \u0130\u015f ak\u0131\u015flar\u0131n\u0131z\u0131 k\u00fc\u00e7\u00fck, odaklanm\u0131\u015f i\u015flere b\u00f6l\u00fcn. Bu, hem Act ile test etmeyi kolayla\u015ft\u0131r\u0131r hem de genel olarak daha s\u00fcrd\u00fcr\u00fclebilir CI\/CD s\u00fcre\u00e7leri olu\u015fturur.<\/li>\n<li><strong><code>.actrc<\/code> Dosyas\u0131n\u0131 Kullan\u0131n:<\/strong> S\u0131k kulland\u0131\u011f\u0131n\u0131z Act ayarlar\u0131n\u0131 (\u00f6rne\u011fin varsay\u0131lan Docker imaj\u0131, mimari) <code>.actrc<\/code> dosyas\u0131na kaydederek komutlar\u0131 basitle\u015ftirin.<\/li>\n<li><strong><code>.secrets<\/code> Dosyas\u0131n\u0131 Dikkatli Kullan\u0131n:<\/strong> Hassas bilgileri y\u00f6netmek i\u00e7in <code>.secrets<\/code> dosyas\u0131n\u0131 kullan\u0131rken, bu dosyan\u0131n asla versiyon kontrol\u00fcne eklenmedi\u011finden emin olun (<code>.gitignore<\/code>'a ekleyin).<\/li>\n<li><strong>GitHub Actions Ortam\u0131n\u0131 Taklit Edin:<\/strong> M\u00fcmk\u00fcn oldu\u011funca GitHub Actions ortam\u0131na yak\u0131n bir ortam kullanmaya \u00e7al\u0131\u015f\u0131n. Gerekirse, Act'in kullanaca\u011f\u0131 Docker imaj\u0131n\u0131 GitHub'\u0131n kulland\u0131\u011f\u0131 imajlara daha yak\u0131n olanlarla de\u011fi\u015ftirin.<\/li>\n<li><strong>Act'i Geli\u015ftirme Ak\u0131\u015f\u0131n\u0131za Entegre Edin:<\/strong> Act'i d\u00fczenli olarak kullanarak yerel test al\u0131\u015fkanl\u0131\u011f\u0131 edinin. Bu, hatalar\u0131 erken yakalaman\u0131za ve daha temiz kod geli\u015ftirmenize yard\u0131mc\u0131 olacakt\u0131r.<\/li>\n<\/ul>\n<h2>Potansiyel Zorluklar ve \u00c7\u00f6z\u00fcmler<\/h2>\n<h3>Ortam Farkl\u0131l\u0131klar\u0131<\/h3>\n<p>Act, GitHub Actions ortam\u0131n\u0131 m\u00fcmk\u00fcn oldu\u011funca taklit etse de, yerel Docker ortam\u0131n\u0131z ile GitHub'\u0131n bar\u0131nd\u0131r\u0131lan runner'lar\u0131 aras\u0131nda k\u00fc\u00e7\u00fck farkl\u0131l\u0131klar olabilir. \u00d6rne\u011fin, baz\u0131 ara\u00e7lar yerel Docker imaj\u0131n\u0131zda \u00f6nceden y\u00fckl\u00fc olmayabilirken, GitHub runner'lar\u0131nda mevcuttur.<br \/>\n<strong>\u00c7\u00f6z\u00fcm:<\/strong> \u0130\u015f ak\u0131\u015f\u0131n\u0131zda kullan\u0131lan t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131n ve ara\u00e7lar\u0131n a\u00e7\u0131k\u00e7a kuruldu\u011fundan emin olun. Gerekirse, <code>.actrc<\/code> dosyas\u0131nda daha kapsaml\u0131 bir Docker imaj\u0131 (\u00f6rne\u011fin <code>catthehacker\/ubuntu:full-latest<\/code>) belirtin veya kendi \u00f6zel Docker imaj\u0131n\u0131z\u0131 olu\u015fturun.<\/p>\n<h3>Docker ve Ba\u011f\u0131ml\u0131l\u0131k Sorunlar\u0131<\/h3>\n<p>Act, Docker'a s\u0131k\u0131 s\u0131k\u0131ya ba\u011fl\u0131d\u0131r. Docker'\u0131n d\u00fczg\u00fcn \u00e7al\u0131\u015fmamas\u0131 (\u00f6rne\u011fin, Docker Desktop'\u0131n ba\u015flat\u0131lmamas\u0131, yeterli kaynak olmamas\u0131) Act'in de \u00e7al\u0131\u015fmamas\u0131na neden olacakt\u0131r.<br \/>\n<strong>\u00c7\u00f6z\u00fcm:<\/strong> Act'i \u00e7al\u0131\u015ft\u0131rmadan \u00f6nce Docker'\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan ve yeterli sistem kayna\u011f\u0131na sahip oldu\u011fundan emin olun. Docker loglar\u0131n\u0131 kontrol ederek olas\u0131 sorunlar\u0131 tespit edebilirsiniz.<\/p>\n<h3>Act'in S\u0131n\u0131rlamalar\u0131<\/h3>\n<p>Act, \u00e7o\u011fu GitHub Actions \u00f6zelli\u011fini desteklese de, baz\u0131 \u00f6zellikler tam olarak desteklenmeyebilir veya farkl\u0131 davranabilir:<\/p>\n<ul>\n<li><strong><code>github.token<\/code>:<\/strong> GitHub API'sine eri\u015fim sa\u011flayan <code>github.token<\/code> yerel ortamda do\u011frudan \u00e7al\u0131\u015fmayabilir. Act, bu t\u00fcr durumlarda bir uyar\u0131 verebilir. GitHub API'si ile etkile\u015fime giren ad\u0131mlar\u0131 yerel olarak test etmek i\u00e7in genellikle manuel olarak bir Personal Access Token (PAT) sa\u011flaman\u0131z gerekebilir.<\/li>\n<li><strong>Self-hosted Runner'lar:<\/strong> Act, GitHub'\u0131n bar\u0131nd\u0131rd\u0131\u011f\u0131 runner'lar\u0131 taklit eder, ancak kendi kendine bar\u0131nd\u0131r\u0131lan (self-hosted) runner'lar\u0131n tam olarak ayn\u0131 ortam\u0131n\u0131 sa\u011flamaz.<\/li>\n<li><strong>Olay Tetikleyicileri:<\/strong> Act, <code>push<\/code>, <code>pull_request<\/code>, <code>workflow_dispatch<\/code> gibi yayg\u0131n olaylar\u0131 desteklerken, baz\u0131 daha karma\u015f\u0131k veya \u00f6zel tetikleyiciler (\u00f6rne\u011fin, <code>repository_dispatch<\/code>'in t\u00fcm detaylar\u0131) tam olarak sim\u00fcle edilemeyebilir.<\/li>\n<\/ul>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong> Act'in s\u0131n\u0131rlamalar\u0131n\u0131 bilmek ve kritik son testleri her zaman uzak GitHub Actions ortam\u0131nda da yapmak \u00f6nemlidir. Act, h\u0131zl\u0131 geri bildirim i\u00e7in harika bir ara\u00e7t\u0131r, ancak nihai do\u011frulama her zaman ger\u00e7ek CI\/CD ortam\u0131nda yap\u0131lmal\u0131d\u0131r.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Act, GitHub Actions ile \u00e7al\u0131\u015fan her geli\u015ftiricinin ara\u00e7 kutusunda bulunmas\u0131 gereken g\u00fc\u00e7l\u00fc bir yard\u0131mc\u0131d\u0131r. \u0130\u015f ak\u0131\u015flar\u0131n\u0131z\u0131 yerel olarak test etme yetene\u011fi, geli\u015ftirme s\u00fcrecinizi \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zland\u0131r\u0131r, hata ay\u0131klamay\u0131 kolayla\u015ft\u0131r\u0131r ve maliyetlerden tasarruf etmenizi sa\u011flar. Yava\u015f geri bildirim d\u00f6ng\u00fclerine son vererek, daha h\u0131zl\u0131 yineleme yapabilir ve daha verimli bir \u015fekilde \u00e7al\u0131\u015fabilirsiniz. Act'i geli\u015ftirme ak\u0131\u015f\u0131n\u0131za entegre ederek, hem bireysel verimlili\u011finizi hem de ekip olarak CI\/CD s\u00fcre\u00e7lerinizin kalitesini art\u0131rabilirsiniz. Unutmay\u0131n, Act bir sim\u00fclasyon arac\u0131d\u0131r ve nihai do\u011frulama her zaman ger\u00e7ek GitHub Actions ortam\u0131nda yap\u0131lmal\u0131d\u0131r, ancak geli\u015ftirme ve hata ay\u0131klama a\u015famas\u0131nda size paha bi\u00e7ilmez bir avantaj sa\u011flayacakt\u0131r.<\/p>\n<h2>SSS (S\u0131k Sorulan Sorular)<\/h2>\n<h3>Act t\u00fcm GitHub Actions \u00f6zelliklerini destekler mi?<\/h3>\n<p>Act, GitHub Actions'\u0131n \u00e7o\u011fu temel \u00f6zelli\u011fini (i\u015fler, ad\u0131mlar, eylemler, ortam de\u011fi\u015fkenleri, secret'lar, matrix stratejileri) destekler. Ancak, <code>github.token<\/code> ile GitHub API'si etkile\u015fimleri veya baz\u0131 \u00f6zel olay tetikleyicileri gibi belirli geli\u015fmi\u015f \u00f6zelliklerde s\u0131n\u0131rlamalar\u0131 olabilir. Genel olarak, \u00e7o\u011fu i\u015f ak\u0131\u015f\u0131 Act ile yerel olarak test edilebilir.<\/p>\n<h3>Act kullanmak i\u00e7in Docker bilmek \u015fart m\u0131?<\/h3>\n<p>Act'i kullanmak i\u00e7in Docker'\u0131n temel \u00e7al\u0131\u015fma prensiplerini bilmek faydal\u0131 olsa da, \u015fart de\u011fildir. Act, Docker'\u0131 arka planda otomatik olarak y\u00f6netir. Sadece Docker'\u0131n sisteminizde kurulu ve \u00e7al\u0131\u015f\u0131r durumda oldu\u011fundan emin olman\u0131z yeterlidir. Daha geli\u015fmi\u015f senaryolarda (\u00f6zel imajlar, sorun giderme) Docker bilgisi i\u015finize yarayacakt\u0131r.<\/p>\n<h3>Act ile secret'lar\u0131m\u0131 nas\u0131l g\u00fcvenli bir \u015fekilde y\u00f6netirim?<\/h3>\n<p>Secret'lar\u0131 y\u00f6netmek i\u00e7in <code>--secret<\/code> komut sat\u0131r\u0131 bayra\u011f\u0131n\u0131 veya <code>.secrets<\/code> dosyas\u0131n\u0131 kullanabilirsiniz. <code>.secrets<\/code> dosyas\u0131n\u0131 kullan\u0131rken, bu dosyan\u0131n hassas bilgiler i\u00e7erdi\u011fini ve asla git deponuza eklenmemesi gerekti\u011fini (<code>.gitignore<\/code>'a ekleyin) unutmay\u0131n. Bu y\u00f6ntemler, secret'lar\u0131n\u0131z\u0131 yerel ortamda g\u00fcvenli bir \u015fekilde kullanman\u0131z\u0131 sa\u011flar.<\/p>\n<h3>Act, CI\/CD s\u00fcrecimi tamamen yerel ortama ta\u015f\u0131r m\u0131?<\/h3>\n<p>Hay\u0131r, Act CI\/CD s\u00fcrecinizi tamamen yerel ortama ta\u015f\u0131maz. Act, i\u015f ak\u0131\u015flar\u0131n\u0131z\u0131 geli\u015ftirme ve hata ay\u0131klama a\u015famas\u0131nda h\u0131zland\u0131rmak i\u00e7in bir yerel test arac\u0131d\u0131r. Nihai entegrasyon ve da\u011f\u0131t\u0131m s\u00fcre\u00e7leri hala GitHub Actions'\u0131n uzak sunucular\u0131nda veya kendi kendine bar\u0131nd\u0131r\u0131lan runner'lar\u0131n\u0131zda ger\u00e7ekle\u015fmelidir. Act, bu s\u00fcre\u00e7lerin daha sorunsuz ve hatas\u0131z ilerlemesine yard\u0131mc\u0131 olur.<\/p>\n","protected":false},"excerpt":{"rendered":"GitHub Actions, modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinin vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015ftir. Otomatik testlerden da\u011f\u0131t\u0131ma kadar bir\u00e7ok g\u00f6re&#8230;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1401],"tags":[],"class_list":{"0":"post-37041","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-git","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Act ile GitHub Actions \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Yerelde Test Ederek H\u0131zland\u0131r\u0131n - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Act ile GitHub Actions \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Yerelde Test Ederek H\u0131zland\u0131r\u0131n\" \/>\n<meta property=\"og:description\" content=\"GitHub Actions, modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinin vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015ftir. Otomatik testlerden da\u011f\u0131t\u0131ma kadar bir\u00e7ok g\u00f6re...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-26T13:30:38+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Act ile GitHub Actions \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Yerelde Test Ederek H\u0131zland\u0131r\u0131n\",\"datePublished\":\"2025-12-26T13:30:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/\"},\"wordCount\":2490,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Git\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/\",\"name\":\"Act ile GitHub Actions \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Yerelde Test Ederek H\u0131zland\u0131r\u0131n - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-26T13:30:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Act ile GitHub Actions \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Yerelde Test Ederek H\u0131zland\u0131r\u0131n\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Act ile GitHub Actions \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Yerelde Test Ederek H\u0131zland\u0131r\u0131n - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/","og_locale":"tr_TR","og_type":"article","og_title":"Act ile GitHub Actions \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Yerelde Test Ederek H\u0131zland\u0131r\u0131n","og_description":"GitHub Actions, modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinin vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015ftir. Otomatik testlerden da\u011f\u0131t\u0131ma kadar bir\u00e7ok g\u00f6re...","og_url":"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-26T13:30:38+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"14 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Act ile GitHub Actions \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Yerelde Test Ederek H\u0131zland\u0131r\u0131n","datePublished":"2025-12-26T13:30:38+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/"},"wordCount":2490,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Git"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/","url":"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/","name":"Act ile GitHub Actions \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Yerelde Test Ederek H\u0131zland\u0131r\u0131n - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-26T13:30:38+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/act-ile-github-actions-is-akislarinizi-yerelde-test-ederek-hizlandirin\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Act ile GitHub Actions \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Yerelde Test Ederek H\u0131zland\u0131r\u0131n"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37041","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=37041"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37041\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37041"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37041"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37041"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}