CI/.CD merupakan singkatan dari Continous Integration dan Continous Deplyoment. CI/CD menjadi penghubung dari tim operations dalam melakukan integrasi kode pengujian atau testing ke perilisan kode secara otomatis ke server.
Continuous Integrations (CI) adalah proses dari penggabungan kode yang sudah dibuat oleh tim developer ke repositori kode/server yang kemudian dijalankan pengujian secara otomatis dan berkelanjutan. Pengujian otomatis pada Continuous Integrations (CI) ini bertujuan agar pemeriksaan dan memastikan kalau software dapat berjalan dengan normal.
Continuous Delivery (CD) merupakan proses lanjutan dari Continuous Integrations(CI) yang mempersiapkan perubahan kode ke deploy staging (pra-produksi) setelah pembuatan kode secara manual. Kode yang sudah masuk pada CD harus lulus dalam pengujian unit otomatis, pengujian integrasi, dan pengujian sistem. Apabila semua pengujian kode lulus dalam tahap staging, selanjutnya akan diteruskan ke proses Deployment.
Sebelum melakukan setting CI/CD dengan FTP, pastikan Anda sudah memahami fungsi-fungsi dasar git seperti yang sudah kita pelajari sebelumnya.
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/[email protected]
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*/**
- media/*
- assets/uploads/*
Setelah melakukan edit dan menambahkan kode seperti diatas pada file ftp_deploy.yml selanjutnya :
Setelah tadi kita membahas CI/CD dengan menggunakan metode FTP, selanjutnya kita akan menggunakan metode SSH.
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
Masuk ke server anda menggunakan Putty.
#!/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
Setelah selesai, edit permission atau izin pada file post-receive di server :
Apabila sudah melakukan edit pada permisson pad file post-recive, selanjutnya adalah :