{"id":39433,"date":"2026-02-21T12:30:42","date_gmt":"2026-02-21T09:30:42","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/"},"modified":"2026-02-21T12:30:42","modified_gmt":"2026-02-21T09:30:42","slug":"tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/","title":{"rendered":"Tek Bir YAML Dosyas\u0131yla GitHub Y\u0131ld\u0131z Monit\u00f6r\u00fc Olu\u015fturmak: S\u0131f\u0131r Ba\u011f\u0131ml\u0131l\u0131k, S\u0131f\u0131r Konfig\u00fcrasyon"},"content":{"rendered":"<h2>Tek Bir YAML Dosyas\u0131yla GitHub Y\u0131ld\u0131z Monit\u00f6r\u00fc Olu\u015fturmak: S\u0131f\u0131r Ba\u011f\u0131ml\u0131l\u0131k, S\u0131f\u0131r Konfig\u00fcrasyon<\/h2>\n<p>A\u00e7\u0131k kaynak d\u00fcnyas\u0131nda bir projenin ba\u015far\u0131s\u0131n\u0131 ve etkisini \u00f6l\u00e7menin en yayg\u0131n yollar\u0131ndan biri, GitHub y\u0131ld\u0131z say\u0131s\u0131d\u0131r. Y\u0131ld\u0131zlar, projenizin pop\u00fclaritesini, topluluk taraf\u0131ndan benimsenme oran\u0131n\u0131 ve genel sa\u011fl\u0131\u011f\u0131n\u0131 g\u00f6steren \u00f6nemli bir metriktir. Ancak bu metrikleri d\u00fczenli olarak takip etmek, hele ki birden fazla projeniz varsa, manuel olarak yorucu ve zaman al\u0131c\u0131 olabilir. \u0130\u015fte tam da bu noktada, tek bir YAML dosyas\u0131yla, s\u0131f\u0131r ba\u011f\u0131ml\u0131l\u0131k ve s\u0131f\u0131r ek konfig\u00fcrasyon gerektiren otomatik bir GitHub y\u0131ld\u0131z monit\u00f6r\u00fc devreye giriyor. Bu makalede, bu g\u00fc\u00e7l\u00fc ve basit \u00e7\u00f6z\u00fcm\u00fc ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ke\u015ffedece\u011fiz.<\/p>\n<h3>Neden GitHub Y\u0131ld\u0131zlar\u0131n\u0131 \u0130zlemeliyiz?<\/h3>\n<p>GitHub y\u0131ld\u0131zlar\u0131, sadece bir be\u011feni tu\u015fu olman\u0131n \u00f6tesinde, a\u00e7\u0131k kaynak projeleri i\u00e7in bir\u00e7ok anlam ta\u015f\u0131r. Bu metrikleri d\u00fczenli olarak takip etmek, projenizin gidi\u015fat\u0131 hakk\u0131nda de\u011ferli bilgiler edinmenizi sa\u011flar.<\/p>\n<h4>Proje Sa\u011fl\u0131\u011f\u0131 ve Pop\u00fclaritesi<\/h4>\n<p>Y\u0131ld\u0131z say\u0131s\u0131, projenizin topluluk i\u00e7indeki genel pop\u00fclaritesini ve benimsenme d\u00fczeyini g\u00f6sterir. S\u00fcrekli artan bir y\u0131ld\u0131z say\u0131s\u0131, projenizin ilgi \u00e7ekici ve faydal\u0131 oldu\u011funu i\u015faret ederken, dura\u011fan veya d\u00fc\u015fen bir say\u0131, potansiyel sorunlara veya ilgi kayb\u0131na i\u015faret edebilir. Bu veriler, projenizin genel sa\u011fl\u0131\u011f\u0131n\u0131 anlamak i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h4>Geli\u015ftirici Motivasyonu ve Geri Bildirim<\/h4>\n<p>Bir projeye y\u0131ld\u0131z vermek, geli\u015ftiricilere ve katk\u0131da bulunanlara do\u011frudan bir geri bildirimdir. Emeklerinin takdir edildi\u011fini g\u00f6rmek, motivasyonu art\u0131r\u0131r ve projenin geli\u015fimine daha fazla katk\u0131da bulunma iste\u011fini peki\u015ftirir. Y\u0131ld\u0131z say\u0131s\u0131ndaki art\u0131\u015flar\u0131 izlemek, ekibin moralini y\u00fcksek tutmak i\u00e7in somut bir g\u00f6sterge sunar.<\/p>\n<h4>Pazarlama ve Topluluk Etkile\u015fimi<\/h4>\n<p>Y\u00fcksek y\u0131ld\u0131z say\u0131s\u0131na sahip projeler, potansiyel kullan\u0131c\u0131lara ve katk\u0131da bulunanlara daha g\u00fcvenilir ve kaliteli g\u00f6r\u00fcn\u00fcr. Bu durum, projenizin daha geni\u015f kitlelere ula\u015fmas\u0131na yard\u0131mc\u0131 olur ve pazarlama \u00e7abalar\u0131n\u0131z\u0131 destekler. Ayr\u0131ca, y\u0131ld\u0131z say\u0131s\u0131ndaki \u00f6nemli d\u00f6n\u00fcm noktalar\u0131n\u0131 (\u00f6rne\u011fin, 1000 y\u0131ld\u0131za ula\u015fmak) kutlamak, toplulukla etkile\u015fim kurmak ve projenizi daha fazla tan\u0131tmak i\u00e7in harika f\u0131rsatlar sunar.<\/p>\n<h3>Geleneksel Y\u00f6ntemlere Veda: Neden YAML?<\/h3>\n<p>GitHub y\u0131ld\u0131zlar\u0131n\u0131 izlemek i\u00e7in geleneksel y\u00f6ntemler genellikle ek altyap\u0131, sunucu maliyetleri ve ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi gibi zorluklar\u0131 beraberinde getirir. Tek bir YAML dosyas\u0131yla otomasyon, bu sorunlar\u0131 ortadan kald\u0131rarak modern, verimli ve bak\u0131m\u0131 kolay bir \u00e7\u00f6z\u00fcm sunar.<\/p>\n<h4>Sunucu ve Altyap\u0131 Maliyetleri<\/h4>\n<p>Geleneksel olarak, bir monit\u00f6r kurmak i\u00e7in bir sunucuya (VPS, EC2 vb.) ihtiyac\u0131n\u0131z olurdu. Bu sunucuya bir betik kurar, zamanlay\u0131c\u0131 (cron job) ile \u00e7al\u0131\u015ft\u0131r\u0131r ve sonu\u00e7lar\u0131 bir yere kaydederdiniz. Bu yakla\u015f\u0131m, sunucu kiralama, bak\u0131m ve g\u00fcvenlik gibi ek maliyetler ve operasyonel y\u00fckler getirir. YAML tabanl\u0131 \u00e7\u00f6z\u00fcmler, bu altyap\u0131 ihtiyac\u0131n\u0131 ortadan kald\u0131rarak s\u0131f\u0131r sunucu maliyeti sunar.<\/p>\n<h4>Ba\u011f\u0131ml\u0131l\u0131k Cehennemi<\/h4>\n<p>Geleneksel betikler genellikle \u00e7e\u015fitli programlama dillerine (Python, Node.js vb.) ve k\u00fct\u00fcphanelerine (requests, beautifulsoup vb.) ba\u011f\u0131ml\u0131d\u0131r. Bu ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00f6netmek, g\u00fcncel tutmak ve farkl\u0131 ortamlarda \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak, &#8220;ba\u011f\u0131ml\u0131l\u0131k cehennemi&#8221; olarak bilinen bir soruna yol a\u00e7abilir. Tek bir YAML dosyas\u0131yla, genellikle platformun sa\u011flad\u0131\u011f\u0131 temel ara\u00e7lar\u0131 kullanarak bu ba\u011f\u0131ml\u0131l\u0131klar\u0131 minimuma indiririz.<\/p>\n<h4>GitHub Actions ile Tan\u0131\u015fma<\/h4>\n<p>Bu makalede odaklanaca\u011f\u0131m\u0131z &#8220;tek YAML dosyas\u0131&#8221; \u00e7\u00f6z\u00fcm\u00fc, GitHub&#8217;\u0131n kendi otomasyon platformu olan GitHub Actions \u00fczerine kuruludur. GitHub Actions, depolar\u0131n\u0131zda \u00e7e\u015fitli g\u00f6revleri otomatikle\u015ftirmek i\u00e7in kullanabilece\u011finiz g\u00fc\u00e7l\u00fc, esnek ve \u00fccretsiz (belirli limitler dahilinde) bir CI\/CD (S\u00fcrekli Entegrasyon\/S\u00fcrekli Da\u011f\u0131t\u0131m) arac\u0131d\u0131r. \u0130\u015f ak\u0131\u015flar\u0131n\u0131z\u0131 (workflows) YAML dosyalar\u0131yla tan\u0131mlar, bu sayede kodunuzla birlikte s\u00fcr\u00fcm kontrol\u00fc alt\u0131nda tutabilirsiniz. GitHub Actions, sunucusuz bir ortamda \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in yukar\u0131da bahsedilen altyap\u0131 ve ba\u011f\u0131ml\u0131l\u0131k sorunlar\u0131n\u0131n \u00e7o\u011funu \u00e7\u00f6zm\u00fc\u015f olur.<\/p>\n<h3>GitHub Actions ile Y\u0131ld\u0131z Monit\u00f6r\u00fcn\u00fcn Temelleri<\/h3>\n<p>GitHub Actions, projelerinizde otomasyonu sa\u011flamak i\u00e7in belirli bir yap\u0131 ve kavramlar kullan\u0131r. Y\u0131ld\u0131z monit\u00f6r\u00fcm\u00fcz\u00fc olu\u015fturmadan \u00f6nce bu temel kavramlar\u0131 anlamak \u00f6nemlidir.<\/p>\n<h4><code>.github\/workflows<\/code> Dizini<\/h4>\n<p>GitHub Actions i\u015f ak\u0131\u015flar\u0131, deponuzun k\u00f6k dizininde bulunan <code>.github\/workflows\/<\/code> dizini alt\u0131nda yer alan YAML dosyalar\u0131nda tan\u0131mlan\u0131r. Her bir YAML dosyas\u0131, bir i\u015f ak\u0131\u015f\u0131n\u0131 temsil eder. Bu dizin, GitHub&#8217;a bu dosyan\u0131n bir otomasyon beti\u011fi oldu\u011funu ve belirli olaylar veya zamanlamalar kar\u015f\u0131s\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131 gerekti\u011fini bildirir.<\/p>\n<h4>Workflow Tetikleyicileri (Cron Job)<\/h4>\n<p>Bir i\u015f ak\u0131\u015f\u0131n\u0131n ne zaman \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirleyen \u015fey, tetikleyicilerdir (<code>on:<\/code> anahtar\u0131). GitHub Actions, \u00e7e\u015fitli tetikleyicileri destekler: kod g\u00f6nderimi (push), \u00e7ekme iste\u011fi (pull_request), manuel \u00e7al\u0131\u015ft\u0131rma (workflow_dispatch) ve belirli bir zaman \u00e7izelgesinde \u00e7al\u0131\u015fma (schedule). Y\u0131ld\u0131z monit\u00f6r\u00fcm\u00fcz i\u00e7in, <code>schedule<\/code> tetikleyicisini kullanaca\u011f\u0131z. Bu, Unix tabanl\u0131 sistemlerdeki <code>cron<\/code> i\u015flerine benzer \u015fekilde, belirli aral\u0131klarla (\u00f6rne\u011fin, her g\u00fcn gece yar\u0131s\u0131) i\u015f ak\u0131\u015f\u0131m\u0131z\u0131 otomatik olarak \u00e7al\u0131\u015ft\u0131rmam\u0131z\u0131 sa\u011flar.<\/p>\n<h4>Ad\u0131mlar (Steps) ve \u0130\u015fler (Jobs)<\/h4>\n<p>Bir i\u015f ak\u0131\u015f\u0131, bir veya daha fazla &#8220;i\u015f&#8221; (<code>jobs<\/code>) i\u00e7erir. Her i\u015f, ba\u011f\u0131ms\u0131z bir sanal ortamda (runner) \u00e7al\u0131\u015f\u0131r ve bir dizi &#8220;ad\u0131m&#8221; (<code>steps<\/code>) i\u00e7erir. Ad\u0131mlar, i\u015fin i\u00e7inde s\u0131rayla y\u00fcr\u00fct\u00fclen komutlar\u0131 veya eylemleri temsil eder. \u00d6rne\u011fin, bir ad\u0131m depoyu klonlayabilir, bir di\u011feri bir komut \u00e7al\u0131\u015ft\u0131rabilir veya bir ba\u015fkas\u0131 bir GitHub Action&#8217;\u0131 kullanabilir. Y\u0131ld\u0131z monit\u00f6r\u00fcm\u00fczde, y\u0131ld\u0131z say\u0131s\u0131n\u0131 \u00e7eken, bir dosyay\u0131 g\u00fcncelleyen ve de\u011fi\u015fiklikleri geri g\u00f6nderen ad\u0131mlar\u0131m\u0131z olacak.<\/p>\n<h3>YAML Dosyas\u0131n\u0131 Ad\u0131m Ad\u0131m Olu\u015fturma<\/h3>\n<p>\u015eimdi s\u0131ra geldi, y\u0131ld\u0131z monit\u00f6r\u00fcm\u00fcz\u00fc tan\u0131mlayacak YAML dosyas\u0131n\u0131 olu\u015fturmaya. Bu dosya, projenizin <code>.github\/workflows\/<\/code> dizinine yerle\u015ftirilecek.<\/p>\n<h4>Workflow Tan\u0131m\u0131 ve \u0130simlendirme<\/h4>\n<p>Her i\u015f ak\u0131\u015f\u0131, <code>name<\/code> anahtar\u0131yla ba\u015flayan bir isimle tan\u0131mlan\u0131r. Bu isim, GitHub Actions aray\u00fcz\u00fcnde i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 kolayca tan\u0131man\u0131z\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-yaml\">name: GitHub Y\u0131ld\u0131z Monit\u00f6r\u00fc<\/pre>\n<p><\/code><\/p>\n<h4>Periyodik \u00c7al\u0131\u015fma Zamanlamas\u0131 (Schedule)<\/h4>\n<p>\u0130\u015f ak\u0131\u015f\u0131m\u0131z\u0131n otomatik olarak \u00e7al\u0131\u015fmas\u0131 i\u00e7in <code>on:<\/code> anahtar\u0131 alt\u0131nda <code>schedule<\/code> tetikleyicisini kullan\u0131r\u0131z. <code>cron<\/code> ifadesi, i\u015f ak\u0131\u015f\u0131n\u0131n ne zaman \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirler. <code>0 0 * * *<\/code> ifadesi, her g\u00fcn gece yar\u0131s\u0131 (UTC) \u00e7al\u0131\u015faca\u011f\u0131 anlam\u0131na gelir. Ayr\u0131ca, manuel \u00e7al\u0131\u015ft\u0131rma imkan\u0131 sunan <code>workflow_dispatch<\/code> tetikleyicisini de eklemek faydal\u0131 olacakt\u0131r.<\/p>\n<pre><code class=\"language-yaml\">on:\n  schedule:\n    - cron: '0 0 * * *' # Her g\u00fcn gece yar\u0131s\u0131 (UTC) \u00e7al\u0131\u015f\u0131r\n  workflow_dispatch: # GitHub aray\u00fcz\u00fcnden manuel \u00e7al\u0131\u015ft\u0131rma imkan\u0131<\/pre>\n<p><\/code><\/p>\n<h4>GitHub API ile Y\u0131ld\u0131z Say\u0131s\u0131n\u0131 \u00c7ekme<\/h4>\n<p>Y\u0131ld\u0131z say\u0131s\u0131n\u0131 almak i\u00e7in GitHub'\u0131n herkese a\u00e7\u0131k API'sini kullanaca\u011f\u0131z. <code>curl<\/code> komutu ile API'ye istek g\u00f6nderip, <code>jq<\/code> arac\u0131 ile JSON \u00e7\u0131kt\u0131s\u0131n\u0131 ayr\u0131\u015ft\u0131rarak <code>stargazers_count<\/code> alan\u0131n\u0131 \u00e7ekece\u011fiz. Bu i\u015flem, bir <code>run<\/code> ad\u0131m\u0131nda ger\u00e7ekle\u015ftirilir.<\/p>\n<pre><code class=\"language-yaml\">- name: GitHub API'den Y\u0131ld\u0131z Say\u0131s\u0131n\u0131 \u00c7ek\n            id: get_stars\n            run: |\n              REPO_PATH=\"${{ github.repository }}\" # \u00d6rn: octocat\/Spoon-Knife\n              STAR_COUNT=$(curl -s \"https:\/\/api.github.com\/repos\/$REPO_PATH\" | jq -r '.stargazers_count')\n              echo \"STAR_COUNT=$STAR_COUNT\" >> \"$GITHUB_OUTPUT\"\n              echo \"Mevcut y\u0131ld\u0131z say\u0131s\u0131: $STAR_COUNT\"<\/pre>\n<p><\/code><br \/>\nBurada <code>github.repository<\/code> de\u011fi\u015fkeni, otomatik olarak projenizin sahibini ve ad\u0131n\u0131 (<code>kullan\u0131c\u0131ad\u0131\/depo_ad\u0131<\/code>) sa\u011flar. <code>jq<\/code> arac\u0131, \u00e7o\u011fu GitHub Actions runner'\u0131nda varsay\u0131lan olarak y\u00fckl\u00fcd\u00fcr. \u00c7ekilen y\u0131ld\u0131z say\u0131s\u0131, bir sonraki ad\u0131mlarda kullanabilmek i\u00e7in <code>GITHUB_OUTPUT<\/code> arac\u0131l\u0131\u011f\u0131yla bir \u00e7\u0131kt\u0131 de\u011fi\u015fkeni olarak kaydedilir.<\/p>\n<h4>Veriyi Saklama veya Bildirme Stratejileri<\/h4>\n<p>\u00c7ekilen y\u0131ld\u0131z say\u0131s\u0131n\u0131 nas\u0131l kullanaca\u011f\u0131n\u0131z tamamen size ba\u011fl\u0131d\u0131r. En basit ve \"s\u0131f\u0131r konfig\u00fcrasyon\" yakla\u015f\u0131m\u0131, bu say\u0131y\u0131 deponuzdaki bir dosyaya (\u00f6rne\u011fin, <code>star_status.md<\/code> veya <code>README.md<\/code>'nin bir b\u00f6l\u00fcm\u00fc) yazmak ve bu de\u011fi\u015fikli\u011fi geri g\u00f6ndermektir. Bu sayede, deponuzu ziyaret eden herkes g\u00fcncel y\u0131ld\u0131z say\u0131s\u0131n\u0131 g\u00f6rebilir.<\/p>\n<pre><code class=\"language-yaml\">- name: Y\u0131ld\u0131z Durumu Dosyas\u0131n\u0131 Olu\u015ftur\/G\u00fcncelle\n            run: |\n              STAR_COUNT=\"${{ steps.get_stars.outputs.STAR_COUNT }}\"\n              echo \"# GitHub Y\u0131ld\u0131z Durumu\" > star_status.md\n              echo \"\" >> star_status.md\n              echo \"Bu proje \u015fu anda <strong>$STAR_COUNT<\/strong> y\u0131ld\u0131za sahip. \ud83c\udf1f\" >> star_status.md\n              echo \"\" >> star_status.md\n              echo \"Son g\u00fcncelleme: $(date '+%Y-%m-%d %H:%M:%S %Z')\" >> star_status.md\n              echo \"\" >> star_status.md\n              echo \"Bu dosya otomatik olarak GitHub Actions taraf\u0131ndan g\u00fcncellenmektedir.\" >> star_status.md<\/pre>\n<p><\/code><br \/>\nBu ad\u0131m, <code>star_status.md<\/code> ad\u0131nda yeni bir dosya olu\u015fturur veya mevcut dosyay\u0131 g\u00fcncelleyerek i\u00e7ine y\u0131ld\u0131z say\u0131s\u0131n\u0131 ve son g\u00fcncelleme zaman\u0131n\u0131 yazar.<\/p>\n<h3>Pratik Uygulama: \u00d6rnek Bir YAML Dosyas\u0131<\/h3>\n<p>Yukar\u0131daki ad\u0131mlar\u0131 birle\u015ftirerek tam bir GitHub Actions i\u015f ak\u0131\u015f\u0131 YAML dosyas\u0131 olu\u015ftural\u0131m. Bu dosyay\u0131 deponuzun <code>.github\/workflows\/star-monitor.yml<\/code> yoluna kaydedebilirsiniz.<\/p>\n<pre><code class=\"language-yaml\">name: GitHub Y\u0131ld\u0131z Monit\u00f6r\u00fc\n\non:\n  schedule:\n    - cron: '0 0 * * *' # Her g\u00fcn gece yar\u0131s\u0131 (UTC) \u00e7al\u0131\u015f\u0131r\n  workflow_dispatch: # GitHub aray\u00fcz\u00fcnden manuel \u00e7al\u0131\u015ft\u0131rma imkan\u0131\n\njobs:\n  monitor-stars:\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Depoyu Klonla\n        uses: actions\/checkout@v3\n\n      - name: GitHub API'den Y\u0131ld\u0131z Say\u0131s\u0131n\u0131 \u00c7ek\n        id: get_stars\n        run: |\n          # Mevcut deponun sahibini ve ad\u0131n\u0131 al (\u00f6rn: octocat\/Spoon-Knife)\n          REPO_PATH=\"${{ github.repository }}\" \n          \n          # GitHub API'den y\u0131ld\u0131z say\u0131s\u0131n\u0131 \u00e7ek ve jq ile ayr\u0131\u015ft\u0131r\n          STAR_COUNT=$(curl -s \"https:\/\/api.github.com\/repos\/$REPO_PATH\" | jq -r '.stargazers_count')\n          \n          # Y\u0131ld\u0131z say\u0131s\u0131n\u0131 sonraki ad\u0131mlarda kullanmak \u00fczere \u00e7\u0131kt\u0131 olarak kaydet\n          echo \"STAR_COUNT=$STAR_COUNT\" >> \"$GITHUB_OUTPUT\"\n          echo \"Mevcut y\u0131ld\u0131z say\u0131s\u0131: $STAR_COUNT\"\n\n      - name: Y\u0131ld\u0131z Durumu Dosyas\u0131n\u0131 Olu\u015ftur\/G\u00fcncelle\n        run: |\n          # \u00d6nceki ad\u0131mdan y\u0131ld\u0131z say\u0131s\u0131n\u0131 al\n          STAR_COUNT=\"${{ steps.get_stars.outputs.STAR_COUNT }}\"\n          \n          # star_status.md dosyas\u0131n\u0131n i\u00e7eri\u011fini olu\u015ftur\n          echo \"# GitHub Y\u0131ld\u0131z Durumu\" > star_status.md\n          echo \"\" >> star_status.md\n          echo \"Bu proje \u015fu anda <strong>$STAR_COUNT<\/strong> y\u0131ld\u0131za sahip. \ud83c\udf1f\" >> star_status.md\n          echo \"\" >> star_status.md\n          echo \"Son g\u00fcncelleme: $(date '+%Y-%m-%d %H:%M:%S %Z')\" >> star_status.md\n          echo \"\" >> star_status.md\n          echo \"Bu dosya otomatik olarak GitHub Actions taraf\u0131ndan g\u00fcncellenmektedir.\" >> star_status.md\n\n      - name: De\u011fi\u015fiklikleri Kaydet ve G\u00f6nder\n        uses: stefanzweifel\/git-auto-commit-action@v4\n        with:\n          commit_message: 'Otomatik: GitHub y\u0131ld\u0131z say\u0131s\u0131 g\u00fcncellendi'\n          branch: ${{ github.ref_name }} # Mevcut dal\u0131 kullan (genellikle main veya master)\n          file_pattern: 'star_status.md' # Sadece bu dosyay\u0131 commit et<\/pre>\n<p><\/code><\/p>\n<h4>Kodu A\u00e7\u0131klama<\/h4>\n<ul>\n<li><code>name<\/code>: \u0130\u015f ak\u0131\u015f\u0131n\u0131n ad\u0131. GitHub Actions panelinde bu isimle g\u00f6r\u00fcn\u00fcr.<\/li>\n<li><code>on<\/code>: \u0130\u015f ak\u0131\u015f\u0131n\u0131n ne zaman tetiklenece\u011fini belirtir.\n<ul>\n<li><code>schedule<\/code>: <code>cron<\/code> format\u0131nda bir zamanlama belirtir. <code>'0 0 * * *'<\/code> her g\u00fcn gece yar\u0131s\u0131 (UTC) \u00e7al\u0131\u015f\u0131r.<\/li>\n<li><code>workflow_dispatch<\/code>: GitHub aray\u00fcz\u00fcnden manuel olarak tetikleme imkan\u0131 sunar.<\/li>\n<\/ul>\n<\/li>\n<li><code>jobs<\/code>: \u0130\u015f ak\u0131\u015f\u0131n\u0131n \u00e7al\u0131\u015ft\u0131raca\u011f\u0131 i\u015fleri tan\u0131mlar. Burada tek bir i\u015fimiz var: <code>monitor-stars<\/code>.\n<ul>\n<li><code>runs-on: ubuntu-latest<\/code>: \u0130\u015fin \u00e7al\u0131\u015faca\u011f\u0131 sanal ortam\u0131 belirtir. <code>ubuntu-latest<\/code> genel ama\u00e7l\u0131 Linux ortam\u0131d\u0131r.<\/li>\n<li><code>steps<\/code>: \u0130\u015fin i\u00e7inde s\u0131rayla \u00e7al\u0131\u015facak ad\u0131mlar\u0131 listeler.\n<ul>\n<li><code>Depoyu Klonla<\/code>: <code>actions\/checkout@v3<\/code> eylemi, i\u015f ak\u0131\u015f\u0131n\u0131n deponun koduna eri\u015febilmesi i\u00e7in depoyu sanal ortama klonlar.<\/li>\n<li><code>GitHub API'den Y\u0131ld\u0131z Say\u0131s\u0131n\u0131 \u00c7ek<\/code>:\n<ul>\n<li><code>REPO_PATH<\/code> de\u011fi\u015fkeni, GitHub taraf\u0131ndan sa\u011flanan <code>github.repository<\/code> ba\u011flam de\u011fi\u015fkeninden deponun tam ad\u0131n\u0131 (\u00f6rn. <code>kullan\u0131c\u0131ad\u0131\/depo_ad\u0131<\/code>) al\u0131r.<\/li>\n<li><code>curl -s \"https:\/\/api.github.com\/repos\/$REPO_PATH\"<\/code> komutu, GitHub API'sine HTTP GET iste\u011fi g\u00f6nderir. <code>-s<\/code> sessiz mod i\u00e7indir.<\/li>\n<li><code>jq -r '.stargazers_count'<\/code> komutu, <code>curl<\/code>'dan gelen JSON \u00e7\u0131kt\u0131s\u0131n\u0131 ayr\u0131\u015ft\u0131r\u0131r ve <code>stargazers_count<\/code> alan\u0131n\u0131n de\u011ferini ham (raw) metin olarak d\u00f6nd\u00fcr\u00fcr.<\/li>\n<li><code>echo \"STAR_COUNT=$STAR_COUNT\" >> \"$GITHUB_OUTPUT\"<\/code> komutu, \u00e7ekilen y\u0131ld\u0131z say\u0131s\u0131n\u0131 <code>get_stars<\/code> ad\u0131m\u0131n\u0131n bir \u00e7\u0131kt\u0131s\u0131 olarak kaydeder. Bu, sonraki ad\u0131mlar\u0131n bu de\u011fere eri\u015fmesini sa\u011flar.<\/li>\n<\/ul>\n<\/li>\n<li><code>Y\u0131ld\u0131z Durumu Dosyas\u0131n\u0131 Olu\u015ftur\/G\u00fcncelle<\/code>:\n<ul>\n<li><code>STAR_COUNT=\"${{ steps.get_stars.outputs.STAR_COUNT }}\"<\/code> ifadesiyle bir \u00f6nceki ad\u0131mdan y\u0131ld\u0131z say\u0131s\u0131 al\u0131n\u0131r.<\/li>\n<li><code>echo<\/code> komutlar\u0131 kullan\u0131larak <code>star_status.md<\/code> ad\u0131nda yeni bir dosya olu\u015fturulur veya mevcut dosyan\u0131n i\u00e7eri\u011fi \u00fczerine yaz\u0131l\u0131r. Bu dosya, y\u0131ld\u0131z say\u0131s\u0131n\u0131 ve son g\u00fcncelleme zaman\u0131n\u0131 i\u00e7erir.<\/li>\n<\/ul>\n<\/li>\n<li><code>De\u011fi\u015fiklikleri Kaydet ve G\u00f6nder<\/code>:\n<ul>\n<li><code>stefanzweifel\/git-auto-commit-action@v4<\/code> adl\u0131 \u00fc\u00e7\u00fcnc\u00fc taraf bir eylem kullan\u0131l\u0131r. Bu eylem, deponuzdaki de\u011fi\u015fiklikleri otomatik olarak commit eder ve geri g\u00f6nderir.<\/li>\n<li><code>commit_message<\/code>: Yap\u0131lacak commit'in mesaj\u0131.<\/li>\n<li><code>branch<\/code>: De\u011fi\u015fikliklerin hangi dala g\u00f6nderilece\u011fini belirtir. <code>github.ref_name<\/code> mevcut dal\u0131 otomatik olarak kullan\u0131r (genellikle <code>main<\/code> veya <code>master<\/code>).<\/li>\n<li><code>file_pattern<\/code>: Sadece <code>star_status.md<\/code> dosyas\u0131ndaki de\u011fi\u015fikliklerin commit edilmesini sa\u011flar.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>Sonu\u00e7lar\u0131n G\u00f6rselle\u015ftirilmesi<\/h4>\n<p>\u0130\u015f ak\u0131\u015f\u0131 ba\u015far\u0131yla \u00e7al\u0131\u015ft\u0131ktan sonra, deponuzda <code>star_status.md<\/code> ad\u0131nda yeni bir dosya g\u00f6receksiniz. Bu dosya, projenizin g\u00fcncel y\u0131ld\u0131z say\u0131s\u0131n\u0131 ve en son ne zaman g\u00fcncellendi\u011fini i\u00e7erecektir.<br \/>\n\u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-markdown\"># GitHub Y\u0131ld\u0131z Durumu\n\nBu proje \u015fu anda <strong>1234<\/strong> y\u0131ld\u0131za sahip. \ud83c\udf1f\n\nSon g\u00fcncelleme: 2023-10-27 10:30:00 UTC\n\nBu dosya otomatik olarak GitHub Actions taraf\u0131ndan g\u00fcncellenmektedir.<\/pre>\n<p><\/code><br \/>\nDilerseniz, <code>README.md<\/code> dosyan\u0131zda bu <code>star_status.md<\/code> dosyas\u0131n\u0131 bir <code>iframe<\/code> veya benzeri bir y\u00f6ntemle g\u00f6sterebilir, ya da <code>README.md<\/code> dosyas\u0131n\u0131n belirli bir b\u00f6l\u00fcm\u00fcn\u00fc g\u00fcncelleyecek daha karma\u015f\u0131k bir betik yazabilirsiniz. Ancak \"s\u0131f\u0131r konfig\u00fcrasyon\" felsefesiyle <code>star_status.md<\/code> olu\u015fturmak en basit yakla\u015f\u0131md\u0131r.<\/p>\n<h3>Avantajlar, S\u0131n\u0131rlamalar ve Geli\u015ftirme F\u0131rsatlar\u0131<\/h3>\n<p>Bu YAML tabanl\u0131 GitHub y\u0131ld\u0131z monit\u00f6r\u00fc \u00e7\u00f6z\u00fcm\u00fc, bir\u00e7ok avantaj sunarken, baz\u0131 s\u0131n\u0131rlamalar\u0131 ve geli\u015ftirme potansiyellerini de bar\u0131nd\u0131r\u0131r.<\/p>\n<h4>S\u0131f\u0131r Maliyet ve Kolay Bak\u0131m<\/h4>\n<p>Bu \u00e7\u00f6z\u00fcm\u00fcn en b\u00fcy\u00fck avantaj\u0131, GitHub Actions'\u0131n \u00fccretsiz katman\u0131 sayesinde neredeyse s\u0131f\u0131r maliyetle \u00e7al\u0131\u015fmas\u0131d\u0131r. Ayr\u0131ca, t\u00fcm konfig\u00fcrasyon tek bir YAML dosyas\u0131nda oldu\u011fu i\u00e7in bak\u0131m\u0131 son derece kolayd\u0131r. Herhangi bir sunucu veya ek ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi gerektirmez. Dosya deponuzla birlikte s\u00fcr\u00fcm kontrol\u00fcnde oldu\u011fu i\u00e7in de\u011fi\u015fiklikleri takip etmek ve geri almak da kolayd\u0131r.<\/p>\n<h4>\u00d6\u011frenme E\u011frisi ve Debugging<\/h4>\n<p>GitHub Actions'a yeni ba\u015flayanlar i\u00e7in YAML s\u00f6zdizimi ve i\u015f ak\u0131\u015f\u0131 mant\u0131\u011f\u0131 ba\u015flang\u0131\u00e7ta biraz \u00f6\u011frenme e\u011frisi gerektirebilir. \u0130\u015f ak\u0131\u015f\u0131nda bir hata olu\u015ftu\u011funda, GitHub Actions aray\u00fcz\u00fcndeki g\u00fcnl\u00fckleri (logs) inceleyerek sorunlar\u0131 tespit etmek gerekebilir. Ancak platformun sa\u011flad\u0131\u011f\u0131 detayl\u0131 g\u00fcnl\u00fckler, hata ay\u0131klama s\u00fcrecini olduk\u00e7a kolayla\u015ft\u0131r\u0131r.<\/p>\n<h4>Geli\u015fmi\u015f Bildirimler ve Veri Saklama<\/h4>\n<p>Mevcut \u00e7\u00f6z\u00fcm, y\u0131ld\u0131z say\u0131s\u0131n\u0131 deponuzdaki bir dosyaya kaydeder. Ancak daha geli\u015fmi\u015f senaryolar i\u00e7in bu veriyi farkl\u0131 yerlere g\u00f6nderebilirsiniz:<\/p>\n<ul>\n<li><strong>Bildirimler:<\/strong> Slack, Discord, E-posta veya di\u011fer ileti\u015fim platformlar\u0131na bildirim g\u00f6ndermek i\u00e7in ek ad\u0131mlar ekleyebilirsiniz. \u00d6rne\u011fin, y\u0131ld\u0131z say\u0131s\u0131nda \u00f6nemli bir art\u0131\u015f oldu\u011funda bir mesaj g\u00f6nderebilirsiniz.<\/li>\n<li><strong>Veritaban\u0131 Entegrasyonu:<\/strong> Y\u0131ld\u0131z say\u0131s\u0131n\u0131 bir zaman serisi veritaban\u0131na (\u00f6rn. InfluxDB) veya basit bir CSV dosyas\u0131na kaydederek ge\u00e7mi\u015f verileri tutabilir ve daha sonra grafikler olu\u015fturmak i\u00e7in kullanabilirsiniz.<\/li>\n<li><strong>Grafik Olu\u015fturma:<\/strong> \u00c7ekilen verilerle basit bir grafik olu\u015fturup bunu deponuza SVG olarak commit edebilir, b\u00f6ylece <code>README.md<\/code> dosyan\u0131zda dinamik bir grafik g\u00f6sterebilirsiniz.<\/li>\n<\/ul>\n<p>Bu geli\u015ftirmeler, \"s\u0131f\u0131r ba\u011f\u0131ml\u0131l\u0131k\" prensibinden biraz uzakla\u015fabilir, ancak projenizin ihtiya\u00e7lar\u0131na g\u00f6re esneklik sunar.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p>Bu t\u00fcr bir otomasyon \u00e7\u00f6z\u00fcm\u00fcyle ilgili akla gelebilecek baz\u0131 sorular\u0131 yan\u0131tlayal\u0131m.<\/p>\n<h4>Bu y\u00f6ntem ne kadar g\u00fcvenli?<\/h4>\n<p>GitHub Actions, deponuzun ba\u011flam\u0131nda \u00e7al\u0131\u015f\u0131r ve varsay\u0131lan olarak depoya yazma iznine sahiptir (e\u011fer <code>contents: write<\/code> izni verilmi\u015fse veya <code>git-auto-commit-action<\/code> gibi eylemler kullan\u0131l\u0131yorsa). Bu, beti\u011fin deponuzda de\u011fi\u015fiklik yapabilece\u011fi anlam\u0131na gelir. Ancak, kulland\u0131\u011f\u0131n\u0131z eylemler (\u00f6rne\u011fin <code>checkout<\/code>, <code>git-auto-commit-action<\/code>) GitHub taraf\u0131ndan do\u011frulanm\u0131\u015f ve geni\u015f \u00e7apta kullan\u0131lan eylemlerdir. Kendi beti\u011finizde hassas bilgiler kullanmad\u0131\u011f\u0131n\u0131z s\u00fcrece g\u00fcvenlik riski d\u00fc\u015f\u00fckt\u00fcr. GitHub API'si herkese a\u00e7\u0131k oldu\u011fu i\u00e7in herhangi bir ki\u015fisel eri\u015fim belirteci (PAT) gerektirmez.<\/p>\n<h4>Birden fazla repo i\u00e7in kullan\u0131labilir mi?<\/h4>\n<p>Evet, her depo i\u00e7in ayr\u0131 ayr\u0131 <code>.github\/workflows\/star-monitor.yml<\/code> dosyas\u0131n\u0131 olu\u015fturarak birden fazla repoda y\u0131ld\u0131z monit\u00f6r\u00fc kurabilirsiniz. Her dosya kendi deposunda ba\u011f\u0131ms\u0131z olarak \u00e7al\u0131\u015facakt\u0131r. E\u011fer t\u00fcm repolar\u0131n\u0131z i\u00e7in merkezi bir monit\u00f6r istiyorsan\u0131z, bu \u00e7\u00f6z\u00fcm yeterli olmayabilir ve harici bir sunucu veya daha karma\u015f\u0131k bir GitHub Actions i\u015f ak\u0131\u015f\u0131 (farkl\u0131 repolar\u0131n API'lerini sorgulayan) gerektirebilir.<\/p>\n<h4>Ba\u015fka metrikler de izleyebilir miyim?<\/h4>\n<p>Kesinlikle! GitHub API'si, y\u0131ld\u0131z say\u0131s\u0131n\u0131n yan\u0131 s\u0131ra \u00e7atallanma (fork) say\u0131s\u0131, izleyici (watcher) say\u0131s\u0131, a\u00e7\u0131k sorunlar (issues), \u00e7ekme istekleri (pull requests) gibi bir\u00e7ok ba\u015fka metrik sunar. <code>curl<\/code> ve <code>jq<\/code> komutlar\u0131n\u0131 de\u011fi\u015ftirerek istedi\u011finiz di\u011fer metrikleri \u00e7ekebilir ve ayn\u0131 y\u00f6ntemle deponuza kaydedebilirsiniz.<\/p>\n<h4>Veriyi bir veritaban\u0131na kaydedebilir miyim?<\/h4>\n<p>Evet, GitHub Actions i\u00e7inde \u00e7al\u0131\u015fan bir ad\u0131mda harici bir veritaban\u0131na (\u00f6rne\u011fin, bir bulut veritaban\u0131 hizmeti veya kendi bar\u0131nd\u0131rd\u0131\u011f\u0131n\u0131z bir veritaban\u0131) ba\u011flan\u0131p veriyi kaydedebilirsiniz. Bu, genellikle ek ba\u011f\u0131ml\u0131l\u0131klar (\u00f6rne\u011fin, veritaban\u0131 s\u00fcr\u00fcc\u00fcleri) ve konfig\u00fcrasyon (veritaban\u0131 ba\u011flant\u0131 bilgileri) gerektirecektir. Bu bilgileri GitHub Actions s\u0131rlar\u0131 (secrets) olarak saklayarak g\u00fcvenli\u011fi sa\u011flayabilirsiniz. Bu, \"s\u0131f\u0131r ba\u011f\u0131ml\u0131l\u0131k\" ve \"s\u0131f\u0131r konfig\u00fcrasyon\" felsefesinden biraz uzakla\u015fsa da, daha g\u00fc\u00e7l\u00fc veri analizi ve g\u00f6rselle\u015ftirme imkanlar\u0131 sunar.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>GitHub y\u0131ld\u0131z monit\u00f6r\u00fc olu\u015fturmak, projenizin geli\u015fimini takip etmek ve toplulukla etkile\u015fim kurmak i\u00e7in de\u011ferli bir ad\u0131md\u0131r. Geleneksel y\u00f6ntemlerin aksine, GitHub Actions'\u0131n g\u00fcc\u00fcn\u00fc kullanarak tek bir YAML dosyas\u0131yla, s\u0131f\u0131r ba\u011f\u0131ml\u0131l\u0131k ve s\u0131f\u0131r ek konfig\u00fcrasyonla bu otomasyonu kurmak art\u0131k \u00e7ok<\/p>\n","protected":false},"excerpt":{"rendered":"Tek Bir YAML Dosyas\u0131yla GitHub Y\u0131ld\u0131z Monit\u00f6r\u00fc Olu\u015fturmak: S\u0131f\u0131r Ba\u011f\u0131ml\u0131l\u0131k, S\u0131f\u0131r Konfig\u00fcrasyon\nA\u00e7\u0131k kaynak d\u00fcnyas\u0131nda bir projenin ba\u015f&#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-39433","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>Tek Bir YAML Dosyas\u0131yla GitHub Y\u0131ld\u0131z Monit\u00f6r\u00fc Olu\u015fturmak: S\u0131f\u0131r Ba\u011f\u0131ml\u0131l\u0131k, S\u0131f\u0131r Konfig\u00fcrasyon - 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\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tek Bir YAML Dosyas\u0131yla GitHub Y\u0131ld\u0131z Monit\u00f6r\u00fc Olu\u015fturmak: S\u0131f\u0131r Ba\u011f\u0131ml\u0131l\u0131k, S\u0131f\u0131r Konfig\u00fcrasyon\" \/>\n<meta property=\"og:description\" content=\"Tek Bir YAML Dosyas\u0131yla GitHub Y\u0131ld\u0131z Monit\u00f6r\u00fc Olu\u015fturmak: S\u0131f\u0131r Ba\u011f\u0131ml\u0131l\u0131k, S\u0131f\u0131r Konfig\u00fcrasyon A\u00e7\u0131k kaynak d\u00fcnyas\u0131nda bir projenin ba\u015f...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-21T09:30:42+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=\"16 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Tek Bir YAML Dosyas\u0131yla GitHub Y\u0131ld\u0131z Monit\u00f6r\u00fc Olu\u015fturmak: S\u0131f\u0131r Ba\u011f\u0131ml\u0131l\u0131k, S\u0131f\u0131r Konfig\u00fcrasyon\",\"datePublished\":\"2026-02-21T09:30:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/\"},\"wordCount\":2592,\"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\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/\",\"name\":\"Tek Bir YAML Dosyas\u0131yla GitHub Y\u0131ld\u0131z Monit\u00f6r\u00fc Olu\u015fturmak: S\u0131f\u0131r Ba\u011f\u0131ml\u0131l\u0131k, S\u0131f\u0131r Konfig\u00fcrasyon - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-02-21T09:30:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tek Bir YAML Dosyas\u0131yla GitHub Y\u0131ld\u0131z Monit\u00f6r\u00fc Olu\u015fturmak: S\u0131f\u0131r Ba\u011f\u0131ml\u0131l\u0131k, S\u0131f\u0131r Konfig\u00fcrasyon\"}]},{\"@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":"Tek Bir YAML Dosyas\u0131yla GitHub Y\u0131ld\u0131z Monit\u00f6r\u00fc Olu\u015fturmak: S\u0131f\u0131r Ba\u011f\u0131ml\u0131l\u0131k, S\u0131f\u0131r Konfig\u00fcrasyon - 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\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/","og_locale":"tr_TR","og_type":"article","og_title":"Tek Bir YAML Dosyas\u0131yla GitHub Y\u0131ld\u0131z Monit\u00f6r\u00fc Olu\u015fturmak: S\u0131f\u0131r Ba\u011f\u0131ml\u0131l\u0131k, S\u0131f\u0131r Konfig\u00fcrasyon","og_description":"Tek Bir YAML Dosyas\u0131yla GitHub Y\u0131ld\u0131z Monit\u00f6r\u00fc Olu\u015fturmak: S\u0131f\u0131r Ba\u011f\u0131ml\u0131l\u0131k, S\u0131f\u0131r Konfig\u00fcrasyon A\u00e7\u0131k kaynak d\u00fcnyas\u0131nda bir projenin ba\u015f...","og_url":"https:\/\/fatihsoysal.com\/blog\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-02-21T09:30:42+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"16 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Tek Bir YAML Dosyas\u0131yla GitHub Y\u0131ld\u0131z Monit\u00f6r\u00fc Olu\u015fturmak: S\u0131f\u0131r Ba\u011f\u0131ml\u0131l\u0131k, S\u0131f\u0131r Konfig\u00fcrasyon","datePublished":"2026-02-21T09:30:42+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/"},"wordCount":2592,"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\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/","url":"https:\/\/fatihsoysal.com\/blog\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/","name":"Tek Bir YAML Dosyas\u0131yla GitHub Y\u0131ld\u0131z Monit\u00f6r\u00fc Olu\u015fturmak: S\u0131f\u0131r Ba\u011f\u0131ml\u0131l\u0131k, S\u0131f\u0131r Konfig\u00fcrasyon - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-02-21T09:30:42+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/tek-bir-yaml-dosyasiyla-github-yildiz-monitoru-olusturmak-sifir-bagimlilik-sifir-konfigurasyon\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tek Bir YAML Dosyas\u0131yla GitHub Y\u0131ld\u0131z Monit\u00f6r\u00fc Olu\u015fturmak: S\u0131f\u0131r Ba\u011f\u0131ml\u0131l\u0131k, S\u0131f\u0131r Konfig\u00fcrasyon"}]},{"@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\/39433","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=39433"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/39433\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=39433"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=39433"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=39433"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}