Statik web sitelerini barındırmak için günümüzde en popüler 2 platform vardır: Netlify ve Google App Engine (GAE) Netlify, hepsi aynı platformda statik web siteleri oluşturma ve dağıtma konusunda entegre deneyim sağladığı için son zamanlarda çok popüler oldu. GAE, statik olmayan web sitelerini de desteklemesi açısından daha esnektir, ancak Netlify'ın sağladığı entegrasyon seviyesinden kesinlikle yoksundur. Öyleyse neden birçok durumda hala GAE kullanayım? Cevap basit âÃÂàgenellikle GAE daha iyi fiyatlandırma seçenekleri sunar. Aynı zamanda, bu makalede anlatacağım birkaç basit araç (GitHub Actions ve Reliza Hub) kullanarak Netlify'ın tüm özelliklerine ve daha fazlasına sahip olmanızı sağlar. Fiyatlandırma GAE + GitHub Actions kombinasyonu daha mantıklı olduğunda, önce fiyatlandırma senaryolarını ele almama izin verin. Anahtar nokta, derleme dakikalarıdır. NetlifyâÃÂÃÂs ücretsiz katmanı ayda yalnızca 300 derleme dakikası verir, ki bu hiçbir hesap için çok fazla değildir. Statik hale getirilmiş node.js uygulaması gibi bir şey kullanıyorsanız ve derlemeleriniz ortalama 2-3 dakika sürüyorsa, Netlify'da ayda yalnızca 100'den fazla derleme elde edersiniz ve bu kolayca yeterli olmayabilir. Özellikle birden fazla web siteniz varsa Netlify'da daha fazla derleme dakikasına ihtiyacınız varsa, ya fazladan 500 dakika için 7 ABD Doları ödeyin ya da 1000 dakika içeren ancak aylık 45 ABD Doları tutarında bir sonraki aşamaya geçin. Öte yandan, GitHub Actions'ta özel depolar için ücretsiz 2000 derleme dakikası ve genel depolar için sınırsız derleme dakikası elde edersiniz. Bir dokümantasyon web sitesi oluşturduğunuzu ve bunu GitHub âÃÂÃÂ'de herkese açık hale getirmeye karar verdiğinizi varsayalım, GitHub Actions âÃÂàüzerinde sınırsız derleme dakikası alırsınız ve bu da büyük bir fark Bir sonraki husus trafik maliyetleridir. Netlify, cömert olan ücretsiz katmanına dahil olan ayda 100 GB bant genişliği çıkışı sağlar. Google, günde 1 GB ücretsiz çıkış sunar, bu da ayda yaklaşık 30 GB yapar. Dolayısıyla, çıkışınız 30 GB ile 100 GB arasındaysa, Netlify'da daha iyi bir anlaşma elde edebilirsiniz. Ancak, 100 GB'ı geçtiğinizde, Netlify o ay sonraki 100 GB için sizden hemen 20 ABD Doları ücret alır. Google'ın GB çıkışı başına 0,12 ABD dolarına mal olan bir fiyatlandırma politikası vardır. Netlify'da 20$/100GB yerine 12$/100GB ÃÂàödediğiniz anlamına gelir Yani trafiğe bağlı olarak, çıkış potansiyelinden Netlify'da veya GAE'de daha iyi olabilirsiniz. Ancak çoğu durumda GAE burada da daha iyi değer sağlar Fiyatlandırmayla ilgili son söz âÃÂàyapılarınız için GitHub Actions veya CircleCI gibi bir şey kullanıyorsanız, yine de Netlify'da dağıtım yapabilirsiniz âÃÂàGitHub Actions daha esnek sistem Google App Engine Projesini Yapılandırma httpsconsole.cloud.google.com/appengine adresine giderek yeni bir proje oluşturarak başlıyoruz. Halihazırda bir projeniz varsa âÃÂàönce üstte projenizin adına tıklayın ve ardından üzerine tıklayın. **YENİ PROJE** Proje adını girin, aldığınız proje kimliğini buraya not edin (daha sonra ihtiyacınız olacak) âÃÂàbenim durumumda öyle *âÃÂÃÂevie-landing-tutorialâÃÂÃÂ* âÃÂàve **OLUŞTUR'a tıklayın Sonra şuna geçin: bu projeyi sayfanın üst kısmındaki proje seçiciden Tıklamak **Uygulama Oluştur** ve istediğiniz bölgeyi seçin. Ardından, statik uygulama için Python ve Standart ortamı seçin (ücretsiz katman yalnızca Standart ortam için geçerlidir). Bu noktada uygulamanız sonraki adımlar için hazırdır. Alan adınızı bu uygulamaya yönlendirmek için httpsconsole.cloud.google.com/appengine/settings/domains adresine gidin. ve tıklayın **Özel bir alan ekleyin Talimatları izleyin ve alanınızdan DNS'yi Google'ın sağladığı kayıtlara yönlendirin. Bu yapıldığında, Google alan adınızı otomatik olarak bu uygulamaya yönlendirecek ve ayrıca SSL sertifikasını yönetecektir. Son olarak, otomatik dağıtımlardan sorumlu olacak hizmet hesabını hazırlamamız gerekiyor. httpsconsole.cloud.google.com/iam-admin/serviceaccounts?project=your_project_id konumuna gidin (değiştirin *your_project_id *bu bağlantıda gerçek proje kimliğinizle birlikte, benim durumumda bu *evie-landing-tutorial olacaktır. Aşağıdaki menü sayfasına ulaşacaksınız: App Engine varsayılan hizmet hesabının yanındaki Eylemler sütunundaki 3 nokta simgesini tıklayın. Ve seç Açılır menüden **anahtar oluştur** seçeneği Anahtar türünüz olarak JSON'u seçin ve tıklayın **CREATE Bu, .json dosyasını makinenize indirecektir. Burada yapmamız gereken son şey, bu dosyayı base64 formatında kodlamak âÃÂàbuna daha sonra GitHub Actions'a geçerken ihtiyacımız olacak Bu, aşağıdaki gibi komut satırı kullanılarak yapılabilir: base64 your_json_file.json >key.base64 O zaman key.base64 dosyası base64 kodlu anahtara sahip olacaktır. **Güvenlik notu burada, bu json ve base64 anahtar dosyaları GAE projenizi kontrol etmenize izin verir, bu nedenle onları GitHub Actions'a ekledikten sonra (aşağıda göstereceğim gibi), parçalamanız önerilir bu dosyaları silin. Bu, cli'den aşağıdaki gibi yapılabilir: key_file_name parçala&& rm key_file_name Anahtar elde edildikten sonra, httpsconsole.developers.google.com/apis/api/appengine sayfasını ziyaret etmek için Google App Engine API'lerini âÃÂàetkinleştirmemiz gerekiyor .googleapis.com/overview ve tıklayın **ETKİNLEŞTİRME** GitHub Deposu ve GitHub İşlemlerini Ayarlama Son olarak, GitHub Depomuzu hazırlamanın zamanı geldi. Bu eğitim, Evie temasının Undraw tarafından kurulumunu kapsar. (Bu, şu anda Reliza Hub açılış sayfası için kullandığım tema!) Orijinal Evie teması burada barındırılıyor, ancak bu depoda Reliza'nın çatalını kullanacağım Daha önce başka makalelerde de belirttiğim gibi, bu günlerde inşa etme felsefem her şeyi dockerize etmek ve kullanmaktır. docker build, birden çok platformda birleşik bir CI derleme ortamı olarak. Bu nedenle, çalışan bir dockerize yapıya sahip olmak için orijinal Evie temasına göre Dockerfile, nginx yapılandırması ve güncellenmiş npm sürümleri ekledim. Şimdi yaparsak Reliza'nın Evie deposu içeriklerinde docker build komutu, 80 numaralı bağlantı noktasında belgeler olmadan Evie temasına hizmet veren nginx tabanlı bir görüntü oluşturur Şimdi GitHub Actions betiğini hazırlama zamanı. Tüm süreci basitleştiren action-hub/gcloud@master eylemini kullanacağız Eylemin ihtiyaç duyduğu 2 GitHub Actions sırrını belirleyerek başlıyoruz. GitHub deponuzdaki Ayarlar ->Sırlar'a gidin ve tıklayın Aşağıdaki 2 sırrı ayarlamak için **yeni sır**: - GCLOUD_PROJECT_ID âÃÂàbunu, projenizi oluştururken not ettiğiniz proje kimliğine ayarlayın: benim durumumda evie-landing-tutorial - GOOGLE_APPLICATION_CREDENTIALS âÃÂàyukarıdaki google hizmet hesabı için alınan base64 kodlu json-key dosyasının içeriğine ayarlayın Şimdi depoda .github dizini ve ardından bunun içinde iş akışları dizini oluşturuyorum. Ve içinde gae_build.yml oluşturuyorum. Ayrıca, GAE yapılandırmasını içeren ve sahip olduğum statik uygulama kullanım durumu için çok basit olacak olan app.yaml dosyasını eklememiz gerekiyor. Siz ve bu kodu gönderdikten sonra, GAE uygulamanıza dağıtım yapacak olan GitHub Actions derlemesini tetikleyecek âÃÂàve hizmetleriniz yayına girecek! GitHub'a sonraki her gönderme, otomatik olarak yeni bir GitHub Actions derlemesini tetikler ve GAE'de uygulamayı otomatik olarak günceller. Artık statik web siteniz için temel CICD ardışık düzenine sahipsiniz! Burada durabilir veya Reliza Hub'ı kullanarak nasıl onay ve dağıtım görünürlüğü işlevi ekleyebileceğinizi okumaya devam edebilirsiniz. BONUS: Reliza Hub'ı Kullanarak Onaylar ve Görünürlük Ekleme Her yeni yapının otomatik olarak üretime geçmesini istemediğimizi varsayalım. Bunun yerine, önce üretim dışı bir yere konuşlandırılmalarını istiyoruz ve sonra onları beğenirsek, sizin veya onaylayıcınızın (örneğin, Pazarlama Yöneticinizin) bir düğmeyi tıklaması ve üretime teşvik Şimdiye kadar anlattığım yapılandırmanın yanı sıra Reliza Hub ile bunun nasıl elde edilebileceği aşağıda açıklanmıştır. 1 âÃÂàYayın Meta Verilerinin Reliza Hub'a Akışı Öncelikle httpsapp.relizahub.com adresine gidin, GitHub ile kimlik doğrulaması yapın ve kuruluşunuzu oluşturun, benim durumumda kullanacağım *âÃÂÃÂEvie Landing TutorialâÃÂÃÂ* kuruluş adı olarak. Bir VCS Deposu eklemek için **VCS** menü öğesine ve ardından artı daire simgesine tıklayın Girdiye GitHub depo URI'nizi yapıştırın, Reliza Hub bunu otomatik olarak ayrıştıracaktır. Tıklamak **Gönder ve bu, deponuzu oluşturacaktır. Projeler menüsüne ilerleyin ve bir proje oluşturmak için artı daire simgesine tıklayın. Proje adınızı girin (Tek Bileşen (Ana) âÃÂàiçin *Evie İniş Seti sürüm şemasını kullanacağım, çünkü GAE bir bileşenden oluşan kendi sürümünü kullanıyor âà Âàolduğu gibi Reliza Hub içinde kullanacağız. Önceki adımda oluşturduğunuz VCS deposunu seçin ve tıklayın **Gönder Bu, yeni bir proje yaratacaktır. Ardından, bu yeni oluşturulan proje adına tıklayın ve proje api anahtarını oluşturmak için kilit simgesine tıklayın. Projeniz için oluşturulan API Kimliği ve API Anahtarını gördüğünüzde, GitHub Actions âÃÂàRELIZA_API_PROJECT_ID ve RELIZA_API_PROJECT_KEY'de karşılık gelen değerlerle 2 yeni sır oluşturun Şimdi, gae_build.yml betiğimizi derleme ayrıntılarını Reliza'ya yayınlamak ve ayrıca yükseltmesiz moda geçmek için güncelleme zamanı. Bu, her git gönderiminde GAE'de bir dağıtım oluşturulacağı, ancak Google'ın daha sonra manuel bir adım atılana kadar trafiği bu yeni dağıtıma geçiremeyeceği anlamına gelir. Güncellenen komut dosyası, oluşturma süresi takibinin Reliza Hub'a raporlanmasını içerir ve ayrıca GAE'de yükseltilmeyen her dağıtımın URI'sine sahip olur. Kullandığımız çeşitli bayrakların açıklamasını Reliza Go Client'ın GitHub deposunda bulabilirsiniz. GitHub Actions, anında iletme tamamlamalarında çalıştırıldıktan sonra, Reliza Hub'da sürümünüzün sayfasına gidebilir ve aşağıdaki resmi görebilirsiniz: üzerine tıkladığınızı unutmayın. **Test bitiş noktası** bağlantısı, sizi GAE'de bu kaynak kodu girişine karşılık gelen gerçek dağıtım sürümüne götürecektir âÃÂàancak henüz trafiğe hizmet verecek şekilde tanıtılmamış Reliza Hub'daki her yeni sürümün bildirimlerini almak için buradaki kılavuzu izleyerek gevşek entegrasyon da ekleyebilirsiniz. 2 âÃÂàOnay Ekleme Reliza Hub'ın Ayarlar sayfasına gidin ve alt kısmında ÜRETİM ortamı için onay matrisinizi yapılandırın. Benim durumumda, bir sürümün üretime yükseltilmesi için yalnızca PAZARLAMA'dan onay almam gerekecek. Aşağıdaki gibi: Tıklamak **Matrisi Kaydet** Sonra Reliza GitHub uygulamasını âÃÂàhttpsgithub.com/apps/reliza-hub âÃÂàkuruyorum ve Iâàöğreticisini takip ediyorum Projeye kaydettirmek için daha önce yazmıştım. Son olarak, Reliza Hub âÃÂÃÂ'den alınan onaylarla tetiklenecek olan yeni GitHub Actions iş akışını burada görebilirsiniz. Esasen bu iş akışı, Reliza Hub'ı üretim onaylı en son sürüm için sorgular ve ardından Google App Engine'den trafiği bu sürüme geçirmesini ister. Bu komut dosyasında yapılandırma gerektiren tek şey, Reliza Hub'daki proje sayfasında elde edilen proje UUID'sine ayarlanması gereken RELIZA_PROJECT_ID ortam değişkeni âÃÂÃÂ'dir: Artık, PAZARLAMA'dan onay alan en son proje sürümü, Google App Engine tarafında otomatik olarak tanıtılacakKuruluşa nasıl onaylayıcı ekleyeceğiniz ile ilgili ayrıntılar için, onaylarla ilgili eğitim videomu izleyin. 3 âÃÂàNeyin Ne Zaman Dağıtıldığına İlişkin Görünürlük Ekleyin Son olarak, Reliza Hub'da gerçekte hangi sürümün ne zaman dağıtıldığına ilişkin görünürlük eklemek istiyoruz. Bunu yapmak için önce Reliza Hub'daki Bulut Sunucuları'na gidin ve yeni bulut sunucusu oluşturmak için artı daire simgesine tıklayın Daha sonra örneğimin URI'sini giriyorum ve bu statik web sitesinde yalnızca üretim ortamım olduğu için ortamı ÜRETİM âÃÂàolarak seçiyorum. tıklama **Gönder** yeni örneğimi oluşturuyor Sonra bu yeni oluşturulan örneği seçiyorum ve api anahtarını oluşturmak için kilit simgesine tıklıyorum. API Kimliği ve API Anahtarı oluşturulduğunda, GitHub Eylemlerinde âÃÂàRELIZA_API_INSTANCE_ID ve RELIZA_API_INSTANCE_KEY'de karşılık gelen değerlerle 2 yeni sır oluşturun Bununla, önce GAE'de dağıtımı kontrol etmek ve Reliza Hub'a akışını sağlamak için bölüm eklemek üzere onay üzerine dağıtım betiğimi güncelliyorum. Ayrıca GAE uygulamamın durumunu doğrulamak için bir cron GitHub Actions iş akışı ekliyorum Bu iş akışlarından herhangi biri çalıştıktan sonra, aşağıdaki gibi örnek görünümümüzde GAE uygulamamızın Reliza Hub'daki dağıtım anlık görüntüsünü alacağız: Özet İşte bu kadar, artık GAE'ye dağıtılan GitHub Eylemleri ve Reliza Hub tarafından yönetilen onaylar ve görünürlük ile tam bir düğmeli CI CD ardışık düzenine sahibiz. Ayrıca Slack bildirimleri alabilir ve Pazarlama müdürümüzün değişiklikleri görüntülemesini ve teknik personele sormadan üretime teşvik etmek için düğmelere basmasını sağlayabiliriz. Ne kadar serin? Benimle konuşmak ve bu veya başka bir iş akışını daha fazla tartışmak isterseniz 30 dakikalık koşulsuz bir Reliza Hub demo görüşmesi ayırtın benimle àve yardım etmek için elimden gelenin en iyisini yapacağım.