Skip to content

Bot sistemi (Travis-CI) #85

@bugra9

Description

@bugra9

Bazı işlemlerin kendi kendine yapılması için yeni bir sistem kuralım. Buradaki amaç, her işlemden sonra bir bilgisayarın gerekli işlemleri yapması ve oluşan değişiklikleri Github'a geri göndermesi. Bunun içinse en popüler servis olan Travis-CI'yi kullanabiliriz. Bu kaydı bu sistemi tartışmak ve geliştirmek için açtım.

Çalışma Mantığı
Dosyalar üzerinde bir işlem yapıldığında ya da pull request geldiğinde Travis CI'ye ait bilgisayarlar tetiklenir ve yazdığımız betikler çalıştırılır. Bu betikler ile yapılan değişiklikler Github'a işlenir.

Birkaç betiği travis-ci diye oluşturduğum dala sistemli şekilde yazdım. Uygun olduğunda master dalı ile birleştiririz.

Sistem
Sistemin iyi anlaşılabilmesi için aşağıda belirtilen dört parçada inceleyebiliriz.

  • Dosya İşlemleri
  • Zamanlanmış Görev
  • Test
  • Erişim Yetki Kontrolü

Dosya İşlemleri
Github üzerinde bir işlem yapıldıktan sonra onu istenilen hale getirmek için betikler yazalım. Örnek olarak hali hazırda şu üç betiği yazdım.

  • Bir makale eklendiyse veya değiştirildiyse o makaleden yeni pdf oluşturma.
  • Makale için yeni bir resim eklendiyse 370X220 ve 80 boyutlarında yeni küçük resim oluşturulması.
  • Yeni bir resim eklendiğinde resmin kalitesini bozmadan boyutunun düşürülmesi.

Bunlar geliştirilebilir ve yeni betikler eklenebilir. Örneğin;

  • Sass dosyasının css dosyasına dönüştürülmesi
  • Bir makale silindiğinde ona ait dosyalarında silinmesi
  • Bir makalenin adresi değiştirildiğinde ona ait dosyaların adresinin de değişmesi.
    vs. vs.

Bu kısım en can alıcı noktaydı ve bizi büyük bir yükten kurtaracağını düşünüyorum. Bu kısımdan sonraki yazdıklarım yapılmasa da olur ama olursa sisteme canlılık katacaktır.

Zamanlanmış Görev
Bu botu yapmamızın temel nedeni bu portal sisteminin statik yapıda olması. Bundan dolayı gerçekleştirilemeyen işlemlerin bot ile yapılmasını sağlayarak sisteme dinamiklik katıyoruz.

Botun her işlemden sonra çalışmasının yanı sıra belirli bir zaman aralığında da çalışması gerekebilir. Bu tarz işlemleri bu kategori altında değerlendiriyorum. Örnek olarak her sabah saat sekizde Google Analytics verileri alınıp bu verilere göre anasayfanın sağındaki "En Çok Okunanlar" kısmında bulunan makaleler değiştirilebilir.

Test
Test yaparsak gelişim sürecinin aşırı derecede artacağını düşünüyorum. Örneğin arayüzde bir değişiklik olup olmadığını kontrol eden bir betik, bilgisayar, tablet ve mobil ekranlarda bir kayma olup olmadığına bakan başka bir betik gelişim sürecini oldukça hızlandırabilir. Böylece herkes bir değişiklik yaparken bunu yaptım ama acaba başka bir yerden patlama oldu mu gibi bir soruyu akıllarına getirmezler.

Erişim Yetki Kontrolü
Herkes her şeye yetişemez. Tüm işleri parçalara ayrırarak her parça ile başka kişilerin uğraşması yönetimi kolaylaştırır. Bu kısımdaki betikler örnek olarak şu işlemleri yapabilir;

  • 5 makaleden fazla makalesi olan kişinin pull request ile gönderdiği makale otomatik sisteme eklenir. Ayrıca kendi makalelerini düzenleme işlemi otomatik kabul edilir.
  • İmla kontrolü yapması için bulunan kişiler her makaleyi düzenleyebilir.
  • Bozuk resimleri kontrol eden kişiler sadece makalelerdeki resimleri düzenleyebilir.
    vs. vs.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions