{"id":28759,"date":"2025-09-02T22:30:24","date_gmt":"2025-09-02T19:30:24","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/"},"modified":"2025-09-02T22:30:24","modified_gmt":"2025-09-02T19:30:24","slug":"github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/","title":{"rendered":"GitHub Actions, Docker ve Terraform ile CI\/CD Pipeline Olu\u015fturma"},"content":{"rendered":"<p>GitHub Actions, Docker ve Terraform ile CI\/CD Pipeline Olu\u015fturma<\/p>\n<p>Modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde, s\u00fcrekli entegrasyon ve s\u00fcrekli da\u011f\u0131t\u0131m (CI\/CD) pipeline&#8217;lar\u0131 olmazsa olmazd\u0131r. Bu pipeline&#8217;lar, kod de\u011fi\u015fikliklerinin h\u0131zl\u0131, g\u00fcvenilir ve otomatik olarak test edilmesini, da\u011f\u0131t\u0131lmas\u0131n\u0131 ve hatta altyap\u0131n\u0131n y\u00f6netilmesini sa\u011flar. Bu makalede, GitHub Actions, Docker ve Terraform kullanarak bir CI\/CD pipeline&#8217;\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z.  Bu s\u00fcre\u00e7te kar\u015f\u0131la\u015fabilece\u011finiz zorluklar\u0131 ve \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 ele alarak,  ba\u015ftan sona bir CI\/CD yolculu\u011funa \u00e7\u0131kaca\u011f\u0131z.  Hem yeni ba\u015flayanlar hem de deneyimli geli\u015ftiriciler i\u00e7in faydal\u0131 bilgiler bulacaks\u0131n\u0131z.<\/p>\n<h2>Temel Kavramlar: CI\/CD, GitHub Actions, Docker ve Terraform Nedir?<\/h2>\n<p>\u00d6ncelikle,  CI\/CD pipeline&#8217;\u0131n\u0131n temel bile\u015fenlerini ve kullanaca\u011f\u0131m\u0131z ara\u00e7lar\u0131 anlamak \u00f6nemlidir.  S\u00fcrekli entegrasyon (CI), geli\u015ftiricilerin kodlar\u0131n\u0131 s\u0131k s\u0131k bir merkezi depoda birle\u015ftirme s\u00fcrecini otomatikle\u015ftirir. Bu, erken hata tespiti ve entegre edilebilirli\u011fin sa\u011flanmas\u0131na yard\u0131mc\u0131 olur. S\u00fcrekli da\u011f\u0131t\u0131m (CD) ise, test edilen kodun otomatik olarak \u00fcretim ortam\u0131na da\u011f\u0131t\u0131lmas\u0131n\u0131 i\u00e7erir.  Bu s\u00fcre\u00e7, manuel m\u00fcdahaleyi en aza indirerek daha h\u0131zl\u0131 ve daha g\u00fcvenilir da\u011f\u0131t\u0131mlar sa\u011flar.<\/p>\n<p><strong>GitHub Actions<\/strong>, GitHub&#8217;\u0131n sunucu taraf\u0131nda kodunuzu otomatikle\u015ftirmenizi sa\u011flayan bir CI\/CD \u00e7\u00f6z\u00fcm\u00fcd\u00fcr.  Workflow&#8217;ler (i\u015f ak\u0131\u015flar\u0131) arac\u0131l\u0131\u011f\u0131yla, kod de\u011fi\u015fikliklerine yan\u0131t olarak \u00e7e\u015fitli g\u00f6revleri (\u00f6rne\u011fin, test etme, derleme, da\u011f\u0131t\u0131m) otomatikle\u015ftirebilirsiniz.  <strong>Docker<\/strong>, uygulamalar\u0131n\u0131z\u0131 ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 i\u00e7eren kapsay\u0131c\u0131lar olu\u015fturmak i\u00e7in kullan\u0131lan bir platformdur.  Docker, tutarl\u0131 bir geli\u015ftirme ve da\u011f\u0131t\u0131m ortam\u0131 sa\u011flar.  <strong>Terraform<\/strong> ise altyap\u0131n\u0131z\u0131 kodla y\u00f6netmenizi sa\u011flayan bir Infrastructure-as-Code (IaC) arac\u0131d\u0131r.  Bulut altyap\u0131s\u0131 kaynaklar\u0131n\u0131z\u0131 (sanal makineler, a\u011flar, veri tabanlar\u0131, vs.) tan\u0131mlayan kod yazarak, bu kaynaklar\u0131n olu\u015fturulmas\u0131n\u0131, g\u00fcncellenmesini ve silinmesini otomatikle\u015ftirebilirsiniz.<\/p>\n<h2>GitHub Actions ile Bir CI\/CD Pipeline&#8217;\u0131 Nas\u0131l Kurulur?<\/h2>\n<p>\u015eimdi, GitHub Actions kullanarak basit bir CI\/CD pipeline&#8217;\u0131 olu\u015fturma ad\u0131mlar\u0131n\u0131 inceleyelim.  Bu \u00f6rnekte, bir Node.js uygulamas\u0131 i\u00e7in bir pipeline olu\u015fturaca\u011f\u0131z.  \u00d6ncelikle, GitHub deponuza bir <code>.github\/workflows<\/code> dizini olu\u015fturun ve i\u00e7ine <code>main.yml<\/code> adl\u0131 bir dosya ekleyin.  Bu dosya, pipeline&#8217;\u0131n\u0131z\u0131n tan\u0131m\u0131n\u0131 i\u00e7erecektir.<\/p>\n<pre><code class=\"language-yaml\">name: CI\/CD Pipeline\n\non:\n  push:\n    branches:\n      - main\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\/checkout@v3\n      - name: Install Node.js\n        uses: actions\/setup-node@v3\n        with:\n          node-version: 16\n      - run: npm install\n      - run: npm test\n      - name: Build Docker Image\n        run: docker build -t my-app .\n      - name: Login to Docker Hub\n        run: echo \"${{ secrets.DOCKER_PASSWORD }}\" | docker login -u \"${{ secrets.DOCKER_USERNAME }}\" --password-stdin\n      - name: Push Docker Image\n        run: docker push ${{ secrets.DOCKER_USERNAME }}\/my-app<\/pre>\n<p><\/code><\/p>\n<p>Bu <code>main.yml<\/code> dosyas\u0131, kodunuza bir <code>push<\/code> i\u015flemi yap\u0131ld\u0131\u011f\u0131nda tetiklenecek bir <code>build<\/code> i\u015fini tan\u0131mlar.  \u0130\u015f, Node.js'i kurar, ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fckler, testleri \u00e7al\u0131\u015ft\u0131r\u0131r, Docker imaj\u0131n\u0131 olu\u015fturur, Docker Hub'a giri\u015f yapar ve son olarak Docker imaj\u0131n\u0131 Docker Hub'a iter.<\/p>\n<h2>Docker Image Olu\u015fturma ve Docker Hub ile Entegrasyon<\/h2>\n<p>Docker, uygulaman\u0131z\u0131n ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 ve \u00e7al\u0131\u015fma zaman\u0131 ortam\u0131n\u0131 kapsay\u0131c\u0131lar i\u00e7inde paketlemenizi sa\u011flar.  Bu, da\u011f\u0131t\u0131m ortam\u0131nda tutarl\u0131l\u0131k sa\u011flar ve \"Benim makinemde \u00e7al\u0131\u015f\u0131yor ama senin makinende \u00e7al\u0131\u015fm\u0131yor\" sorunlar\u0131n\u0131 \u00f6nler.  \u00d6ncelikle, <code>Dockerfile<\/code> ad\u0131nda bir dosya olu\u015fturarak Docker imaj\u0131n\u0131z\u0131 tan\u0131mlay\u0131n:<\/p>\n<pre><code class=\"language-dockerfile\">FROM node:16\n\nWORKDIR \/app\n\nCOPY package*.json .\/\n\nRUN npm install\n\nCOPY . .\n\nCMD [\"npm\", \"start\"]<\/pre>\n<p><\/code><\/p>\n<p>Bu <code>Dockerfile<\/code>, Node.js 16 tabanl\u0131 bir imaj kullan\u0131r, uygulama dosyalar\u0131n\u0131z\u0131 kopyalar, ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00fckler ve uygulaman\u0131z\u0131 ba\u015flat\u0131r.  Daha sonra, Docker imaj\u0131n\u0131z\u0131 olu\u015fturup Docker Hub'a iterek, di\u011fer ortamlarda kolayca kullanabilirsiniz.  Docker Hub'a eri\u015fim i\u00e7in GitHub Secrets kullanarak g\u00fcvenli bir \u015fekilde kimlik bilgilerinizi saklamay\u0131 unutmay\u0131n.<\/p>\n<h2>Terraform ile Altyap\u0131 Y\u00f6netimi<\/h2>\n<p>Terraform ile altyap\u0131n\u0131z\u0131 kodla y\u00f6netebilirsiniz.  Bu, altyap\u0131n\u0131z\u0131 tutarl\u0131, tekrarlanabilir ve s\u00fcr\u00fcm kontrol\u00fc alt\u0131nda tutman\u0131z\u0131 sa\u011flar.  \u00d6rne\u011fin, AWS \u00fczerinde bir EC2 \u00f6rne\u011fi olu\u015fturmak i\u00e7in a\u015fa\u011f\u0131daki Terraform kodunu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-terraform\">resource \"aws_instance\" \"example\" {\n  ami           = \"ami-0c55b31ad2299a701\" # Amazon Linux 2 AMI\n  instance_type = \"t2.micro\"\n\n  tags = {\n    Name = \"example\"\n  }\n}<\/pre>\n<p><\/code><\/p>\n<p>Bu kod, belirtilen AMI'yi ve instance tipinde bir EC2 \u00f6rne\u011fi olu\u015fturur.  Terraform, bu kodu \u00e7al\u0131\u015ft\u0131rarak altyap\u0131n\u0131z\u0131 otomatik olarak olu\u015fturur.  GitHub Actions ile entegre ederek, kodunuza bir de\u011fi\u015fiklik yap\u0131ld\u0131\u011f\u0131nda altyap\u0131n\u0131z\u0131 g\u00fcncelleyebilirsiniz.  Bu, s\u00fcrekli da\u011f\u0131t\u0131m s\u00fcrecinizin \u00f6nemli bir par\u00e7as\u0131d\u0131r.<\/p>\n<h2>\u0130leri D\u00fczey Konular: G\u00fcvenlik ve \u00d6l\u00e7eklenebilirlik<\/h2>\n<p>G\u00fcvenlik, CI\/CD pipeline'lar\u0131n\u0131z\u0131n en \u00f6nemli y\u00f6nlerinden biridir.  Kimlik bilgilerinizi GitHub Secrets gibi g\u00fcvenli mekanizmalar kullanarak saklay\u0131n.  Docker imajlar\u0131n\u0131z\u0131 her zaman g\u00fcvenli hale getirmek i\u00e7in g\u00fcvenlik taramalar\u0131 yap\u0131n.  Ayr\u0131ca,  pipeline'\u0131n\u0131z\u0131n \u00f6l\u00e7eklenebilirli\u011fine dikkat edin.  Paralel i\u015fleri kullanarak i\u015flem s\u00fcrelerini k\u0131salt\u0131n ve kaynaklar\u0131 verimli kullan\u0131n.  B\u00fcy\u00fck projelerde, pipeline'\u0131n\u0131z\u0131 mod\u00fcler hale getirerek daha kolay y\u00f6netebilir ve bak\u0131m\u0131 yapabilirsiniz.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryosu: Bir E-Ticaret Uygulamas\u0131 \u0130\u00e7in CI\/CD<\/h2>\n<p>Bir e-ticaret uygulamas\u0131 i\u00e7in CI\/CD pipeline'\u0131n\u0131 ele alal\u0131m.  Bu pipeline, kod de\u011fi\u015fikliklerinin otomatik olarak test edilmesini, Docker imaj\u0131n\u0131n olu\u015fturulmas\u0131n\u0131,  AWS \u00fczerinde bir Kubernetes k\u00fcmesine da\u011f\u0131t\u0131lmas\u0131n\u0131 ve hatta CDN'ler gibi di\u011fer hizmetleri g\u00fcncellemesini i\u00e7erebilir.  Bu, h\u0131zl\u0131 ve g\u00fcvenilir bir \u015fekilde yeni \u00f6zellikler ve g\u00fcncellemeler yay\u0131nlaman\u0131z\u0131 sa\u011flar.  Terraform ile altyap\u0131y\u0131 y\u00f6netmek, bu karma\u015f\u0131k ortam\u0131 y\u00f6netmeyi daha kolay hale getirir.  \u00d6zellikle, blue\/green deployment gibi stratejiler kullanarak s\u0131f\u0131r kesinti s\u00fcresi ile da\u011f\u0131t\u0131m sa\u011flamak \u00f6nemlidir.<\/p>\n<h2>\u00d6\u011frenme Yol Haritas\u0131<\/h2>\n<p>Bu konuda uzmanla\u015fmak i\u00e7in a\u015fa\u011f\u0131daki yol haritas\u0131n\u0131 izleyebilirsiniz:<\/p>\n<h3>Yeni Ba\u015flayan:<\/h3>\n<ul>\n<li>GitHub hesab\u0131 olu\u015fturma ve temel kullan\u0131m\u0131n\u0131 \u00f6\u011frenme.<\/li>\n<li>Docker'\u0131 kurma ve temel komutlar\u0131 \u00f6\u011frenme.<\/li>\n<li>Basit bir Node.js veya Python uygulamas\u0131 olu\u015fturma.<\/li>\n<li>GitHub Actions'\u0131n temel i\u015flevlerini anlama.<\/li>\n<\/ul>\n<h3>Orta Seviye:<\/h3>\n<ul>\n<li>Dockerfile olu\u015fturma ve Docker imajlar\u0131n\u0131 y\u00f6netme.<\/li>\n<li>GitHub Actions ile basit bir CI pipeline'\u0131 olu\u015fturma.<\/li>\n<li>Terraform'\u0131 kurma ve basit altyap\u0131 kaynaklar\u0131 olu\u015fturma.<\/li>\n<li>Docker Hub veya benzer bir konteyner kay\u0131t deposunu kullanma.<\/li>\n<\/ul>\n<h3>\u0130leri Seviye:<\/h3>\n<ul>\n<li>Karma\u015f\u0131k CI\/CD pipeline'lar\u0131 olu\u015fturma ve y\u00f6netme.<\/li>\n<li>Terraform ile karma\u015f\u0131k altyap\u0131 yap\u0131land\u0131rmalar\u0131 olu\u015fturma.<\/li>\n<li>G\u00fcvenlik en iyi uygulamalar\u0131n\u0131 uygulama.<\/li>\n<li>Kubernetes ve di\u011fer konteyner orkestrasyon platformlar\u0131n\u0131 kullanma.<\/li>\n<li>Mavi\/ye\u015fil da\u011f\u0131t\u0131m gibi geli\u015fmi\u015f da\u011f\u0131t\u0131m stratejilerini uygulama.<\/li>\n<\/ul>\n<h2>Sonu\u00e7<\/h2>\n<p>Bu makalede, GitHub Actions, Docker ve Terraform kullanarak bir CI\/CD pipeline'\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ve bu s\u00fcre\u00e7te kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 zorluklar\u0131 a\u015fman\u0131n yollar\u0131n\u0131 ele ald\u0131k.  CI\/CD, yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinizi otomatikle\u015ftirmek ve h\u0131zland\u0131rmak i\u00e7in g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r.  Bu ara\u00e7lar\u0131 \u00f6\u011frenerek, geli\u015ftirme s\u00fcrecini daha verimli ve g\u00fcvenilir hale getirebilirsiniz. Daha fazla bilgi i\u00e7in <a href=\"https:\/\/fatihsoysal.com\">https:\/\/fatihsoysal.com<\/a> adresini ziyaret edebilirsiniz.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<ul>\n<li><strong>GitHub Actions \u00fccretsiz mi?<\/strong>  GitHub Actions, belirli bir kullan\u0131m kotas\u0131na kadar \u00fccretsizdir.  Daha fazla kaynak gerektiren projeler i\u00e7in \u00fccretli planlar mevcuttur.<\/li>\n<li><strong>Docker Hub'a alternatif var m\u0131?<\/strong>  Evet,  Google Container Registry, Amazon Elastic Container Registry gibi alternatif konteyner kay\u0131t depolar\u0131 mevcuttur.<\/li>\n<li><strong>Terraform'a alternatif var m\u0131?<\/strong>  Evet,  Ansible, Chef, Puppet gibi alternatif IaC ara\u00e7lar\u0131 mevcuttur.<\/li>\n<li><strong>Hangi programlama dilleri GitHub Actions ile kullan\u0131labilir?<\/strong> GitHub Actions, bir\u00e7ok programlama dilini destekler, Node.js, Python, Java, Go gibi diller yayg\u0131n olarak kullan\u0131l\u0131r.<\/li>\n<li><strong>CI\/CD pipeline'\u0131m\u0131 nas\u0131l izleyebilirim?<\/strong> GitHub Actions, pipeline'\u0131n\u0131z\u0131n durumunu izlemek i\u00e7in aray\u00fcz sa\u011flar.  Ayr\u0131ca, \u00e7e\u015fitli izleme ara\u00e7lar\u0131 entegre edebilirsiniz.<\/li>\n<\/ul>\n<p>Yazar: Fatih Soysal<\/p>\n","protected":false},"excerpt":{"rendered":"GitHub Actions, Docker ve Terraform ile CI\/CD Pipeline Olu\u015fturma Modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde, s\u00fcrekli entegrasyon ve s\u00fcrekli da\u011f\u0131t\u0131m&hellip;","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":[1],"tags":[],"class_list":{"0":"post-28759","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","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>GitHub Actions, Docker ve Terraform ile CI\/CD Pipeline Olu\u015fturma<\/title>\n<meta name=\"description\" content=\"Modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde, s\u00fcrekli entegrasyon ve s\u00fcrekli da\u011f\u0131t\u0131m (CI\/CD) pipeline&#039;lar\u0131 olmazsa olmazd\u0131r. Bu pipeline&#039;lar, kod de\u011fi\u015fikliklerinin h\u0131zl\u0131, g\u00fcvenilir ve otomatik olarak test edilmesini, da\u011f\u0131t\u0131lmas\u0131n\u0131 ve hatta altyap\u0131n\u0131n y\u00f6netilmesini sa\u011flar. Bu makalede, GitHub Actions, Docker ve Terraform kullanarak bir CI\/CD pipeline&#039;\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z. Bu s\u00fcre\u00e7te kar\u015f\u0131la\u015fabilece\u011finiz zorluklar\u0131 ve \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 ele alarak, ba\u015ftan sona bir CI\/CD yolculu\u011funa \u00e7\u0131kaca\u011f\u0131z. Hem yeni ba\u015flayanlar hem de deneyimli geli\u015ftiriciler i\u00e7in faydal\u0131 bilgiler bulacaks\u0131n\u0131z.\" \/>\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\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GitHub Actions, Docker ve Terraform ile CI\/CD Pipeline Olu\u015fturma\" \/>\n<meta property=\"og:description\" content=\"Modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde, s\u00fcrekli entegrasyon ve s\u00fcrekli da\u011f\u0131t\u0131m (CI\/CD) pipeline&#039;lar\u0131 olmazsa olmazd\u0131r. Bu pipeline&#039;lar, kod de\u011fi\u015fikliklerinin h\u0131zl\u0131, g\u00fcvenilir ve otomatik olarak test edilmesini, da\u011f\u0131t\u0131lmas\u0131n\u0131 ve hatta altyap\u0131n\u0131n y\u00f6netilmesini sa\u011flar. Bu makalede, GitHub Actions, Docker ve Terraform kullanarak bir CI\/CD pipeline&#039;\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z. Bu s\u00fcre\u00e7te kar\u015f\u0131la\u015fabilece\u011finiz zorluklar\u0131 ve \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 ele alarak, ba\u015ftan sona bir CI\/CD yolculu\u011funa \u00e7\u0131kaca\u011f\u0131z. Hem yeni ba\u015flayanlar hem de deneyimli geli\u015ftiriciler i\u00e7in faydal\u0131 bilgiler bulacaks\u0131n\u0131z.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-09-02T19:30:24+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=\"7 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"GitHub Actions, Docker ve Terraform ile CI\/CD Pipeline Olu\u015fturma\",\"datePublished\":\"2025-09-02T19:30:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/\"},\"wordCount\":1296,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/\",\"name\":\"GitHub Actions, Docker ve Terraform ile CI\/CD Pipeline Olu\u015fturma\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-09-02T19:30:24+00:00\",\"description\":\"Modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde, s\u00fcrekli entegrasyon ve s\u00fcrekli da\u011f\u0131t\u0131m (CI\/CD) pipeline'lar\u0131 olmazsa olmazd\u0131r. Bu pipeline'lar, kod de\u011fi\u015fikliklerinin h\u0131zl\u0131, g\u00fcvenilir ve otomatik olarak test edilmesini, da\u011f\u0131t\u0131lmas\u0131n\u0131 ve hatta altyap\u0131n\u0131n y\u00f6netilmesini sa\u011flar. Bu makalede, GitHub Actions, Docker ve Terraform kullanarak bir CI\/CD pipeline'\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z. Bu s\u00fcre\u00e7te kar\u015f\u0131la\u015fabilece\u011finiz zorluklar\u0131 ve \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 ele alarak, ba\u015ftan sona bir CI\/CD yolculu\u011funa \u00e7\u0131kaca\u011f\u0131z. Hem yeni ba\u015flayanlar hem de deneyimli geli\u015ftiriciler i\u00e7in faydal\u0131 bilgiler bulacaks\u0131n\u0131z.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GitHub Actions, Docker ve Terraform ile CI\/CD Pipeline Olu\u015fturma\"}]},{\"@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":"GitHub Actions, Docker ve Terraform ile CI\/CD Pipeline Olu\u015fturma","description":"Modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde, s\u00fcrekli entegrasyon ve s\u00fcrekli da\u011f\u0131t\u0131m (CI\/CD) pipeline'lar\u0131 olmazsa olmazd\u0131r. Bu pipeline'lar, kod de\u011fi\u015fikliklerinin h\u0131zl\u0131, g\u00fcvenilir ve otomatik olarak test edilmesini, da\u011f\u0131t\u0131lmas\u0131n\u0131 ve hatta altyap\u0131n\u0131n y\u00f6netilmesini sa\u011flar. Bu makalede, GitHub Actions, Docker ve Terraform kullanarak bir CI\/CD pipeline'\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z. Bu s\u00fcre\u00e7te kar\u015f\u0131la\u015fabilece\u011finiz zorluklar\u0131 ve \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 ele alarak, ba\u015ftan sona bir CI\/CD yolculu\u011funa \u00e7\u0131kaca\u011f\u0131z. Hem yeni ba\u015flayanlar hem de deneyimli geli\u015ftiriciler i\u00e7in faydal\u0131 bilgiler bulacaks\u0131n\u0131z.","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\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/","og_locale":"tr_TR","og_type":"article","og_title":"GitHub Actions, Docker ve Terraform ile CI\/CD Pipeline Olu\u015fturma","og_description":"Modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde, s\u00fcrekli entegrasyon ve s\u00fcrekli da\u011f\u0131t\u0131m (CI\/CD) pipeline'lar\u0131 olmazsa olmazd\u0131r. Bu pipeline'lar, kod de\u011fi\u015fikliklerinin h\u0131zl\u0131, g\u00fcvenilir ve otomatik olarak test edilmesini, da\u011f\u0131t\u0131lmas\u0131n\u0131 ve hatta altyap\u0131n\u0131n y\u00f6netilmesini sa\u011flar. Bu makalede, GitHub Actions, Docker ve Terraform kullanarak bir CI\/CD pipeline'\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z. Bu s\u00fcre\u00e7te kar\u015f\u0131la\u015fabilece\u011finiz zorluklar\u0131 ve \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 ele alarak, ba\u015ftan sona bir CI\/CD yolculu\u011funa \u00e7\u0131kaca\u011f\u0131z. Hem yeni ba\u015flayanlar hem de deneyimli geli\u015ftiriciler i\u00e7in faydal\u0131 bilgiler bulacaks\u0131n\u0131z.","og_url":"https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-09-02T19:30:24+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"7 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"GitHub Actions, Docker ve Terraform ile CI\/CD Pipeline Olu\u015fturma","datePublished":"2025-09-02T19:30:24+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/"},"wordCount":1296,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/","url":"https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/","name":"GitHub Actions, Docker ve Terraform ile CI\/CD Pipeline Olu\u015fturma","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-09-02T19:30:24+00:00","description":"Modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde, s\u00fcrekli entegrasyon ve s\u00fcrekli da\u011f\u0131t\u0131m (CI\/CD) pipeline'lar\u0131 olmazsa olmazd\u0131r. Bu pipeline'lar, kod de\u011fi\u015fikliklerinin h\u0131zl\u0131, g\u00fcvenilir ve otomatik olarak test edilmesini, da\u011f\u0131t\u0131lmas\u0131n\u0131 ve hatta altyap\u0131n\u0131n y\u00f6netilmesini sa\u011flar. Bu makalede, GitHub Actions, Docker ve Terraform kullanarak bir CI\/CD pipeline'\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z. Bu s\u00fcre\u00e7te kar\u015f\u0131la\u015fabilece\u011finiz zorluklar\u0131 ve \u00e7\u00f6z\u00fcm yollar\u0131n\u0131 ele alarak, ba\u015ftan sona bir CI\/CD yolculu\u011funa \u00e7\u0131kaca\u011f\u0131z. Hem yeni ba\u015flayanlar hem de deneyimli geli\u015ftiriciler i\u00e7in faydal\u0131 bilgiler bulacaks\u0131n\u0131z.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/github-actions-docker-ve-terraform-ile-ci-cd-pipeline-olusturma\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"GitHub Actions, Docker ve Terraform ile CI\/CD Pipeline Olu\u015fturma"}]},{"@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\/28759","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=28759"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/28759\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=28759"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=28759"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=28759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}