Berikut adalah langkah-langkah lengkap untuk menyiapkan CI/CD di shared hosting yang mendukung akses SSH. Proses ini akan memungkinkan Anda melakukan deployment otomatis dari GitHub ke server hosting setiap kali ada perubahan di branch utama.
Persyaratan: #
- Akses SSH ke shared hosting Anda.
- Git terinstal di server (sebagian besar shared hosting yang mendukung SSH sudah memiliki Git).
- Akun GitHub tempat kode Anda disimpan.
Langkah-langkah Setup CI/CD di Shared Hosting #
1. Buat Repositori di GitHub #
- Masuk ke GitHub dan buat repositori baru untuk proyek Anda.
- Push kode Anda ke repositori ini (jika belum).
2. Login ke Shared Hosting Melalui SSH #
-
Buka terminal atau command prompt di komputer Anda.
-
Login ke server hosting Anda menggunakan perintah SSH:
ssh username@hostname
Note: Ganti
username
dengan nama pengguna danhostname
dengan nama domain atau IP server hosting Anda.
3. Siapkan Direktori untuk Aplikasi Anda di Server #
-
Tentukan di mana aplikasi Anda akan disimpan. Biasanya, direktori web hosting ada di
/home/username/public_html
atau/home/username/www
. -
Buat folder khusus untuk aplikasi Anda, misalnya:
mkdir -p ~/apps/myapp cd ~/apps/myapp
4. Inisialisasi Repositori Git di Server #
-
Di dalam direktori aplikasi (
~/apps/myapp
), inisialisasi repositori Git:git init
-
Atur repositori agar berfungsi sebagai tempat checkout saat deployment dilakukan dengan hook Git nanti.
5. Setup Hook Git untuk Deployment Otomatis #
-
Masuk ke folder
.git/hooks
:cd .git/hooks
-
Buat file
post-receive
yang akan menjalankan script deployment setiap kali ada push baru ke server:nano post-receive
-
Tambahkan script berikut ke dalam file
post-receive
:#!/bin/sh GIT_WORK_TREE=/home/username/public_html git checkout -f
- Ganti
/home/username/public_html
dengan direktori tempat aplikasi akan dijalankan di server (direktori yang bisa diakses oleh pengguna).
- Ganti
-
Berikan izin eksekusi pada file
post-receive
:chmod +x post-receive
6. Tambahkan Server sebagai Remote di Komputer Lokal #
-
Di komputer lokal, buka terminal dan arahkan ke repositori proyek Anda.
-
Tambahkan remote server sebagai tujuan
production
:git remote add production ssh://username@hostname/home/username/apps/myapp
Ganti
username
,hostname
, dan path sesuai dengan konfigurasi Anda.
7. Buat Kunci SSH untuk Autentikasi GitHub #
-
Di server hosting, buat kunci SSH (jika belum ada):
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-
Setelah membuat kunci SSH, copy isi kunci publik (
~/.ssh/id_rsa.pub
).cat ~/.ssh/id_rsa.pub
-
Salin isi kunci tersebut.
-
Masuk ke akun GitHub Anda dan tambahkan kunci publik ini ke akun Anda:
- Buka Settings > SSH and GPG keys.
- Klik New SSH key, beri nama, dan paste kunci publik tadi.
8. Setup GitHub Actions untuk Otomatisasi Deployment #
-
Di repositori GitHub Anda, buat direktori
.github/workflows/
. -
Di dalam direktori tersebut, buat file
deploy.yml
. -
Masukkan konfigurasi GitHub Actions berikut untuk melakukan deployment otomatis:
name: Deploy to Shared Hosting on: push: branches: [ master ] jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Deploy to server uses: appleboy/ssh-action@master with: host: ${{ secrets.SERVER_HOST }} username: ${{ secrets.SERVER_USER }} key: ${{ secrets.SERVER_SSH_KEY }} script: | cd /home/username/apps/myapp git pull origin master # Jalankan perintah lain jika diperlukan
-
Tambahkan secrets di GitHub:
- Masuk ke repositori GitHub Anda, pilih Settings > Secrets and variables > Actions.
- Tambahkan secrets berikut:
SERVER_HOST
: hostname atau IP server Anda.SERVER_USER
: username SSH Anda.SERVER_SSH_KEY
: Kunci privat SSH Anda yang sesuai dengan kunci publik di server.
-
Commit dan push file
deploy.yml
ini ke GitHub.
9. Uji Deployment Otomatis #
- Setiap kali Anda melakukan push ke branch
master
di GitHub, GitHub Actions akan otomatis menjalankan workflowdeploy.yml
. - GitHub Actions akan login ke server hosting, menarik perubahan, dan menerapkan update.
10. Periksa Log untuk Memastikan Deployment Berjalan #
- Di GitHub, buka tab Actions pada repositori untuk melihat hasil dari workflow.
- Anda dapat melihat output dan memastikan tidak ada error selama deployment.
Tips Tambahan #
- Testing: Jika ada perubahan besar, sebaiknya uji di lingkungan lokal atau staging sebelum push ke
master
. - Error Handling: Pastikan script
post-receive
dan workflow GitHub Actions diatur dengan benar untuk menangani error. - Backup: Sebelum deployment besar, backup file penting di server Anda.
Dengan setup ini, Anda dapat melakukan deployment otomatis ke shared hosting Anda setiap kali push ke GitHub.