GitHub Actions ile Otomatik Deployment
Ali İlteriş Keskin
Posted on February 10, 2022
Canım şehrim Samsun'dan herkese selamlar. Sevdiğim insanlarla sevdiğim bir şehirde olduğum için mutluyum. Bu mutlulukla bir yazı yazmak istedim. Yazı da başlıktan anlaşılacağı gibi GitHub Actions kullanımıyla ilgili 🔥
DigitalOcean'daki Ubuntu makineme elle deploy almak istemediğim için süreci GitHub Actions ile otomatikleştirme üzerine bir yazı yazacağım.
GitHub Actions Nedir?
GitHub Actions, kaba tabirle yazdığımız kodlara bir workflow oluşturmamızı sağlamaktadır. Ben de bu yazıda GitHub Actions'ı projeyi sunucuda yayına almak ile ilgili kullanacağım.
DigitalOcean Nedir?
Bu soruyu sormayacağınıza eminim ama laf olsun torba dolsun işte 😅 Şaka bir yana DigitalOcean'da, AWS, Google Cloud gibi bir sağlayıcıdır.
Genel Hazırlık
Benim yapmak istediğim DigitalOcean'da açtığım bir Ubuntu makinede yayında olan sitemi main branche commit attığımda güncellemekti. Ben bunu nasıl yaptığımı anlatacağım. Yani makine açma gibi konulara değinmeyeceğim.
SSH Bağlantısı ile İlgili Hazırlıklar
İlk olarak GitHub repomuzda "Settings" menüsünde "Deploy keys" sekmesine tıklayalım. Oraya sunucumuzun ssh keyini eklememiz gerekli. Peki ssh keyi nasıl elde edeceğiz? Sunucunuzda ssh-keygen komutunu çalıştırın ve cat ~/.ssh/id_rsa.pub ile içeriğini koplayalayın. Sonrasında da GitHub'da "Add deploy key" diyerek ekleyin. Aynı zamanda nano .ssh/authorized_keys komutu ile bir dosya açıp içine cat ~/.ssh/id_rsa.pub çıktısını da ekleyin. Sonrasında da bu dosyaya yetki tanımlamak için chmod 700 .ssh/authorized_keys komutunu çalıştırın.
İkinci olarak yine "Settings" menüsünde "Secrets->Actions" sekmesinde "New repository secret" diyerek 3 adet key ekleyeceğiz. Bu keylerin isimlerini ben SSH_HOST, SSH_KEY ve SSH_USERNAME verdim. İçerikleri ise:
SSH_USERNAME: Sunucudaki kullanıcı isminiz. Benim root
SSH_HOST: Sunucunuzun ip adresi
SSH_KEY: Gizli ssh keyiniz. cat .ssh/id_rsa komutu ile öğrenebilirsiniz.
Son adımımıza geldik. Şimdi görseldeki gibi Actions menüsüne tıklıyoruz ve set up a workflow yourself bağlantısına tıklayıp kendi dosyamızı özelleştireceğiz. Benim dosyam şu şekilde:
deploy.yml
name: Bigcats Deploy Automation
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Deploy static site
uses: appleboy/ssh-action@v0.1.2
with:
host: ${{secrets.SSH_HOST}}
key: ${{secrets.SSH_KEY}}
username: ${{secrets.SSH_USERNAME}}
script: cd /var/www/big-cats && git pull && systemctl restart nginx.service
Yapmak istediğim şey main branchinde yaptığım değişiklikleri otomatik olarak sunucuda yayına almaktı. Bu dosya ile bunu yapıyorum.
Umarım yazı işinize yaramıştır. Anlamadığınız yerleri, isteklerinizi veya önerilerinizi bana iletbilirsiniz. Keyifli haftalar dilerim :)
Posted on February 10, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.