paint-brush
DevOps'unuzu Git Hook'larla Güçlendirinile@infinity
2,996 okumalar
2,996 okumalar

DevOps'unuzu Git Hook'larla Güçlendirin

ile Rishabh Agarwal4m2023/09/07
Read on Terminal Reader
Read this story w/o Javascript

Çok uzun; Okumak

DevOps, geliştirme ve dağıtım süreçlerini basitleştirmeye çalışan firmalar için yazılım geliştirme dünyasında ayrılmaz bir bileşen haline geldi. Mevcut çeşitli DevOps teknolojileri arasında bazen ihmal edilen ancak gerçekten etkili olan bir tanesi vardır. Bu hayati teknoloji “Git Hooks”tan başka bir şey değil.
featured image - DevOps'unuzu Git Hook'larla Güçlendirin
Rishabh Agarwal HackerNoon profile picture

DevOps, geliştirme ve dağıtım süreçlerini basitleştirmeye çalışan firmalar için yazılım geliştirme dünyasında ayrılmaz bir bileşen haline geldi. Mevcut çeşitli DevOps teknolojileri arasında bazen ihmal edilen ancak gerçekten etkili olan bir tanesi vardır.


Bu hayati teknoloji “ Git Hooks” tan başkası değil.


Git Hook'lar görevleri otomatikleştirmek, kodlama standartlarını uygulamak, sürekli dağıtımlar gerçekleştirmek ve testler yürütmek için harika araçlardır.


DevOps uygulamalarımızda devrim yaratmak için Git Hooks'u nasıl kullanabileceğimizi görelim!

İlk Önce İlk Şeyler… Kancalar Nedir?

Önce resmi tanıma bakalım:


Kancalar, git'in yürütülmesi sırasında belirli noktalarda eylemleri tetiklemek için kancalar dizinine yerleştirebileceğiniz programlardır.


Neyse ki bu gerçekten basit bir tanım!


Okuyucuların tanımla ilgili aklındaki bazı soruları yanıtlamaya çalışalım.


S) Hooks dizini nedir? Nerede bulunuyor?

Hooks dizini, Git deposundaki yürütülebilir programları veya Git'in yürüteceği Hook'ları içeren bir dizindir. Varsayılan olarak hooks dizini $GIT_DIR/hooks şeklindedir. Kullanıcılar bunu core.hooksPath yapılandırma değişkenini kullanarak da yapılandırabilirler.


S) Git'in yürütme noktaları nelerdir?

Git yürütme noktaları, Git iş akışında kancaların çalıştırılabileceği adımlardır. Ön işleme, İşlem sonrası, İtme Öncesi, Alma sonrası, Yeniden oluşturma öncesi ve Birleştirme sonrası Git yürütme noktalarına bazı örneklerdir.


Bu bölümü özetlemek gerekirse Git Hooks için aşağıdaki tanımı yapabiliriz:


Git, kodu işleme, aktarma veya birleştirme gibi belirli işlemlerden önce veya sonra "kanca" olarak bilinen komut dosyalarını çalıştırır. Geliştirme süreci sırasında görevleri otomatikleştirmenize, politikaları uygulamanıza ve kod tabanıyla etkileşime girmenize olanak tanır. Git kancaları Git deponuzun .git/hooks dizininde saklanır

İlk Git Kancalarımızı Yaratıyoruz!

Herhangi bir taahhüt mesajına "GÖREV*" normal ifadesini uygulayacak basit bir Git kancası oluşturmaya çalışalım.


Yeni bir git_hooks_tut dizini oluşturun ve içinde yeni bir git deposu başlatın.


 ~/projects$ mkdir git_hooks_tut ~/projects$ cd git_hooks_tut ~/projects/git_hooks_tut$ git init Initialized empty Git repository


Hooks dizinine girip içeriğini inceleyelim.


 ~/projects/git_hooks_tut$ cd .git/hooks ~/projects/git_hooks_tut/.git/hooks$ ls applypatch-msg.sample pre-applypatch.sample pre-push.sample commit-msg.sample pre-commit.sample pre-rebase.sample fsmonitor-watchman.sample pre-merge-commit.sample pre-receive.sample post-update.sample prepare-commit-msg.sample update.sample


Hooks dizini bazı örnek komut dosyalarıyla birlikte gelir. .sample uzantısı bunların varsayılan olarak çalışmasını durdurur. Bir kancayı "kurmak" için yapmanız gereken tek şey .sample uzantısından kurtulmaktır.


Veya yeni bir komut dosyasıyla sıfırdan başlıyorsanız, yukarıda listelenen dosya adlarından biriyle eşleşen, ancak .sample uzantısı olmayan yeni bir dosya ekleyebilirsiniz.


Kullanım durumumuz için bir taahhüt mesajı kancasına ihtiyacımız olacak. Devam edin ve commit-msg adında yeni bir komut dosyası oluşturun.


 ~/projects/git_hooks_tut/.git/hooks$ touch commit-msg


Commit mesaj kalıbımızı garanti altına alacak mantığı commit-msg betiğine ekleyelim.


 #!/bin/sh commit_msg_file=$1 commit_msg=$(cat "$commit_msg_file") # Check if the commit message starts with "TASK" if ! echo "$commit_msg" | grep -q "^TASK"; then echo "Commit message must start with 'TASK'" exit 1 fi


Son olarak, commit-msg betiğini çalıştırılabilir hale getirin. Çalıştırılamayan komut dosyaları, hooks dizininde bulunsalar bile git tarafından atlanır.


 ~/projects/git_hooks_tut/.git/hooks$ chmod +x commit-msg


Ve bu kurulumla kancalarımız tamamlandı! Şimdi test edelim.


Şimdi yeni bir dosya oluşturup onu commit etmeye çalışacağız; önce geçersiz bir mesaj formatıyla ve ardından geçerli bir mesaj formatıyla.


 ~/projects/git_hooks_tut/.git/hooks$ cd ../.. ~/projects/git_hooks_tut$ touch README ~/projects/git_hooks_tut$ ls README ~/projects/git_hooks_tut$ git add README ~/projects/git_hooks_tut$ git commit -m "Added Readme File" Commit message must start with 'TASK' ~/projects/git_hooks_tut$ git commit -m "TASK-0000: Added Readme File" [master (root-commit) 7f3648a] TASK-000: Added Readme File


İşler ideal şekilde çalışıyor!

Bazı Farklı Kanca Çeşitleri Nelerdir?

Git, bir dizi yürütme noktası için kancalar oluşturmamıza olanak tanır. Bunlardan bazıları aşağıdaki gibidir:


  1. Pre-Commit Hook: Bu kanca, bir taahhüt oluşturulmadan önce yürütülür. Taahhüt edilen değişiklikleri doğrulamamızı sağlar.


  2. Ön Alma Kancası: Ön alma kancası, herhangi bir referans değiştirilmeden önce uzak depoda çalıştırılır ve özel kurallar veya politikalar uygulamanıza olanak tanır.


  3. Alma Sonrası Kanca: Bu kanca, referansların güncellenmesinden sonra uzak depoda da yürütülür. Bildirim göndermek ve/veya ek görevleri gerçekleştirmek için kullanılabilir.


  4. Ön İtme Kancası: Bu kanca, bir itme yapılmadan önce gerçekleştirilir. Bu, belirli türdeki taahhütleri zorlamayı engelleyen belirli politikaları uygulamak için kullanılabilir.


  5. Hazırlık-Taahhüt-Msg Kancası: Hazırlama-taahhüt-msg kancası, bir taahhüt mesajı oluşturulduktan sonra yürütülür ve taahhüt mesajını değiştirmenize veya geliştirmenize olanak tanır.


Git'i daha iyi özelleştirmek için çeşitli başka kancalar da mevcuttur; bunlar Git belgelerinde bulunabilir.


Git kancaları, doğru kullanıldığında büyük potansiyele sahip bir araçtır! Biz geliştiriciler, çoğu zaman birçok karmaşık görevi çözebilecek bu tür araçların gücünü zayıflatırız.


Git Hooks'u kullanmak DevOps'u her düzeyde geliştirir, DevOps'u geliştirme döngülerine entegre etmek isteyen kuruluşlar için harika bir yol olabilir.


Bu noktaya ulaştığınız için tebrikler! Umarım bugün yeni bir şey öğrenmişsindir.