Schedule Hugo dan Auto Deploy ke Server dengan Akses SSH
Nov 4, 2021
hugo
schedule
ssh
rsync
Berikut ini tutorial schedule hugo dan langsung deploy ke server sendiri dengan rsync. Syaratnya hanya satu, harus ada akses SSH ke servernya. Kali ini agak kompleks gak apa-apa ya, worth it kok hehe..
- Login ke server dengan putty (SSH)
- Buat direktori baru dan masuk ke dalamnya:
mkdir .ssh
cd .ssh
- Lalu ketik perintah berikut:
ssh-keygen -t rsa -b 4096 -C "ganti.dengan.email.sendiri@gmail.com"
- Beri nama untuk key-nya, saya gunakan nama github-actions
- Passphrase dikosongkan saja (tekan Enter 2 kali)
- Copy isi key ke file authorized_keys:
cat github-actions.pub >> authorized_keys
- Setting secret baru di repository github dengan nama-nama ini: SSH_HOST, SSH_USER dan SSH_PRIVATE_KEY
- Isi kolom value SSH_HOST dengan IP address server
- Isi kolom value SSH_USER dengan username login SSH server
- Buka file github-actions:
nano github_actions
- Isi kolom value SSH_PRIVATE_KEY dengan isi file github-actions, pastikan dimulai dengan
-----BEGIN OPENSSH PRIVATE KEY-----
dan diakhiri dengan
-----END OPENSSH PRIVATE KEY-----
- Buka file main.yml, ganti path /home/resepcinta.my.id/public_html/ dengan path website yang dituju, lalu save. Agar mengurangi kemungkinan error silahkan ambil kodenya di sini: https://pastebin.com/raw/ruhSnzv3
name: Build Using Cron Schedule
on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
jobs:
build-and-deploy:
name: Build and Deploy
runs-on: [ ubuntu-latest ]
steps:
- name: Checkout Repo
uses: actions/checkout@v2
- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: "0.88.0"
- name: Build Static HTML
run: hugo
- name: Install SSH Key
uses: shimataro/ssh-key-action@v2
with:
key: ${{ secrets.SSH_PRIVATE_KEY }}
known_hosts: 'just-a-placeholder-so-we-dont-get-errors'
- name: Adding Known Hosts
run: ssh-keyscan -H ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts
- name: Deploy ke server dengan rsync
run: rsync -avz ./public/ ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:/home/resepcinta.my.id/public_html/
- Push atau upload manual file main.yml ke folder .github/workflows/ di repository yang bersangkutan
- Jalankan script actions secara manual lewat github
Semoga membantu. :)