Cara Mudah Setting CI/CD di Github

CI/CD pipeline merupakan praktik DevOps untuk mempermudah proses pengembangan software

Handoyo Saputra | 20 Juli 2022

Ci CD

CI/CD adalah singkatan dari Continuous Integration dan Continuous Deployment (atau Continuous Delivery). Ini adalah praktik dalam pengembangan perangkat lunak yang bertujuan untuk mengotomatisasi dan mempermudah proses pengembangan, pengujian, dan pengiriman perangkat lunak.

Continuous Integration (Integrasi Berkelanjutan) melibatkan penggabungan secara otomatis kode yang dibuat oleh berbagai anggota tim pengembangan ke dalam satu repositori bersama. Tujuannya adalah untuk mencegah konflik yang muncul akibat perubahan yang dilakukan oleh berbagai anggota tim. Dengan melakukan integrasi secara teratur, tim dapat menemukan dan mengatasi masalah integrasi lebih cepat.

Continuous Deployment (Pengiriman Berkelanjutan) atau Continuous Delivery (Pengiriman Berkelanjutan) melibatkan otomatisasi proses pengujian dan pengiriman perangkat lunak ke lingkungan produksi secara berkesinambungan.

Setiap kali ada perubahan kode yang diintegrasikan, proses pengujian otomatis akan dijalankan untuk memastikan bahwa perangkat lunak masih berfungsi dengan baik. Jika pengujian berhasil, perangkat lunak dapat secara otomatis diterapkan ke lingkungan produksi.

Dengan menggabungkan CI/CD, tim pengembangan dapat menghasilkan perangkat lunak dengan lebih cepat, lebih andal, dan lebih efisien. Ini juga membantu mengurangi risiko kesalahan manusia dan memungkinkan perubahan-perubahan kecil diterapkan lebih sering, sehingga mendukung pengembangan perangkat lunak yang adaptif dan responsif terhadap kebutuhan pasar dan pengguna.

Cara Setting CI/CD di Github Via FTP

Sebelumnya pastikan anda sudah memahami fungsi dasar git seperti clone, add, commit, fetch, push dan pull.

  • Buat akun FTP di server anda.
  • Siapkan repository di Github dan clone di komputer lokal anda.
  • Buka repository di komputer lokal kemudian buat file baru di folder .github/workflows/ftp_deploy.yml
  • Edit file ftp_deploy.yml sebagai berikut, sesuaikan nama branch dan file yang ingin anda exclude. Disini saya menggunakan branch main.
on:
  push:
    branches:
      - main
name: 🚀 Deploy website on push
jobs:
  web-deploy:
    name: 🧑‍💻 Deploy
    runs-on: ubuntu-latest
    steps:
    - name: 📨 Get latest code
      uses: actions/checkout@v3

    - name: 🗃️ Sync files
      uses: SamKirkland/FTP-Deploy-Action@v4.3.4
      with:
        server: ${{ secrets.FTP_HOST }}
        port: ${{ secrets.FTP_PORT }}
        server-dir: ${{ secrets.FTP_DIR }}
        username: ${{ secrets.FTP_USER }}
        password: ${{ secrets.FTP_PASS }}
        exclude: .env*
          - .git*
          - .git*/**
          - photos/*
          - assets/images/profile/*
  • Buka repository anda di Github kemudian klik setting -> Secrets and Variables -> Actions.
  • Klik New Repository Secret. Pada bagian name masukkan FTP_HOST kemudian valuenya isikan domain atau alamat IP server anda lalu simpan.
  • Klik New Repository Secret. Pada bagian name masukkan FTP_DIR kemudian valuenya isikan path direktori anda di server lalu simpan.
  • Klik New Repository Secret. Pada bagian name masukkan FTP_PASS kemudian valuenya isikan password FTP server anda lalu simpan.
  • Klik New Repository Secret. Pada bagian name masukkan FTP_USER kemudian valuenya isikan username FTP server anda lalu simpan.
  • Klik New Repository Secret. Pada bagian name masukkan FTP_PORT kemudian valuenya isikan port FTP yaitu 21 lalu simpan.
Github CI/CD setting secrets
  • Upload file ftp_deploy.yml dari komputer lokal anda ke repository server dengan git push.
  • Untuk mengecek apakah CI/CD sudah berjalan dengan benar silakan tambahkan file baru di komputer lokal anda kemudian lakukan git push. File tersebut seharusnya akan muncul pada server anda. Jika masih belum berhasil, cek erornya pada menu Actions di github.
Github Actions

Cara Setting CI/CD di Github Via SSH

Sebelumnya pastikan kalian sudah memahami fungsi dasar git seperti clone, add, commit, fetch, push dan pull.

  • Buat akun SSH di server anda.
  • Siapkan repository di Github dan clone di komputer lokal anda.
  • Buka repository di komputer lokal kemudian buat file baru di folder .github/workflows/deploy.yml
  • Edit file deploy.yml sebagai berikut dan sesuaikan nama repository dan branch anda. Disini saya menggunakan 2 branch yaitu main dan development.
name: Deploy
on: 
  push:
    branches:
      - main
      - development
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - name: Build main
      if: github.ref == 'refs/heads/main'
      uses: appleboy/ssh-action@master
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        password: ${{ secrets.PASSWORD }}
        port: ${{ secrets.PORT }}
        script: |
          sudo branch=main /var/repo/nama-repository.git/hooks/post-receive
    - name: Build development
      if: github.ref == 'refs/heads/development'
      uses: appleboy/ssh-action@master
      with:
        host: ${{ secrets.HOST }}
        username: ${{ secrets.USERNAME }}
        password: ${{ secrets.PASSWORD }}
        port: ${{ secrets.PORT }}
        script: |
          sudo branch=development /var/repo/nama-repository.git/hooks/post-receive
  • Buka repository anda di Github kemudian klik setting -> Secrets and Variables-> Actions.
  • Klik New Repository Secret. Pada bagian name masukkan HOST kemudian valuenya isikan alamat IP server anda lalu simpan.
  • Klik New Repository Secret. Pada bagian name masukkan PASSWORD kemudian valuenya isikan password SSH server anda lalu simpan.
  • Klik New Repository Secret. Pada bagian name masukkan USERNAME kemudian valuenya isikan username SSH server anda lalu simpan.
  • Klik New Repository Secret. Pada bagian name masukkan PORT kemudian valuenya isikan port SSH yaitu 22 lalu simpan.
Github Secrets
  • Masuk ke server anda menggunakan Putty.
  • Setting SSH key untuk menghubungkan server anda dengan akun Github, anda bisa membuat SSH key baru atau menggunakan SSH key yang sudah ada di folder /root/.ssh/
  • Buka website Github kemudian klik Akun -> setting -> SSH and GPG key -> new SSH key.
  • Masukkan SSH key dari server anda kemudian simpan.
  • Kembali ke server anda di Putty.
  • Buka /var/repo/ kemudian clone repository anda menggunakan perintah git clone --bare {link-repository}
  • Masuk ke dalam repository yang telah anda clone kemudian buka folder /hooks
  • Edit file post-receive sebagai berikut dan sesuaikan dengan nama repository anda. Anda bisa mengunduhnya terlebih dahulu menggunakan FileZilla.
#!/bin/bash
cd /var/repo/nama-repository.git
if [ $branch = main ]
  then 
    git fetch -q origin main:main
    git --work-tree=/var/www/nama-folder-server --git-dir=/var/repo/nama-repository.git checkout main -f
    chown -Rf www-data:www-data /var/www/nama-folder-server
    echo "Success pull main"
elif [ $branch = development ]
  then 
    git fetch -q origin development:development
    git --work-tree=/var/www/nama-folder-server-development --git-dir=/var/repo/nama-repository.git checkout development -f
    chown -Rf www-data:www-data /var/www/nama-folder-server-development
    echo "Success pull development"
fi
  • Edit permissions pada file post-receive di server sebagai berikut:
    • Owner = Read, Write, Execute
    • Group = Read
    • Public = Read
    • Numeric = 744
  • Hapus semua file di folder /hooks selain post-receive.
  • Buat folder baru di /var/www/{nama folder server} untuk production.
  • Buat folder baru di /var/www/{nama folder server development} untuk development.
  • Upload file deploy.yml dari komputer lokal anda ke repository server dengan git push
  • Untuk mengecek apakah CI/CD sudah berjalan dengan benar silakan tambahkan file baru di komputer lokal anda kemudian lakukan git push. File tersebut seharusnya akan muncul pada server anda di folder /var/www/{nama folder server}. Jika masih belum berhasil, cek erornya pada menu Actions di github.

TagsCoding
TagsTips & Trick
visibility 10.162

Artikel Lainnya

Artikel Terbaru