Pelan-Pelan Belajar GitHub Action

Pelan-Pelan Belajar GitHub Action

Zakiego

Zakiego

@zakiego

Latar Belakang

Banyak hal yang bisa dilakukan dengan GitHub Action. Di antaranya ialah, saya bisa menjalankan script untuk melakukan scraping website KPU, setiap hari, secara otomatis, tanpa harus menjalankannya manual (zakiego/data-pemilu-2024). Hal lain yang bisa dilakukan adalah men-deploy website, setiap kali ada code yang di-push ke repository (cloudflare/pages-action).

Prasyarat

Asumsi dari pembaca artikel ini adalah telah mengerti git, untuk membuat repository dan melakukan push ke repository. Serta akan sangat baik jika telah sering menggunakan terminal.

Pendahuluan

Secara sangat sederhana, GitHub Action adalah server milik GitHub yang bisa kita pinjam untuk menjalankan kode. Kita bisa menjalankan kode kapan saja, misal, kita ingin menjalankannya setiap jam sekali. Atau bisa juga kita ingin menjalankannya setiap ada push ke repository GitHub.

Secara tidak sederhana, GitHub Action adalah platform untuk menjalankan continuous integration and continuous delivery (CI/CD) untuk mengautomasi proses build, test, dan deployment.

Struktur

Pertama-tama kita harus menyiapkan sebuah folder project di local, misal, kita beri nama, belajar-github-action.  Untuk membuat script GitHub Action, kita perlu meletakkannya di dalam folder /belajar-github-action/.github/workflows/{letakkan di sini}.

Mari kita buat file bernama run.yml, file ini memiliki format yml. Kita bisa bebas memberi nama file apa saja, bahkan kita bisa membuat beberapa file GitHub Action dalam satu repository.

├── README.md
├── .github
│   └── workflows
│       └── run.yml

Ada 3 komponen penting dalam sebuah file Github Action:

  1. Apa nama dari workflownya?
  2. Kapan workflownya harus dijalankan?
  3. Hal apa saja yang perlu dijalankan?

Pertanyaan-pertanyaan di atas kemudian tertuang dalam sebuah file Github Action sederhana menjadi:

name: Belajar Github Action

on: push

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - run: echo "Hello, world!"
      - run: echo "This is my first Github Action"
      - run: echo "I'm learning how to use Github Action"

Bagaimana ketika action dijalankan bisa dilihat di zakiego/belajar-github-action/actions.

Sementara source code actionnya bisa dilihat di zakiego/belajar-github-action/.github/workflows/run.yml

Nama dari workflow ini adalah “Belajar Github Action”.

Kapan workflow ini akan dijalankan? Yaitu ketika “push”. Secara sederhana, artinya ketika ada push kode ke repository, maka workflow ini akan dijalankan.

jobs adalah satu grup job yang kita buat. Dalam satu grup, kita bisa membuat beberapa job turunan, tapi dalam contoh ini, kita hanya membuat satu job turunan, yaitu ‘build’.

Di dalam build terdapat runs-on dan steps.

runs-on adalah mesin yang digunakan untuk menjalankan workflow, GitHub menyediakan Ubuntu Linux, Microsoft Windows, and macOS. Sebagai tambahan, kita juga bisa menjalankan GitHub Action di server milik kita sendiri, dengan menggunakan mode self-hosted (docs).

Terakhir, steps adalah langkah-langkah atau inti dari script yang ingin kita jalankan.

Contoh, kita bisa ingin menjalankan script index.ts dengan menggunakan bun, maka workflownya akan seperti ini (source):

name: my-workflow
jobs:
  my-job:
    name: my-job
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: oven-sh/setup-bun@v1
      - run: bun install
      - run: bun index.ts
      - run: bun run build

Atau contoh lain, kita ingin menjalankan proses build dan test terhadap kode Golang, setiap kali ada push kode ke repository (source):

name: Go
on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - name: Setup Go
        uses: actions/setup-go@v4
        with:
          go-version: '1.21.x'
      - name: Install dependencies
        run: go get .
      - name: Build
        run: go build -v ./...
      - name: Test with the Go CLI
        run: go test

Tambahan

Jika diperhatikan, ada penggunaan

  • actions/checkout@v4
  • oven-sh/setup-bun@v1
  • actions/setup-go@v4

Apa fungsinya?

Singkatnya, uses adalah proses di mana kita menggunakan semacam library yang siap pakai mempermudah proses kerja.

oven-sh/setup-bun@v1 berfungsi untuk melakukan setup bun dan actions/setup-go@v4 berfungsi untuk melakukan setup Golang secara otomatis, sehingga kita tidak perlu ribet melakukan curl atau pun step-step panjang untuk menginstallnya.

Sementara itu, actions/checkout@v4 ini menarik.

Misal, kita mempunyai file index.ts di dalam repository. Jika kita ingin menjalankan kode ini, maka kita perlu melakukan checkout menggunakan actions/checkout@v4, barulah kita bisa menjalankannya. Jika tidak menggunakan actions/checkout@v4, maka GitHub Action tidak memiliki akses terhadap repository kita, artinya, dia tidak tahu apa itu file index.ts yang ingin dijalankan.

Penutup

Masih banyak yang bisa dipelajari lebih lanjut. Misalnya, schedule (#schedule) untuk menjalankan setiap interval waktu tertentu. Atau pull_request (#pull_request) untuk menjalankan setiap ada pull request. Bahkan, kita bisa menjalankan GitHub Action melalui API, yaitu repository_dispatch (#repository_dispatch).

Referensi


Awal ditulis pada 14 Maret 2024 di Banjarmasin

Diselesaikan pada 30 Maret 2024 M/19 Ramadan 1445 H di Pelaihari, 7:53 AM

Diedit pada 1 April 2024 di Banjarmasin, 16:22