- Best GitHub Actions documentation
- GitHub Actions nedir?
- GitHub Actions CI/CD temel terminoloji ve kavramlar nelerdir?
- CI/CD'nin faydalari ve zorluklari
- Basit Terimlerle Aciklanan CI/CD Sureci
- Secret_Key Ekleme
- Docker Hub'a gonderdigimiz imaji calistirmak adimlari
- Local Build & Run
- Tech Stack
- Requirements
- Kaynakca
https://www.youtube.com/live/kvwOObWn8GU?si=50GoSl4ulKtocw2E
https://docs.github.com/actions
Yazilim gelistirme sureclerini otomatiklestirmek ve yonetmek icin kullanilir. GitHub Actions, CI (Continuous Integration - Surekli Entegrasyon), CD (Continuous Deployment/Continuous Delivery - Surekli Dagitim/Surekli Teslimat) gibi surecleri kolaylastirmak icin kullanicilarin belirli olaylara veya zamanlamalara bagli olarak belirli eylemler gerceklestirmesine olanak tanir. Bu eylemler, kodu derleme, test etme, paket olusturma, dagitim yapma gibi islemleri icerebilir.
1. CI (Continuous Integration - Surekli Entegrasyon)
CI, gelistirme surecinde kodun otomatik olarak derlenip birlestirilmesini ve test edilmesini saglayan bir yontemdir. Bu, kod tabanindaki degisikliklerin birlestirilerek catismalarin erken tespit edilmesini ve hatalarin azaltilmasini saglar.
2. CD (Continuous Deployment/Continuous Delivery - Surekli Dagitim/Surekli Teslimat)
CD, yazilimin otomatik olarak test edilmesi ve gerektiginde canliya hizli ve guvenilir bir sekilde dagitilmasini saglayan bir surectir. Surekli Dagitim, kod tabanindaki her degisikligi otomatik olarak canliya dagitmayi icerirken, Surekli Teslimat, kod tabanindaki degisikliklerin istenildiginde otomatik olarak dagitilmaya hazir oldugu anlamina gelir.
3. Workflow
GitHub Actions'ta bir is akisi, belirli bir olay veya tetikleyiciye bagli olarak calisan bir dizi islem veya eylem iceren bir otomasyon surecidir. Is akislari, projenin ihtiyaclarina ve gereksinimlerine gore ozellestirilebilir.
4. Action
GitHub Actions'ta bir eylem, is akislari icindeki temel yapi tasidir. Eylemler, belirli bir gorevi gerceklestirmek icin kullanilir. Ornegin, kod derleme, test calistirma, paket olusturma, dagitim gibi gorevler eylemler araciligiyla gerceklestirilebilir.
5. Runner
GitHub Actions is akislarinin calistirildigi sanal ortamlardir. Runner'lar, is akislarinin calistirilmasi icin gereken kaynaklari saglar. GitHub'ta barindirilan calistiricilar oldugu gibi kendi kendinize barindirabileceginiz ozellestirilmis calistiricilar da bulunmaktadir.
6. Event
GitHub Actions is akislarinin tetikleyicisi olan olaylardir. Ornegin, kodun bir dalina yapilan push olayi, bir pull request, bir zamanlama veya baska bir GitHub olayi bir is akisini tetikleyebilir.
Hizli Geri Bildirim:
Degisikliklerin hizli bir sekilde test edilmesi ve geri bildirim alinmasi, hatalarin erken tespit edilmesini ve giderilmesini saglar.Surekli Entegrasyon:
Surekli birlestirme sureci, yazilimin surekli olarak guncel ve calisir durumda olmasini saglar. Bu, gelistirme ekibinin birbirine cakisan degisiklikleri yonetmesini kolaylastirir.Kalite Guvencesi:
Otomatik testlerin ve surekli kontrolun olmasi, yazilim kalitesini artirir ve hatalarin erken tespit edilmesini saglar.Hizli Dagitim:
Dogrulanmis degisikliklerin hizli bir sekilde canli ortama dagitilmasi, yeni ozelliklerin ve duzeltmelerin hizla kullanicilarla paylasilmasini saglar.Maliyet ve Zaman Tasarrufu:
Otomatiklestirilmis surecler, gelistirme ekibinin tekrarlayan islemlerle zaman kaybetmesini onler ve maliyet tasarrufu saglar.Surekli Iyilestirme:
Surekli geri bildirim alarak ve surecleri otomatiklestirerek surekli olarak gelistirme surecini iyilestirir.
Karmasik Yapilandirma:
Bazi karmasik projelerde CI/CD sureclerini dogru bir sekilde yapilandirmak zor olabilir.Veri Guvenligi:
Hassas verilerin otomatik olarak islenmesi ve dagitilmasi, guvenlik riskleri dogurabilir ve ozel verilerin korunmasini zorlastirabilir.Yuksek Baslangic Maliyeti:
CI/CD altyapisinin olusturulmasi ve yonetilmesi, baslangicta yuksek maliyetler ve zaman gerektirebilir.Entegrasyon Zorluklari:
Bazi karmasik sistemlerde CI/CD'nin diger sureclerle entegrasyonu zor olabilir.Egitim Gereksinimi:
Ekibin CI/CD sureclerini anlamasi ve etkin bir sekilde kullanmasi icin egitim gerekebilir.Buyuk Olcekli Projelerde Yonetim Zorluklari:
Buyuk olcekli projelerde CI/CD sureclerini yonetmek ve koordine etmek zor olabilir.
!!! ByteByteGo yazisinin turkce cevirisi.
Yazilim gelistirme yasam dongusu (SDLC), gelistirme, test, dagitim ve bakim gibi birkac temel asamadan olusur. CI/CD bu asamalari otomatiklestirir ve entegre ederek daha hizli ve guvenilir surumler saglar. Kod bir git deposuna gonderildiginde, otomatik bir derleme ve test sureci tetiklenir. Uctan uca (e2e) test durumlari kodu dogrulamak icin calistirilir. Testler basarili olursa, kod otomatik olarak staging/production ortamlarina dagitilabilir. Sorunlar bulunursa, kod geri gonderilir ve gelistirme asamasinda hata duzeltme islemine alinir. Bu otomasyon, gelistiricilere hizli geri bildirim saglar ve uretimde hata riskini azaltir.
Surekli Entegrasyon (CI), derleme, test ve birlestirme surecini otomatiklestirir. Kod her gonderildiginde entegrasyon sorunlarini erken tespit etmek icin testleri calistirir. Bu, kod gonderimlerini tesvik eder ve hizli geri bildirim saglar.
Surekli Dagitim (CD), altyapi degisiklikleri ve dagitim gibi yayin sureclerini otomatiklestirir. CD, yazilimin otomatik is akislariyla herhangi bir zamanda guvenilir bir sekilde yayinlanabilecegini saglar. CD ayrica, uretim dagitimindan once gereken manuel test ve onay adimlarini da otomatiklestirebilir.
Tipik bir CI/CD surecinde birkac baglantili asama bulunur:
Gelistirici, kod degisikliklerini kaynak kontrolune gonderir CI sunucusu degisiklikleri algilar ve derlemeyi tetikler Kod derlenir, test edilir (birim, entegrasyon testleri) Test sonuclari gelistiriciye raporlanir Basarili olunursa, urunler staging ortamlarina dagitilir Yayin oncesinde staging uzerinde daha fazla test yapilabilir CD sistemi onaylanan degisiklikleri uretime dagitir
-
Docker Hub'dan proje imajini cekin:
docker pull mgmetehanx/githubactions:latest
-
Docker uzerinde imaji calistirin:
docker run -p 8088:8088 mgmetehanx/githubactions:latest
-
Asagidaki komutu kullanarak API'ye POST istegi gonderin:
curl -X POST -H "Content-Type: application/json" -d '{ "name": "test", "price": 1, "brand": "test", "category": "test" }' http://localhost:8088/api/v1/items
docker build . -t githubactionsdemo
docker images
docker run -p 8088:8088 -t githubactionsdemo
- Java 17
- Spring Boot 3.0
- Docker
- Lombok
- H2
For building and running the application you need:
- https://www.youtube.com/watch?v=eMrOMD6HgDg&ab_channel=H%C3%BCseyinBABAL
- https://www.youtube.com/watch?v=R8_veQiYBjI&ab_channel=TechWorldwithNana
- https://www.linkedin.com/pulse/testing-java-apps-junit-github-actions-emad-mohamed/
- https://programmingpercy.tech/blog/github-actions-in-action/
- https://youtu.be/sDZ6aHyAz2g?si=tYiOuMXXIf4TOTNt
- https://kadermiyanyedi.medium.com/github-actions-nedir-f61a77b49c23
- https://www.atomicjar.com/2023/06/running-testcontainers-tests-using-github-actions/
- https://dev.to/rubyshiv/how-to-deploy-springboot-app-to-elastic-beanstalk-using-github-actions-cicd-2ihi
- https://github.com/docker/login-action
- https://github.com/actions/cache
- https://github.com/marketplace/actions/build-and-push-docker-images