Misaliperver: Npm Paketlerinizi Otomatik Yükseltin


Genellikle npm paketi yazarken atladığımız bizi gereksiz yere uğraştıran can sıkıcı bir işlemi otomatik olarak nasıl çözebiliriz bunun üzerine kafa yoralım istiyorum.

Küçük bir örnek proje üzerinden bunu ele alabiliriz.

Projelerimizde ortak olarak kullandığımız bazı fonksiyonlar var diyelim.
Örneğin timeparser, bussiness logicten birazcık karışım mesela proje içinde sıkça kullandığımız bir kategori parsing işlemi olsun.
Bunların hepsi ortak ama bir projede yeniledik diğerlerinde de tek tek gidip ilgili satırı bul değiştir uğraşmaktan bıktık.
Bu fonksiyonların hepsini utils diye bir npm paketinde tutalım diye karar verdik diyelim.

Npm paketini oluşturduk, github' a yükledik. Diğer projeler ile bağlantılarını yaptık. Projelerde her zaman son versiyon üzerinden işlem yapması için package.json klasörünü ayarladık.

Yeni bir talep üzerine ilerde diğer projelere de eklenebilecek bir utils fonksiyonu geldi diyelim.

Yeni bir branch açtık. Geliştirmeyi tamamladık, unit testlerini yazdık. package.json klasörünü güncelledik. Review'dan geçti. Deploy ettik.
Sonrasında bump diye bir yeni commit girdik. package.json klasöründe npm versiyonunu güncelledik. Gönderdik. Sonra bilgisayarımıza döndük ve npm publish diyerek ilgili utils' i npm e gönderdik.

Ben yazarken yoruldum..



Yukarıda README.md klasöründe biraz yazdım ama aşama aşama burada ne yaptığımızı inceleyelim isterim.

Öncelikle daha önce workflow ile uğraşanlar için en üstteki event listen dikkatinizi çekmiştir. genellikle orada branch naming üzerinden işlem yapılır. Bizim ihtiyacımız tagging üzerinden olacağından bu şekilde ilerliyoruz.

on:
push:
tags:
- "*"

Üç adet jobtan oluşan bir workflow umuz var ve aşama aşama;

  1. job_tag_control
  2. job_npm_tag_control
  3. job_publish
İlk job 'ımız bizim Github üzerinden oluşturduğumuz tag 'in doğru bir formatta olup olmadığını kontrol ediyor. number.number.number formatında oluşturmamız gerekiyor. Bu şekilde değilse diğer aşamalara geçmeden action' ın hata vermesini istiyoruz.

İkinci job 'ımız bizim npm paketimizin mevcut versiyonunu öğrenip yeni versiyon numarısından küçük olup olmadığını kontrol ediyor. Yeni oluşturduğumuz versiyon numarası mevcut paket versiyonundan tabiki büyük olması gerekiyor. Yoksa action hata vermeli ve deployment yapılmamalı.

Üçüncü job 'ımız her şey bizim için doğru bir şekilde ilerlediyse, package.json içerisindeki versiyon numarasını belirlediğimiz versiyon tag 'ına göre yükseltiyor. Bunu main/master branch 'e commitliyor. Son olarak npm tarafına deploy ediyor.

Burada secrets içerisindeki NPM_PUBLISH_TOKEN bizim npm paketini yüklemek için kullandığımız npm panelinden publisher yetkisiyle create ettiğimiz token aslında. Bunu da projemizin secretları içerisinde belirttiğim isimlendirme ile eklediğimizde nur topu gibi bir npm bumper workflow 'u kurgulamış oluyoruz.

Her şeyden önce sağlıklı bir yaşam dileğiyle.. 

Yorumlar