Dalam proses development, terkadang sesuatu yang mempercepat kinerja tim sangat dibutuhkan oleh sebagian besar orang.
Salah satu cara meningkatkan kinerja tim adalah dengan membuat CI/CD deployment. CI/CD deployment adalah cara kita untuk mengunggah hasil kerja kita dalam sebuah branch tertentu pada git ke server secara otomatis. Sebelum masuk ke materi ini alangkah baik kita mengerti istilah-istilah berikut:
CI/CD
CI/CD adalah metode untuk sering mengirimkan aplikasi ke pelanggan dengan memperkenalkan otomatisasi ke dalam tahapan pengembangan aplikasi.Konsep utama yang dikaitkan dengan CI/CD adalah continuous integration, continuous delivery, dan continuous deployment. CI/CD adalah solusi untuk masalah mengintegrasikan kode baru yang dapat menyebabkan tim pengembangan dan operasi menjadi sangat dipermudah.
Secara khusus, CI/CD memperkenalkan otomatisasi berkelanjutan dan pemantauan berkelanjutan sepanjang siklus hidup aplikasi, mulai dari fase integrasi dan pengujian hingga pengiriman dan penerapan. Secara keseluruhan, praktik terhubung ini sering disebut sebagai "pipeline CI/CD" dan didukung oleh tim pengembangan dan operasi yang bekerja bersama secara gesit dengan pendekatan DevOps atau rekayasa keandalan situs (SRE).
SSH
Secure Shell Protocol (SSH) merupakan protokol jaringan kriptografi untuk mengoperasikan layanan jaringan secara aman melalui jaringan yang tidak aman.[1] Aplikasinya yang paling menonjol adalah login jarak jauh dengan menggunakan command line. SSH biasa digunakan oleh para devOps atau server administrator untuk mengolah server, contohnya untuk melakukan installasi aplikasi, menjalankan aplikasi, dan lain sebagainya.
Seiring pengembangan zaman, SSH juga digunakan untuk deployment aplikasi web (backend/front end) melalui CI/CD.
Penerapan SSH-Action CI/CD
Karena gambar sampul artikel ini saya buat dengan logo github, saya buat contoh bagaimana cara penerapan deployment aplikasi node.js menggunakan github workflow.
Buat file .github/workflow/namafile.yml pada repository anda. lalu tuliskan kode berikut:
#nama ci/cd
name: publish ke server
#menjelaskan bahwa hanya berjalan ketika ada push di branch master
on:
push:
branches:
- master
jobs:
deploy-intima:
runs-on: ubuntu-latest #Sistem operasi yang digunakan
steps:
- name: Mengunggah ke server
uses: appleboy/ssh-action@master # package yang bisa kita gunakan untuk menjalankan ssh
with: # We set all our secrets here for the action, these won't be shown in the action logs
host: ${{secrets.HOST}} #variable host / ip vps anda
username: ${{secrets.USER}} #user ssh anda
password: ${{secrets.PASSWORD}} #password ssh anda
port: ${{secrets.PORT}} #port ssh anda
script: |
cd /ke/path/aplikasi
git pull
PATH=${{secrets.NPM_BIN}}
npm install
pm2 restart aplikasi
beberapa penjelasan sudah saya tuliskan pada comment code diatas. Selanjutnya, untuk script akan saya jelaskan di bawah:
1. cd /ke/path/aplikasi adalah cara kita menuju ke directory aplikasi kita
2. git pull adalah cara untuk mengambil perubahan dari repository anda
3. PATH=${{secrets.NPM_BIN}} adalah opsi bagi pengguna nvm agar bisa menjalankan npm. Sedangkan secrets diambil dari menu setting->secrets->actions pada repository github anda
4. npm install adalah untuk menginstall package
5. pm2 restart aplikasi adalah untuk merestart aplikasi yang telah kita deploy pada saat awal clone repository di server