Implementasi CI CD With Github Actions Part1

Introduction

CI/ CD merupakan sebuah jembatan antara tim operasional dan development untuk melakukan automasi pembangunan, testing, dan perilisan aplikasi. CI/CD juga berguna dalam membantu developer dan tester dalam melakukan rilis maupun update software dengan lebih cepat dan aman.

CI/CD merupakan pekerjaan yang dilakukan oleh para DevOps Engineer, dimana dia bertanggung jawab untuk melakukan deployment, build dan testing otomatis dari code yang ditulis oleh programmer, nah pada kesempatan kali ini saya akan mengimplementasikan CI CD menggunakan Github Actions.

Github Actions sendiri adalah sebuah fitur yang ada di github untuk melakukan automation dengan menggunakan fitur workflow.

Skemanya sendiri GitHub akan membuat folder baru di dalam direktori .github/workflow. Folder workflow ini akan dibaca oleh GitHub untuk menjalankan semua Action yang kita definisikan. Awalnya saya bingung untuk menambahkan sebuah Actions karena saya adalah orang yang cenderung melakukan praktik terlebih dahulu dan membaca dokumentasi belakangan), kesempatan kali ini akan kita praktikan implementasi CICD di github actions dengan menggunakan Node JS.

Prepare

  • Visual Studio code / text editor favorit kalian
  • Server ubuntu yang sudah di install nodejs bisa klik link ini untuk cara installnya.
  • Dan sebuah repo nodeJS bisa kalian download disini dan pastikan anda sudah melakukan clone di server .
  • Account GitHub untuk dokumentasi atau Guide github actions klik link ini.

Implementasi CI CD With Github Actions

Step 1 – Create Workflows

  • Sebelumnya Repo tersebut kalian download/clone kemudian push di account github kalian sendiri.
  • Masuk ke menu Github Actions

Sebenarnya kita bisa menggunakan 2 cara atau metode untuk membuat workflow :

  1. bisa cara manual dengan mengcreate folder & filenya lalu kemudian commit atau
  2. menggunakan cara kedua yaitu tinggal set up templatenya saja

Nah yang saya gunakan adalah metode ke 2.

  • Disini terserah kita mau menamakan file yamlnya apa, contoh disini saya buat "node.js.yml"
  • Dan disini kita akan merubah beberapa code yang tidak kita gunakan, nah disini source codenya dia menggunakan bahasa yaml, sebelumnya kalian bisa lihat juga artikel saya mengnai yaml berikut ini : https://igunawan.com/tag/yaml/
  • Source code ada beberapa perubahan seperti berikut :
name: Calculate-test CI -> saya ganti

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:

    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [12.x, 14.x] --> kita pengetesanya menggunakan sampai versi 14 saja
        
    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v2
      with:
        node-version: ${{ matrix.node-version }}
        cache: 'npm'
    - run: npm ci
    - run: npm run build --if-present
    - run: npm test

Nah pada syntax diatas kita hanya melakukan testing running nodejs yang dimana menggunakan versi 12-14 saja dan mencoba meruningkan npm test.

  • Selanjutnya adalah commit dengan memberikan module commit bisa default atau sesuai kalimat kita sendiri.

Step 2 – Check Running CI

  • Kemudian masuk ke menu Github Actions disitu akan terlihat workflow yang kita buat tadi, karena tadi saya ada beberapa perubahan maka nama commit saya update.js.yml, untuk commit sendiri menyesuaikan yang kita buat atau yang kita commit tadi.
  • Jika proses CI berjalan dia akan berwarna kuning seperti ini
  • Dan jika workflow yang kita buat berhasil maka akan ada tanda checklist warna hijau dengan begitu tandanya kita berhasil melakukan Continouse integrations menggunakan GitHub.

Step 3 – Menguji Workflows

Selanjutnya kita akan mencoba melakukan pengetesan atau menguji CI / workflows yang kita buat di GitHub actions tadi. Kita akan mengujinya dengan skenario bahwa salah satu code kita rubah/sengaja disalahkan seolah olah bahwa code yang kita push ke repo itu error dan harus di perbaiki.

  • Nah disini kita buka code di handlersnya dan coba menyalahkan codinganya

a. Letak file yang akan kita rubah

b. Di code tersebut menandakan add adalah tambah tapi disini kita akan merubahnya menjadi pengurangan dengan mengganti symbol “+” menjadi “-“

c. Rubah symbol , lalu kemudian save

  • Kemudian lakukan commit dan push ke Repo kita:

Sebelum push kita melakukan pull terlebih dahulu mengingat tadi kita melakukan adding Workflows di github actions

$ git pull origin master
Username for 'https://github.com': gunawan-d
Password for 'https://gunawan-d@github.com':
remote: Enumerating objects: 11, done.
remote: Counting objects: 100% (11/11), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 10 (delta 3), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (10/10), 1.89 KiB | 3.00 KiB/s, done.
From https://github.com/gunawan-d/calculate-bwa
   67c8e68..aa48d8b  master     -> origin/master
Merge made by the 'recursive' strategy.
 .github/workflows/node.js.yml | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)
 create mode 100644 .github/workflows/node.js.yml

Commit lalu push :

$git status
$git add .
$git commit -m "make a error handlers"
$git push origin master
Username for 'https://github.com': gunawan-d
Password for 'https://gunawan-d@github.com':
Enumerating objects: 15, done.
Counting objects: 100% (12/12), done.
Delta compression using up to 8 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (7/7), 729 bytes | 243.00 KiB/s, done.
Total 7 (delta 3), reused 0 (delta 0)
remote: Resolving deltas: 100% (3/3), completed with 2 local objects.
To https://github.com/gunawan-d/calculate-bwa.git
   aa48d8b..d202fc1  master -> master

  • Kemudian kita check di Github actionsya dia akan melakukan running jobs otomatis setelah kita push repository
  • Hasilnya pasti akan error karena kita melakukan perubahan code yang tidak semestinya

Nah error tersebut adalah tanda bahwa code yang kita buat harus di check lagi sebelum di push , selain itu notif error akan terkirim ke email account github kita sebagai penanda bahwa kita harus melakukan fixing bug tsb.

Selamat Mencoba

Leave a Reply

Your email address will not be published. Required fields are marked *