Mengonfigurasi alur kerja GitHub Actions

Selesai

Di sini, Anda akan mempelajari beberapa konfigurasi umum dalam file alur kerja. Anda juga akan menjelajahi kategori jenis peristiwa, menonaktifkan dan menghapus alur kerja, serta menggunakan versi tindakan tertentu untuk praktik terbaik keamanan.

Mengonfigurasi alur kerja yang akan dijalankan untuk peristiwa terjadwal

Seperti disebutkan sebelumnya, Anda dapat mengonfigurasi alur kerja untuk dijalankan saat aktivitas tertentu terjadi pada GitHub, saat peristiwa di luar GitHub terjadi, atau pada waktu yang dijadwalkan. Peristiwa schedule ini memungkinkan Anda memicu alur kerja untuk berjalan pada waktu UTC tertentu menggunakan sintaks cron POSIX. Sintaks cron ini memiliki lima bidang *, dan setiap bidang mewakili satuan waktu.

Diagram of the five unit-of-time fields for scheduling an event in a workflow file.

Misalnya, jika Anda ingin menjalankan alur kerja setiap 15 menit, peristiwa schedule akan terlihat seperti berikut:

on:
  schedule:
    - cron:  '*/15 * * * *'

Dan jika Anda ingin menjalankan alur kerja setiap hari Minggu pukul 03.00, peristiwa schedule akan terlihat seperti ini:

on:
  schedule:
    - cron:  '0 3 * * SUN'

Anda juga dapat menggunakan operator untuk menentukan rentang nilai atau untuk memanggil alur kerja terjadwal Anda. Interval terpendek Anda dalam menjalankan alur kerja terjadwal adalah sekali setiap lima menit, dan alur kerja terjadwal berjalan pada penerapan terbaru di cabang default atau dasar.

Mengonfigurasi alur kerja yang akan dijalankan untuk peristiwa manual

Selain peristiwa terjadwal, Anda dapat memicu alur kerja secara manual menggunakan peristiwa workflow_dispatch tersebut. Kejadian ini memungkinkan Anda menjalankan alur kerja dengan menggunakan GitHub REST API atau dengan memilih tombol Jalankan alur kerja di tab Tindakan dalam repositori Anda di GitHub. Dengan menggunakan workflow_dispatch, Anda dapat memilih cabang mana yang Anda inginkan untuk menjalankan alur kerja, serta mengatur inputs opsional yang akan ditampilkan GitHub sebagai elemen formulir di antarmuka pengguna.

on:
  workflow_dispatch:
    inputs:
      logLevel:
        description: 'Log level'     
        required: true
        default: 'warning'
      tags:
        description: 'Test scenario tags'  

Selain workflow_dispatch, Anda dapat menggunakan GitHub API untuk memicu peristiwa webhook yang disebut repository_dispatch. Peristiwa ini memungkinkan Anda memicu alur kerja untuk aktivitas yang terjadi di luar GitHub, dan pada dasarnya berfungsi sebagai permintaan ke repositori Anda yang meminta GitHub untuk memicu alur kerja dari tindakan atau webhook. Menggunakan peristiwa manual ini mengharuskan Anda melakukan dua hal: mengirim permintaan POST ke titik akhir GitHub /repos/{owner}/{repo}/dispatches dengan nama peristiwa webhook di isi permintaan, dan mengonfigurasi alur kerja Anda untuk menggunakan peristiwa repository_dispatch.

curl \
  -X POST \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/repos/octocat/hello-world/dispatches \
  -d '{"event_type":"event_type"}'
on:
  repository_dispatch:
    types: [opened, deleted]

Mengonfigurasi alur kerja yang akan dijalankan untuk peristiwa webhook

Terakhir, Anda dapat mengonfigurasi alur kerja untuk dijalankan saat peristiwa webhook tertentu terjadi pada GitHub. Anda dapat memicu sebagian besar peristiwa webhook dari lebih dari satu aktivitas untuk webhook, jadi jika ada beberapa aktivitas untuk webhook, Anda dapat menentukan jenis aktivitas untuk memicu alur kerja. Misalnya, Anda dapat menjalankan alur kerja untuk peristiwa check_run tetapi hanya untuk jenis aktivitas rerequested atau requested_action.

on:
  check_run:
    types: [rerequested, requested_action]

Menggunakan kata kunci kondisional

Dalam file alur kerja, Anda dapat mengakses informasi konteks dan mengevaluasi ekspresi. Meskipun ekspresi umumnya digunakan dengan kata kunci if kondisional dalam file alur kerja untuk menentukan apakah langkah harus berjalan atau tidak, Anda dapat menggunakan konteks dan ekspresi yang didukung untuk membuat kondisional. Penting untuk diketahui bahwa saat menggunakan kondisional dalam alur kerja, Anda perlu menggunakan sintaks ${{ <expression> }} tertentu, yang memberi tahu GitHub untuk mengevaluasi ekspresi dan bukan memperlakukannya sebagai string.

Misalnya, alur kerja yang menggunakan kondisional if untuk memeriksa apakah github.ref (cabang atau ref tag yang memicu eksekusi alur kerja) cocok dengan refs/heads/main untuk melanjutkan dengan langkah-langkah berikut dalam alur kerja akan terlihat seperti ini:

name: CI
on: push
jobs:
  prod-check:
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    steps:
      ...

Perhatikan bahwa di contoh ini, ${{ }} hilang dari sintaks. Dengan beberapa ekspresi, seperti dalam kasus if kondisi, Anda dapat menghilangkan sintaks ekspresi. GitHub secara otomatis mengevaluasi beberapa ekspresi umum ini, tetapi Anda selalu dapat menyertakan ekspresi umum jika Anda lupa ekspresi mana yang dievaluasi secara otomatis oleh GitHub.

Untuk informasi selengkapnya tentang sintaks dan ekspresi alur kerja, lihat Sintaks alur kerja untuk GitHub Actions.

Menonaktifkan dan menghapus alur kerja

Setelah menambahkan alur kerja ke repositori, Anda mungkin menemukan situasi di mana Anda ingin menonaktifkan alur kerja untuk sementara waktu. Anda dapat menghentikan alur kerja agar tidak dipicu tanpa harus menghapus file dari repositori, baik di GitHub atau melalui REST API GitHub. Saat ingin mengaktifkan alur kerja lagi, Anda dapat dengan mudah melakukannya menggunakan metode yang sama.

Screenshot of disabling a workflow on GitHub.

Menonaktifkan alur kerja dapat bermanfaat di beberapa situasi, misalnya:

  • Kesalahan di alur kerja menghasilkan terlalu banyak atau permintaan yang salah yang berdampak pada layanan eksternal secara negatif.
  • Anda ingin menjeda alur kerja untuk sementara waktu yang tidak penting dan mengonsumsi terlalu banyak menit di akun Anda.
  • Anda ingin menjeda alur kerja yang mengirim permintaan ke layanan yang tidak berfungsi.
  • Anda sedang mengerjakan fork dan Anda tidak memerlukan semua fungsionalitas dari beberapa alur kerja yang disertakannya (seperti alur kerja terjadwal).

Anda juga dapat membatalkan eksekusi alur kerja yang sedang berlangsung di UI GitHub dari tab Tindakan atau dengan menggunakan titik DELETE /repos/{owner}/{repo}/actions/runs/{run_id}akhir GITHub API . Perlu diingat bahwa saat Anda membatalkan eksekusi alur kerja, GitHub akan membatalkan semua pekerjaan dan langkah-langkahnya dalam eksekusi tersebut.

Menggunakan alur kerja yang di-template organisasi

Jika Anda memiliki alur kerja yang digunakan beberapa tim dalam organisasi, daripada membuat kembali alur kerja yang sama untuk setiap repositori, Anda dapat meningkatkan konsistensi di seluruh organisasi Anda dengan menggunakan template alur kerja yang ditentukan di repositori .github organisasi. Setiap anggota dalam organisasi dapat menggunakan alur kerja template organisasi, dan setiap repositori dalam organisasi tersebut memiliki akses ke alur kerja template tersebut.

Anda dapat menemukan alur kerja ini dengan membuka tab Tindakan repositori di organisasi, memilih Alur kerja baru, lalu menemukan bagian template alur kerja organisasi berjudul "Alur Kerja yang dibuat oleh nama organisasi". Misalnya, organisasi bernama Mona memiliki alur kerja template seperti yang ditunjukkan di bawah ini.

Screenshot of a template organization workflow called greet and triage by Mona.

Menggunakan versi tindakan tertentu

Saat mereferensikan tindakan dalam alur kerja Anda, kami sarankan Anda merujuk ke versi tertentu dari tindakan tersebut daripada hanya tindakan itu sendiri. Dengan mereferensikan versi tertentu, Anda menempatkan perlindungan dari perubahan tak terduga yang didorong ke tindakan yang berpotensi merusak alur kerja Anda. Berikut adalah beberapa cara Anda dapat mereferensikan versi tindakan tertentu:

steps:    
  # Reference a specific commit
  - uses: actions/setup-node@c46424eee26de4078d34105d3de3cc4992202b1e
  # Reference the major version of a release
  - uses: actions/setup-node@v1
  # Reference a minor version of a release
  - uses: actions/setup-node@v1.2
  # Reference a branch
  - uses: actions/setup-node@main

Beberapa referensi lebih aman daripada yang lain. Misalnya, merujuk cabang tertentu akan menjalankan tindakan tersebut dari perubahan terbaru dari cabang tersebut, yang mungkin atau mungkin tidak Anda inginkan. Dengan mereferensikan nomor versi tertentu atau menerapkan hash SHA, Anda menjadi lebih spesifik tentang versi tindakan yang Anda jalankan. Untuk stabilitas dan keamanan yang lebih baik, sebaiknya Anda menggunakan sha penerapan tindakan yang dirilis dalam alur kerja Anda.