GitHub Actions: Meningkatkan Otomatisasi dalam Pengembangan Perangkat Lunak/Software

 Hi, Saya Nita Septiani. Kali ini saya akan sharing yang saya ketahui dan pahami tentang github action, kebetulan github action ini membantu saya sebagai seorang devops engineer dan melakukan pekerjaan automation atau pun CI/CD. disini kita akan mengenal apa itu github action, ilustrasi sederhana, konsepnya sampai dengan sebuah studi kasus sederhana beserta step by step implementasinya. 

Ok, kita mulai dengan sebuah ilustrasi yang bisa menggambarkan github action. mungkin kamu pernah naik kereta api dan pastinya kamu sudah terbiasanya dengan aktivitas yang ada di stasiun kereta. dibawah ini saya mencoba mengilustrasikan github action di sebuah stasiun kereta apa.

Ilustrasi GitHub Actions: “Stasiun Kereta Api Otomatis”

Dalam sebuah stasiun kereta api, GitHub Actions bisa dibandingkan dengan sistem otomatis yang mengelola kedatangan, keberangkatan, dan perawatan kereta. Mari lihat beberapa analogi:

  1. Jadwal Keberangkatan (Scheduled Workflow): GitHub Actions bekerja seperti jadwal keberangkatan kereta api. Setiap kali ada perubahan kode atau kejadian tertentu (seperti push ke repositori), tugas-tugas tertentu dipicu untuk dieksekusi sesuai jadwal.
  2. Pemeriksaan Tiket (Code Checks): Sebelum kereta berangkat, tiket penumpang harus diperiksa. GitHub Actions melakukan pemeriksaan kode (Code linting, unit tests) untuk memastikan bahwa kode memenuhi standar sebelum “kereta” (aplikasi) berangkat.
  3. Perjalanan Multi-Stasiun (Multi-Step Workflow): Seperti kereta yang mungkin berhenti di beberapa stasiun, GitHub Actions memungkinkan eksekusi langkah-langkah berurutan atau paralel, seperti membangun, menguji, dan merilis aplikasi.
  4. Papan Informasi Jadwal (Workflow Visualization): Seperti papan informasi jadwal di stasiun, GitHub Actions menyediakan visualisasi yang mudah dipahami tentang status dan hasil dari setiap langkah dalam alur kerja.
  5. Pemeliharaan dan Perbaikan (Maintenance and Fixes): Ketika kereta tiba di stasiun, mungkin perlu dilakukan pemeliharaan atau perbaikan kecil. GitHub Actions memfasilitasi tugas-tugas ini, seperti code deployment atau rollback, untuk memastikan kelancaran perjalanan berikutnya.
  6. Manajemen Jadwal (Scheduling Management): Sistem kereta otomatis dapat memodifikasi jadwal berdasarkan kondisi tertentu. GitHub Actions memungkinkan manajemen jadwal otomatis untuk berbagai tugas pengembangan, pengetesan, dan penyebaran.
  7. Papan Pengumuman (Notifications): Mirip dengan pengumuman di stasiun tentang perubahan jadwal atau kondisi tertentu, GitHub Actions dapat mengirim pemberitahuan ke tim pengembang melalui berbagai saluran, seperti email atau pesan Slack.

Dengan analogi ini, GitHub Actions menjadi seperti pengelola stasiun otomatis yang efisien, memastikan bahwa setiap “kereta” (proyek perangkat lunak) berangkat dan tiba dengan lancar.

Apa itu github action ?

GitHub Actions adalah platform otomatisasi yang disediakan oleh GitHub untuk membantu tim pengembang perangkat lunak dalam meningkatkan efisiensi dan kualitas pengembangan perangkat lunak. Dengan GitHub Actions, Anda dapat membuat alur kerja (workflows) otomatis yang dapat dijalankan ketika terjadi perubahan pada repositori GitHub. Ini membuka pintu bagi otomatisasi berbagai tugas pengembangan seperti pengujian, penyebaran, dan banyak lagi.

Ilustrasi GitHub Actions

Deskripsi 1: Sebuah pull request baru dibuka dalam repositori GitHub. GitHub Actions mendeteksi peristiwa ini dan mengaktifkan workflow otomatis. Langkah-langkah dalam workflow, seperti pengujian unit dan integrasi, dijalankan secara otomatis untuk memastikan perubahan tersebut tidak merusak fungsionalitas yang ada.

Deskripsi 2: Setelah penerapan kode ke branch utama, GitHub Actions memicu alur kerja yang menyertakan langkah-langkah seperti mengonfigurasi dan memulai pengiriman aplikasi ke server produksi. Ini memberikan visibilitas dan kepastian kepada tim pengembang tentang setiap langkah dalam siklus penerapan perangkat lunak.

Konsep Dasar

  1. Workflows: GitHub Actions berbasis pada konsep workflows. Workflows adalah serangkaian tugas yang dijalankan secara otomatis berdasarkan berbagai peristiwa yang terjadi dalam repositori GitHub, seperti penerapan kode baru atau pembuatan pull request.
  2. Tugas (Jobs) dan Langkah-langkah (Steps): Setiap workflow terdiri dari satu atau beberapa tugas (jobs), dan setiap tugas terdiri dari satu atau beberapa langkah-langkah (steps). Langkah-langkah ini adalah unit terkecil dalam sebuah workflow yang menjalankan tindakan tertentu, seperti mengumpulkan dependensi atau menjalankan skrip pengujian.
  3. Event: Workflows dapat diaktifkan oleh berbagai peristiwa (event), seperti push ke branch tertentu, pembukaan pull request, atau penandatanganan tag. Ini memungkinkan otomatisasi yang sangat spesifik berdasarkan jenis peristiwa yang terjadi.
  4. Runner: Runner adalah lingkungan tempat langkah-langkah dalam workflow dijalankan. GitHub menyediakan runner-hosted yang dielola dan self-hosted yang dapat Anda atur di infrastruktur internal Anda.

Mengapa GitHub Actions Biasa Digunakan oleh DevOps?

GitHub Actions telah menjadi salah satu alat yang populer di kalangan praktisi DevOps, dan ini disebabkan oleh beberapa alasan kunci:

  1. Integrasi Natif dengan GitHub: GitHub Actions terintegrasi secara alami dengan repositori GitHub, membuatnya mudah diakses dan dikonfigurasi. Ini menyederhanakan otomatisasi dalam alur kerja pengembangan yang sudah ada.
  2. Konfigurasi yang Didefinisikan dalam Kode: Semua konfigurasi workflow didefinisikan dalam kode (biasanya berkas YAML), yang memungkinkan tim menyimpan konfigurasi sebagai bagian dari kode sumber mereka. Ini memfasilitasi manajemen dan versioning konfigurasi.
  3. Dukungan untuk Beragam Bahasa dan Lingkungan: GitHub Actions mendukung berbagai bahasa pemrograman dan lingkungan runtime. Hal ini memungkinkan pengembang untuk mengotomatisasi pengujian, kompilasi, dan penyebaran aplikasi yang ditulis dalam berbagai bahasa.
  4. Visualisasi yang Jelas: Platform menyediakan tampilan grafis dari workflow, memungkinkan pengguna untuk melihat dan memahami jalannya langkah-langkah dengan mudah. Visualisasi ini memberikan transparansi dan memudahkan pemecahan masalah.
  5. Skalabilitas dan Performa: GitHub Actions menawarkan kapasitas eksekusi yang baik, baik pada runner yang dielola GitHub maupun runner kustom yang dapat di-host sendiri. Ini memberikan fleksibilitas dan skalabilitas saat proyek berkembang.
  6. Paket Ekosistem dan Marketplace: GitHub Actions memiliki ekosistem yang berkembang dengan banyak tindakan siap pakai yang dapat digunakan. Tim dapat dengan mudah memanfaatkan tindakan-tindakan ini dari GitHub Marketplace untuk mengotomatisasi berbagai tugas.

Dengan kombinasi faktor-faktor ini, GitHub Actions telah menjadi pilihan utama bagi tim DevOps untuk meningkatkan efisiensi pengembangan, meningkatkan kualitas perangkat lunak, dan mengotomatisasi siklus pengiriman perangkat lunak secara keseluruhan.

Studi Kasus

Misalnya, kita dapat membuat workflow yang akan menguji setiap kali ada perubahan pada branch pengembangan dan kemudian menyebarkan ke server uji otomatis jika pengujian berhasil.

name: CI/CD Workflow

on:
push:
branches:
- development

jobs:
test:
runs-on: ubuntu-latest

steps:
- name: Checkout Repository
uses: actions/checkout@v2

- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '14'

- name: Install Dependencies
run: npm install

- name: Run Tests
run: npm test

deploy:
runs-on: ubuntu-latest

needs: test

steps:
- name: Deploy to Staging
run: ./deploy-staging.sh

Tutorial Pengerjaan

  1. Buat Berkas Konfigurasi: Buat berkas .github/workflows/main.yml dalam repositori Anda dan tambahkan konfigurasi workflow.
  2. Tentukan Event: Tentukan peristiwa yang akan memicu workflow, seperti push atau pembukaan pull request.
  3. Tentukan Jobs dan Steps: Tentukan satu atau lebih tugas (jobs) dan langkah-langkah (steps) yang harus dijalankan dalam workflow.
  4. Commit dan Lihat Hasilnya: Commit dan dorong perubahan ke repositori GitHub Anda. Lihat hasil workflow di tab “Actions” pada halaman repositori.

Kesimpulan

GitHub Actions membawa otomatisasi ke tingkat berikutnya dalam pengembangan perangkat lunak, memungkinkan tim untuk membuat alur kerja yang canggih dan terkelola dengan mudah. Dengan konsep yang jelas dan integrasi yang kuat dengan platform GitHub, Actions memberikan cara yang efisien untuk meningkatkan kualitas perangkat lunak dan mempercepat siklus pengembangan.

Komentar

Postingan populer dari blog ini

Mongodb: Security dan Authentication dalam MongoDB

Sonarqube: Menganalisis Kode, Penerapan Quality Gates dan Quality Profiles

Mongodb: Mempelajari Dasar-Dasar MongoDB