DEV Community

Cover image for GitHub Actions ile Otomatik Deployment
Ali İlteriş Keskin
Ali İlteriş Keskin

Posted on

GitHub Actions ile Otomatik Deployment

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

image1
İ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.

image2
İ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.

image3
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
Enter fullscreen mode Exit fullscreen mode

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 :)

Top comments (0)