CircleCI ile Otomatik Deployment Kurulumu (Ubuntu)
Bu rehberde ne öğreneceksiniz?
Bu rehberde CircleCI kullanarak GitHub’a gönderilen kodların Ubuntu sunucuya otomatik dağıtımını öğreneceksiniz.
Node.js tabanlı basit bir uygulama ile uçtan uca CI/CD hattı kuracağız.
CI/CD Nedir ve Neden CircleCI?
CI/CD, kodun test edilmesini ve dağıtılmasını otomatikleştirir.
Ön Gereksinimler
Başlamadan önce şunlar hazır olmalı:
- Ubuntu 18.04 yüklü bir VPS (örnek:
tr1-node01) - GitHub hesabı
- CircleCI hesabı
- Node.js ve npm kurulu bir ortam
- Temel Git bilgisi
1️⃣ Yerel Node.js Projesi Oluşturma
Bu adımda örnek bir Node.js uygulaması hazırlıyoruz.
mkdir circleci-test
cd circleci-test
npm init -y
- Bu komutlar proje dizini oluşturur ve npm yapılandırmasını başlatır.
Basit HTTP Sunucu
const http = require('http');
http.createServer((req, res) => {
res.write('Hello World!');
res.end();
}).listen(8080, '0.0.0.0');
- Bu kod 8080 portunda basit bir web sunucusu başlatır.
2️⃣ CircleCI Yapılandırma Dosyası
- CircleCI işlemleri .circleci/config.yml dosyasından okur.
mkdir .circleci
nano .circleci/config.yml
version: 2.1
jobs:
deploy:
docker:
- image: arvindr226/alpine-ssh
steps:
- checkout
- run: ssh -oStrictHostKeyChecking=no $USER@$IP "./deploy.sh"
workflows:
deploy-workflow:
jobs:
- deploy:
filters:
branches:
only: main
- Bu yapılandırma yalnızca main dalına gelen kodları dağıtır.
3️⃣ Projeyi GitHub’a Gönderme
git init
git add .
git commit -m "ilk commit"
git branch -M main
git remote add origin https://github.com/kullanici_adi/circleci-test
git push -u origin main
- Bu adımlar projeyi GitHub deposuna gönderir.
4️⃣ Sunucuda Deployment Kullanıcısı Oluşturma
- Güvenlik için ayrı bir kullanıcı kullanılır.
sudo useradd -m -d /home/circleci -s /bin/bash circleci
sudo ufw allow 8080
- Bu komutlar circleci kullanıcısını oluşturur ve portu açar.
5️⃣ SSH Anahtarı Oluşturma
- CircleCI’nin sunucuya bağlanması için gereklidir.
ssh-keygen -m PEM -t rsa -f ~/.ssh/circleci
-
Bu komut CircleCI uyumlu bir SSH anahtarı üretir.
-
Public key, sunucuda authorized_keys içine eklenir.
6️⃣ CircleCI Proje Ayarları
-
CircleCI panelinde:
-
Projeyi GitHub’dan ekleyin
-
Use Existing Config seçin
-
SSH Key olarak özel anahtarı girin
-
Environment Variables ekleyin:
-
USER = circleci
-
IP = sunucu_ip_adresi
7️⃣ Sunucuda deploy.sh Dosyası
- Bu dosya her deploy’da çalışır.
#!/bin/bash
cd ~/circleci-test
git pull origin main
npm install
pm2 restart app
chmod +x deploy.sh
- Bu script kodu çeker, bağımlılıkları kurar ve uygulamayı yeniden başlatır.
8️⃣ Deploy Testi
- Kodda küçük bir değişiklik yapın:
res.write('Foo Bar!');
git add .
git commit -m "deploy testi"
git push origin main
- Push sonrası CircleCI pipeline otomatik çalışır.
Sıkça Sorulan Sorular (SSS)
** CircleCI neden SSH kullanıyor?** Sunucuya güvenli ve otomatik erişim sağlar.
2. deploy.sh zorunlu mu? Hayır, ama süreci sadeleştirir.
3. Sudo yetkisi neden verilmedi? Güvenlik riskini azaltmak için.
4. pm2 şart mı? Hayır, ama Node.js için önerilir.
Sonuç
Artık GitHub’a gönderilen her kod otomatik olarak Ubuntu sunucunuza dağıtılıyor. Manuel deploy derdi bitti, kahveni alıp pipeline izleme zamanı ☕😄
Bu yapıyı Rabisu Bulut altyapısında kullanarak projelerinizi güvenle ölçekleyebilirsiniz 🚀