Daftar Isi
- 1. Menyiapkan Repositori Private di GitHub
- 2. Menginstal dan Mengatur Git di Alpine Linux
- 3. Memasang SSH Key agar Otomatisasi Tanpa Password
- 4. Menghubungkan Folder Proyek ke Repositori
- 5. Integrasi ke Skrip Deploy Bash
Solusi terbaiknya adalah menggunakan GitHub Private Repository. Tenang saja, fitur privat ini 100% gratis tanpa batasan repositori, jadi kode program Sobat tidak akan pernah bisa diintip oleh publik. Di artikel ini, saya bagikan panduan praktis dari daftar GitHub, konfigurasi di Alpine Linux, sampai integrasinya ke skrip deployment.
1. Menyiapkan Repositori Private di GitHub
Langkah awal diawali dari platform GitHub:
- Buka github.com dan buat akun jika belum punya.
- Setelah masuk, klik ikon + di pojok kanan atas lalu pilih New repository.
- Isi nama proyek Sobat, lalu pastikan memilih opsi Private. Pilihan ini penting agar kode hanya bisa diakses oleh Sobat sendiri.
- Klik Create repository.
2. Menginstal dan Mengatur Git di Alpine Linux
Alpine Linux terkenal sangat ringan dan efisien untuk server maupun kontainer. Kita hanya perlu menginstal beberapa paket dasar menggunakan apk.
Jalankan perintah ini di terminal Alpine Linux Sobat:
apk update
apk add git openssh-client Setelah itu, daftarkan identitas pengembang agar setiap perubahan kode tercatat atas nama Sobat:
git config --global user.name "Nama Anda"
git config --global user.email "email-github-anda@example.com" 3. Memasang SSH Key agar Otomatisasi Tanpa Password
Agar skrip otomatis bisa melakukan git push tanpa meminta kata sandi setiap kali kompilasi berhasil, kita akan menggunakan kunci SSH.
Buat kunci SSH baru di terminal Alpine:
ssh-keygen -t ed25519 -C "email-github-anda@example.com" Tips: Tekan Enter pada seluruh konfirmasi (kosongkan passphrase) agar skrip dapat berjalan di latar belakang tanpa terhenti meminta masukan manual.
Tampilkan dan salin kunci publik yang sudah dibuat:
cat ~/.ssh/id_ed25519.pub Tempelkan teks tersebut ke akun GitHub Sobat: masuk ke menu Settings > SSH and GPG keys > New SSH key, lalu simpan.
Uji koneksinya dengan perintah:
ssh -T git@github.com 4. Menghubungkan Folder Proyek ke Repositori
Masuk ke folder proyek yang sedang dikembangkan (misalnya folder proyek Rust), lalu jalankan perintah inisialisasi:
cd /home/ripanel/rustwp
git init
git branch -M main
git remote add origin git@github.com:USERNAME_GITHUB/NAMA_REPO.git 5. Integrasi ke Skrip Deploy Bash
Karena skrip menggunakan perintah set -e di baris awal, skrip akan langsung berhenti jika proses kompilasi gagal. Artinya, perintah Git di bawahnya hanya akan dieksekusi saat kompilasi 100% berhasil.
Berikut contoh skrip lengkap yang sudah kita padukan:
#!/bin/bash
# Hentikan skrip jika terjadi error
set -e
echo "Memulai proses kompilasi Rust..."
CARGO_TARGET_DIR=/home/ripanel/rustwp-tmp/target cargo build --release
echo "Kompilasi berhasil! Mengunggah source code ke GitHub Private..."
git add .
git commit -m "Auto-deploy: $(date +'%Y-%m-%d %H:%M:%S')" || true
git push origin main
echo "Mengirim biner dan file statis ke server produksi..."
rsync -av -e ssh /home/ripanel/rustwp-tmp/target/release/rustwp root@104.251.223.123:/home/ripanel/
rsync -av -e ssh /home/ripanel/rustwp/static/ root@104.251.223.123:/home/ripanel/myweb/s5.linuxfun.com/static/
rsync -av -e ssh /home/ripanel/myweb/s6.linuxfun.com/ root@104.251.223.123:/home/ripanel/myweb/s6.linuxfun.com/
echo "Mengeksekusi biner di server produksi..."
ssh root@104.251.223.123 << 'EOF'
chmod +x /home/ripanel/rustwp
chown -R nginx:nginx /home/ripanel/myweb/s5.linuxfun.com
chown -R nginx:nginx /home/ripanel/myweb/s6.linuxfun.com
pkill -f rustwp || true
nohup /home/ripanel/rustwp > /home/ripanel/rustwp.log 2>&1 &
echo "Biner rustwp berhasil dijalankan!"
EOF Sekarang alur kerja jadi jauh lebih efisien. Setiap kali Sobat melakukan kompilasi dan berhasil, biner langsung meluncur ke server produksi dan source code otomatis tersimpan aman di GitHub Private.
Semoga catatan kecil ini bermanfaat buat Sobat yang sedang mengulik Linux, server, dan pengembangan web. Sampai jumpa di catatan teknis dan cerita eksperimen berikutnya!