Untuk membuat script otomatis CI/CD dari GitHub ke DigitalOcean, kita bisa menggunakan GitHub Actions bersama dengan DigitalOcean. Berikut adalah langkah-langkah yang perlu diikuti:
- Persiapkan Droplet di DigitalOcean: Pastikan Anda memiliki droplet yang sudah disiapkan di DigitalOcean.
- Install Nginx dan Node.js di Droplet: Jika Anda menggunakan aplikasi Node.js, install Nginx dan Node.js di droplet Anda. Gunakan perintah berikut: sudo apt update sudo apt install nginx sudo apt install nodejs sudo apt install npm
Buat Kunci SSH: Buat kunci SSH untuk akses dari GitHub ke droplet Anda.
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- Tambahkan Kunci Publik ke DigitalOcean: Salin isi file
~/.ssh/id_rsa.pub
dan tambahkan ke bagian “SSH Keys” di DigitalOcean. - Tambahkan Kunci Privat ke GitHub: Tambahkan isi file
~/.ssh/id_rsa
ke Secrets GitHub (Settings -> Secrets) dengan namaDO_SSH_KEY
. - Buat GitHub Action Workflow: Buat file
deploy.yml
di folder.github/workflows
di repository Anda.
Berikut contoh isi file deploy.yml
:
name: CI/CD Pipeline on: push: branches: - main jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Setup SSH run: | mkdir -p ~/.ssh echo "${{ secrets.DO_SSH_KEY }}" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa ssh-keyscan -H 123.45.67.89 >> ~/.ssh/known_hosts - name: Copy files via SCP run: scp -r -o StrictHostKeyChecking=no ./* user@123.45.67.89:/path/to/your/project - name: SSH and deploy run: ssh user@123.45.67.89 << 'EOF' cd /path/to/your/project npm install pm2 restart all exit EOF
Gantilah 123.45.67.89
dengan alamat IP droplet Anda dan /path/to/your/project
dengan path yang sesuai di droplet Anda.
- Instal dan Konfigurasi PM2 di Droplet: Jika belum diinstal, instal PM2 untuk manajemen proses Node.js: sudo npm install -g pm2 pm2 startup
Kemudian, jalankan aplikasi Anda menggunakan PM2:
pm2 start app.js --name "myapp" pm2 save
Dengan langkah-langkah ini, setiap kali Anda mendorong perubahan ke cabang main
di GitHub, workflow GitHub Actions akan secara otomatis mengirimkan kode Anda ke droplet di DigitalOcean dan memulai ulang aplikasi Node.js menggunakan PM2.