Automation Deploy ke Server dengan Github Actions

Dalam postingan Saya kali ini, Saya akan berbagi sedikit informasi tentang bagaimana cara Automation Deploy ke Server dengan Github Actions. Sebelumnya bagi yang belum tahu apa itu Automation Deploy, Automation Deploy merupakan suatu cara / metode untuk membangun suatu aplikasi secara otomatis. Otomatisasi ini sangat berperan penting dalam pembangunan suatu aplikasi, yang mana akan membuat pembangunan berjalan lebih cepat, efisien dan juga terstruktur. Oleh karenanya Saya akan membuat tutorial sederhana bagaimana Automation Deploy itu berjalan.

Yang di perlukan :

  • Akun GitHub
  • Repositori Proyek pada GitHub
  • Server dengan Akses SSH, sudah Terinstal sshpass, Git dan terhubung ke Github

Jika kamu sudah memiliki apa yang di perlukan, kita langsung saja pada tutorialnya :

1. Clone repositori proyek yang kamu miliki kedalam Servermu.

Hal pertama yang perlu kamu lakukan adalah melakukan clone repositori kedalam server kamu.

# Enter your server with ssh
# ssh -p [port] [user]@[yourIpServer]
# Example
ssh -p 22 root@192.168.1.1


# Cd to directory you want
# Example
cd /var/www/

# Clone your repository with git clone
# git clone [your repo link]
# Example
git clone https://github.com/lukman134/sample.git

2. Buat Shellscripts yang berfungsi mengupdate proyekmu.

Shellscripts ini akan berjalan secara otomatis dengan menggunakan pemicu. Pemicu yang saya gunakan ada pada saat developer melakukan git push ke GitHub. Buat file shellscripts dengan nama deploy-sample.sh (contoh),

# cd to directory you want to place shellscript file
# Example
cd /usr/local/sbin/

# create shellscript file
vim deploy-sample.sh

lalu isikan perintah berikut ini :

#!bin/bash

cd /your/repository/project && git fetch origin main && git pull origin main
echo "Deployment Finished"

3. Atur environment variable proyekmu di dalam GitHub.

Kamu perlu membuat environmet variabel pada repositori proyek di GitHub kamu. Variabel ini nantinya akan digunakan GitHub Actions untuk mengakses servermu.

  • Masuklah ke akun GitHub-mu,
  • setelah itu masuklah kedalam repositori proyekmu,
  • buka settings > secrets.
  • Di dalam secrets ini, masukkan variabel variabel penting yang di butuhkan  untuk automation deploy ke server. masukkan lah ssh host, ssh port, ssh user dan ssh password dari servermu. Tenang saja, GitHub akan mengenkripsi nilai dari variabel yang sudah kamu buat. Jadi tidak akan ada yang tahu isinya.

 

4. Buat Github Actions untuk mengkonfigurasi automation deploy

Terakhir, kita buat konfigurasi untuk melakukan automation deploynya.

  • Masuklah ke akun GitHub-mu,
  • setelah itu masuklah kedalam repositori proyekmu,
  • buka Actions, lalu scroll sampai ke bagian Automation,
  • Pilih Manual Workflow, lalu klik Configuration,
  • Berikan nama file sesuai keinginanmu,
  • Isi file konfigurasi dengan ini :
# This is a basic workflow to help you get started with Actions

name: CI

# Controls when the action will run. 
on:
  # Triggers the workflow on push or pull request events but only for the main branch
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v2

      # Runs a set of commands using the runners shell
      - name: Sample Automation Deploy
        run: |
          VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,')
          which ssh-agent || ( yum install openssh-client -y )
          eval $(ssh-agent -s)
          sshpass -p ${{ secrets.SSH_PASSWORD }} ssh -p ${{ secrets.SSH_PORT }} -o StrictHostKeyChecking=no ${{ secrets.SSH_USERNAME }}@${{ secrets.SSH_HOST }} "cd /usr/local/sbin && sh deploy-sample.sh"

Sedikit penjelasan :

Konfigurasi ini berfungsi untuk mengatur tindakan apa saja yang di inginkan jika terdapat updatean pada repositori proyek. Di contoh yang saya buat ini, setiap ada push ataupun pull request pada branch main, akan memicu si GitHub Action ini untuk menjalankan perintah yang ada dibagian # Runs a set of commands using the runners shell . Perintah yang saya masukkan adalah perintah untuk masuk kedalam server, lalu menjalankan shellscript deploy-sample.sh yang sudah dibuat pada langkah ke-2.

Setelah konfigurasi di masukkan, selanjutnya klik Start Commit, klik Commit New File maka konfigurasi akan berjalan, kamu dapat melihat langsung prosesnya seperti contoh di bawah ini :

Selesai, untuk selanjutnya setiap ada push ataupun pull request ke branch main, Automation Deploy akan berjalan. Sekian tutorial mengenai Automation Deploy ke Server dengan GitHub Actions yang dapa Saya bagikan. Semoga tulisan ini dapat bermanfaat, Terima kkasih 😀

 

Baca Juga :

Install Jenkins dan Nginx dengan Docker-compose

 

 

Lukems: Hanya manusia biasa yang hidup sederhana dan mempunyai keluarga kecil yang bahagia

This website uses cookies.