Git Product home page Git Product logo

ci-cd-github-actions-demo's Introduction

ci-cd-github-actions-demo

Icerik

Sunum Kaydi:

Github Actions ile CI/CD

https://www.youtube.com/live/kvwOObWn8GU?si=50GoSl4ulKtocw2E

Best GitHub Actions documentation

https://docs.github.com/actions

GitHub Actions nedir?

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.

actions

workflow

GitHub Actions CI/CD temel terminoloji ve kavramlar nelerdir?

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.

workflow

CI/CD'nin faydalari ve zorluklari

Faydalari:

  1. Hizli Geri Bildirim: Degisikliklerin hizli bir sekilde test edilmesi ve geri bildirim alinmasi, hatalarin erken tespit edilmesini ve giderilmesini saglar.
  2. Surekli Entegrasyon: Surekli birlestirme sureci, yazilimin surekli olarak guncel ve calisir durumda olmasini saglar. Bu, gelistirme ekibinin birbirine cakisan degisiklikleri yonetmesini kolaylastirir.
  3. Kalite Guvencesi: Otomatik testlerin ve surekli kontrolun olmasi, yazilim kalitesini artirir ve hatalarin erken tespit edilmesini saglar.
  4. Hizli Dagitim: Dogrulanmis degisikliklerin hizli bir sekilde canli ortama dagitilmasi, yeni ozelliklerin ve duzeltmelerin hizla kullanicilarla paylasilmasini saglar.
  5. Maliyet ve Zaman Tasarrufu: Otomatiklestirilmis surecler, gelistirme ekibinin tekrarlayan islemlerle zaman kaybetmesini onler ve maliyet tasarrufu saglar.
  6. Surekli Iyilestirme: Surekli geri bildirim alarak ve surecleri otomatiklestirerek surekli olarak gelistirme surecini iyilestirir.

Zorluklari:

  1. Karmasik Yapilandirma: Bazi karmasik projelerde CI/CD sureclerini dogru bir sekilde yapilandirmak zor olabilir.
  2. Veri Guvenligi: Hassas verilerin otomatik olarak islenmesi ve dagitilmasi, guvenlik riskleri dogurabilir ve ozel verilerin korunmasini zorlastirabilir.
  3. Yuksek Baslangic Maliyeti: CI/CD altyapisinin olusturulmasi ve yonetilmesi, baslangicta yuksek maliyetler ve zaman gerektirebilir.
  4. Entegrasyon Zorluklari: Bazi karmasik sistemlerde CI/CD'nin diger sureclerle entegrasyonu zor olabilir.
  5. Egitim Gereksinimi: Ekibin CI/CD sureclerini anlamasi ve etkin bir sekilde kullanmasi icin egitim gerekebilir.
  6. Buyuk Olcekli Projelerde Yonetim Zorluklari: Buyuk olcekli projelerde CI/CD sureclerini yonetmek ve koordine etmek zor olabilir.

Basit Terimlerle Aciklanan CI/CD Sureci

!!! ByteByteGo yazisinin turkce cevirisi.

Bolum 1 - CI/CD ile SDLC

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.

Bolum 2 - CI ve CD Arasindaki Fark

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.

Bolum 3 - CI/CD Sureci

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

ci-cd

Secret Key Ekleme:

gifmaker_me (1)

Docker Hub'a gonderdigimiz imaji calistirmak adimlari:

  1. Docker Hub'dan proje imajini cekin:

    docker pull mgmetehanx/githubactions:latest 
  2. Docker uzerinde imaji calistirin:

    docker run -p 8088:8088 mgmetehanx/githubactions:latest
  3. 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   

Local Build & Run

  docker build . -t githubactionsdemo
  docker images
  docker run -p 8088:8088 -t githubactionsdemo

Tech Stack

  • Java 17
  • Spring Boot 3.0
  • Docker
  • Lombok
  • H2

Requirements

For building and running the application you need:

Kaynakca:

ci-cd-github-actions-demo's People

Contributors

mgmetehan avatar

Stargazers

Aydın MEMIS avatar Muhammed Samet Akgül avatar Mahmut ÇELİK avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.