GitHub Actions Runner: Meningkatkan Efisiensi DevOps - Studi kasus dan tutorial pengerjaannya

 Hi, Saya Nita Septiani, kali ini saya akan sharing yang saya pahami dan ketahui tentang github runner. dalam ranah DevOps dan alur kerja otomatis, GitHub Actions Runner memainkan peran penting, berfungsi sebagai lingkungan eksekusi untuk tugas-tugas dalam GitHub Actions. Mari kita bahas apa itu runner, konsep-konsep dasarnya, analogi sederhananya,dan alasan mengapa runner banyak diadopsi oleh DevOps, dan studi kasus serta tutorial langkah demi langkahnya.

Apa itu Runner?

Dalam konteks GitHub Actions, runner adalah lingkungan komputasi di mana langkah-langkah dari alur kerja dijalankan. GitHub menyediakan dua jenis runner: GitHub-hosted runners, yang dikelola oleh GitHub, dan self-hosted runners, yang pengguna dapat atur di infrastruktur mereka sendiri.

Analogi: Kuda Kerja di Pabrik

Secara analogi, bayangkan GitHub Actions Runner sebagai kuda kerja yang berdedikasi di pabrik. Ia menerima instruksi (langkah-langkah alur kerja), beroperasi dengan efisien dalam lingkungan tertentu, dan berkontribusi pada produktivitas keseluruhan pabrik (proses pengembangan perangkat lunak).

  • Lantai Pabrik (Environement): Runner seperti sebuah stasiun kerja di lantai pabrik, dilengkapi dengan alat dan sumber daya yang diperlukan untuk melaksanakan tugas yang ditugaskan.
  • Instruksi Mandor (Step workflow): Langkah-langkah alur kerja mirip dengan instruksi yang diberikan oleh mandor. Runner dengan tekun menjalankan instruksi ini untuk berkontribusi pada penyelesaian proyek yang lebih besar (pengembangan perangkat lunak).
  • Stasiun Kerja Bersama (Konkurensi): Di pabrik yang besar, beberapa stasiun kerja beroperasi secara bersamaan. Demikian pula, runner memfasilitasi eksekusi pekerjaan secara bersamaan, mengoptimalkan penggunaan sumber daya dan mempercepat alur kerja.

Ilustrasi Lain : Runner sebagai Pengantar Pesanan di Restoran

Bayangkan runner sebagai seorang pelayan di restoran yang melayani pesanan pelanggan.

  1. Pelanggan (GitHub Actions Workflow):
    • Setiap pelanggan yang datang ke restoran mewakili alur kerja yang berbeda di GitHub Actions. Mereka memiliki pesanan (langkah-langkah alur kerja) yang perlu diproses.
  2. Restoran (Repositori GitHub):
    • Restoran mewakili repositori GitHub, tempat berbagai pesanan (alur kerja) diterima dan diproses.
  3. Pelayan (GitHub Actions Runner):
    • Pelayan atau "runner" adalah pihak yang mengambil pesanan dari dapur (GitHub repository), menjalankan langkah-langkah alur kerja, dan menyajikan hasilnya.
  4. Dapur (Lingkungan Eksekusi):
    • Dapur adalah tempat di mana pelayan (runner) menjalankan instruksi yang diterima, mewakili lingkungan eksekusi di mana langkah-langkah alur kerja dijalankan.
  5. Pesanan (Tugas dan Langkah-langkah Alur Kerja):
    • Setiap pesanan (tugas atau langkah-langkah) diterima oleh pelayan (runner) dan dijalankan sesuai dengan instruksi.
  6. Pertukaran Informasi (Komunikasi GitHub Actions):
    • Pelayan (runner) dan dapur (lingkungan eksekusi) berkomunikasi untuk memastikan setiap pesanan (tugas) dijalankan dengan benar dan hasilnya disajikan kembali ke pelanggan (alur kerja GitHub).

Dengan ilustrasi ini, runner dapat diibaratkan sebagai pelayan yang andal di restoran, membawa pesanan dari pelanggan ke dapur, menjalankan tugas dengan efisien, dan mengembalikan hasilnya untuk dinikmati oleh pelanggan. Hal ini mencerminkan peran runner dalam menyajikan hasil dari alur kerja GitHub Actions kepada repositori dan pengembang yang bersangkutan.

Konsep-Konsep Utama:

  1. Lingkungan Eksekusi:
    • Runner menyediakan lingkungan yang diperlukan untuk menjalankan perintah yang ditentukan dalam langkah-langkah alur kerja GitHub Actions.
  2. GitHub-Hosted Runners:
    • Runner ini dikelola dan diprovinsikan oleh GitHub. Mereka menawarkan berbagai sistem operasi, konfigurasi perangkat lunak, dan alat.
  3. Self-Hosted Runners:
    • Pengguna dapat mengatur runner mereka sendiri di infrastruktur mereka, memberikan fleksibilitas dan penyesuaian sesuai kebutuhan proyek tertentu.
  4. Konkurensi:
    • Runner memungkinkan eksekusi tugas secara bersamaan, memungkinkan beberapa langkah atau pekerjaan dalam alur kerja berjalan secara simultan.

Mengapa Runner Banyak Digunakan oleh DevOps?

  1. Fleksibilitas dan Penyesuaian:
    • Self-hosted runners memungkinkan tim DevOps menyesuaikan lingkungan untuk mencocokkan persyaratan proyek tertentu, memastikan konsistensi dalam pengembangan, pengujian, dan tahap implementasi.
  2. Pengurangan Latensi:
    • Dengan menggunakan self-hosted runners di infrastruktur mereka sendiri, tim dapat mengurangi latensi dan mengoptimalkan waktu eksekusi alur kerja, yang sangat penting untuk proyek berskala besar.
  3. Keamanan dan Kepatuhan:
    • Self-hosted runners memberikan kontrol atas lingkungan eksekusi, memungkinkan tim untuk mematuhi standar keamanan dan kepatuhan yang spesifik untuk organisasi mereka.
  4. Efisiensi Biaya:
    • Pemanfaatan self-hosted runners dapat efisien secara biaya, terutama untuk tugas yang berjalan lama atau membutuhkan sumber daya, karena pengguna memiliki kontrol atas infrastruktur yang mendasarinya.

Studi Kasus: Mengoptimalkan CI/CD dengan Self-Hosted Runners

Bayangkan skenario di mana tim pengembangan bekerja pada aplikasi web yang kompleks. Dengan menggunakan self-hosted runners, tim dapat:

  • Mengatur runner di server lokal mereka untuk memastikan lingkungan pengujian yang konsisten.
  • Memanfaatkan fleksibilitas self-hosted runners untuk menjalankan pengujian dan pemeriksaan khusus yang sesuai dengan aplikasi mereka.
  • Mengoptimalkan proses implementasi dengan menggunakan self-hosted runners untuk implementasi ke lingkungan tertentu.

Tutorial Implementasi

  1. Menyiapkan Self-Hosted Runners:
    • Dalam repositori GitHub Anda, arahkan ke "Settings" -> "Actions" -> "Self-hosted runners" untuk menambahkan runner baru. Ikuti petunjuk yang disediakan untuk menginstal dan mengonfigurasi runner di infrastruktur Anda.

Dan untuk menginstall runner di server anda/infrastruktur anda, anda hanya perlu memilik sistem operasi yang anda gunakan lalu github runner akan memberikan command command tutorial yang bisa anda gunakan untuk menginstall runner. seperti di bawah ini...

Konfigurasi Alur Kerja:

  • Perbarui file YAML alur kerja Anda untuk menentukan penggunaan self-hosted runners. Ini dapat dilakukan dengan mengatur parameter runs-on dalam konfigurasi pekerjaan alur kerja Anda.

Pengujian dan Optimisasi:

  • Jalankan alur kerja Anda dan pantau kinerja self-hosted runners. Optimalisasi alokasi sumber daya dan konfigurasi sesuai kebutuhan untuk kasus penggunaan spesifik Anda.

Skalabilitas:

  • Saat proyek Anda berkembang, skalakan jumlah self-hosted runners untuk memenuhi permintaan yang meningkat dan memastikan eksekusi alur kerja yang efisien.

Ok, dari studi kasus di atas anda sudah berhasil melakukan install runner di server/infrastruktur anda, selanjutkan adalah studi kasus untuk implementasi runner di CI/CD sederhana.

Studi Kasus: Implementasi Workflow CI/CD Sederhana dengan GitHub Runner

Mari kita pertimbangkan sebuah skenario di mana sebuah tim pengembangan ingin menyiapkan pipa CI/CD dasar menggunakan GitHub Actions dengan runner yang di-host sendiri. Tim tersebut sedang bekerja pada aplikasi web Node.js dan bertujuan untuk mengotomatisasi proses build, uji, dan penyebaran.

Gambaran Proyek:

  • Aplikasi: Aplikasi web Node.js
  • Tujuan: Mengotomatisasi proses build, uji, dan penyebaran menggunakan GitHub Actions dengan runner yang di-host sendiri.

Langkah-langkah Implementasi:

  1. Menyiapkan GitHub Runner yang Di-host Sendiri:
    • Buka repositori GitHub Anda dan arahkan ke "Settings" -> "Actions" -> "Self-hosted runners."
    • Klik "Add runner" dan ikuti instruksi untuk mengunduh paket runner yang sesuai dengan sistem operasi server Anda.
    • Ekstrak paket yang diunduh dan jalankan skrip konfigurasi seperti yang dijelaskan dalam dokumentasi GitHub.
  2. Membuat Berkas Konfigurasi Workflow:
    • Dalam repositori GitHub Anda, buat direktori bernama .github/workflows.
    • Di dalam direktori ini, buat berkas YAML, misalnya ci-cd.yml, untuk mendefinisikan workflow CI/CD.
  3. Mendefinisikan Langkah-langkah Workflow:
name: CI/CD Workflow on: push: branches: - main jobs: build: runs-on: self-hosted steps: - name: Checkout Repository uses: actions/checkout@v2 - name: Set up Node.js uses: actions/setup-node@v2 with: node-version: '14' - name: Install Dependencies run: npm install - name: Run Tests run: npm test deploy: runs-on: self-hosted needs: build steps: - name: Deployment to Production run: | # Tambahkan perintah penyebaran Anda di sini # Contoh: npm run deploy
  • Workflow ini terdiri dari dua pekerjaan/job : build dan deploy.
  • Pekerjaan build melakukan checkout repositori, menyiapkan Node.js, menginstal dependensi, dan menjalankan uji.
  • Pekerjaan deploy, yang dipicu setelah build berhasil (needs: build), menangani proses penyebaran ke environtment production.

Hasil:

  • Runner yang di-self hoster berhasil menjalankan workflow yang telah ditentukan.
  • Job build memastikan aplikasi dibuild, di test, dan dependensi diinstal.
  • Setelah berhasil menyelesaikan job build, job deploy (jika dikonfigurasi) menangani proses deployment.

Dengan mengikuti langkah-langkah ini, tim telah menyiapkan CI/CD pipeline dasar menggunakan GitHub Actions dengan runner self-hosted. Ini memungkinkan mereka mengotomatisasi proses deployment yang penting, memastikan kualitas kode, dan potensial untuk mengotomatisasi deployment ke lingkungan produksi/environment production.

Kesimpulan

GitHub Actions Runners adalah tulang punggung alur kerja otomatis, menyediakan lingkungan eksekusi untuk tugas-tugas yang sangat penting dalam proses DevOps. Baik GitHub-hosted maupun self-hosted, runners menawarkan fleksibilitas, penyesuaian, dan efisiensi, menjadikannya pilihan yang diutamakan oleh praktisi DevOps yang bertujuan untuk menyederhanakan pipa pengembangan mereka. Dengan memahami konsep-konsep, memanfaatkan analogi, dan menjelajahi contoh dunia nyata, tim dapat memanfaatkan kekuatan runners untuk mengoptimalkan proses CI/CD mereka dan meningkatkan efisiensi pengembangan perangkat lunak secara keseluruhan.

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