Apa itu GitHub Script?

Selesai

Di unit ini, Anda akan mempelajari bagaimana Skrip GitHub memungkinkan Anda mengotomatiskan proses GitHub umum dengan menggunakan alur kerja GitHub Actions.

Apa itu GitHub Script?

Skrip GitHub adalah tindakan yang menyediakan klien Octokit terautentikasi dan memungkinkan JavaScript ditulis langsung dalam file alur kerja. Ini berjalan di Node.js, sehingga Anda memiliki kekuatan platform yang tersedia saat Anda menulis skrip.

Apa itu Octokit?

Octokit adalah koleksi resmi klien untuk API GitHub. Salah satu klien ini, rest.js, menyediakan akses JavaScript ke antarmuka GITHub REST.

Anda selalu dapat mengotomatiskan GITHub API melalui octokit/rest.js, meskipun itu bisa menjadi tugas untuk mengatur dan memelihara dengan benar. Salah satu keuntungan besar menggunakan GitHub Script adalah ia menangani semua overhead ini sehingga Anda dapat segera mulai menggunakan API. Anda tidak perlu khawatir tentang dependensi, konfigurasi, atau bahkan autentikasi.

Apa yang dapat dilakukan octokit/rest.js?

Jawaban singkatnya adalah bahwa ia dapat melakukan hampir apa pun sehubungan dengan mengotomatiskan GitHub. Selain memiliki akses ke komit, permintaan tarik, dan masalah, Anda juga memiliki akses ke pengguna, proyek, dan organisasi. Anda dapat mengambil daftar file yang umum digunakan, seperti lisensi populer atau file .gitignore. Anda bahkan dapat merender Markdown.

Jika Anda membuat sesuatu yang mengintegrasikan GitHub, kemungkinan besar Anda akan menemukan apa yang Anda cari dalam dokumentasi octokit/rest.js lengkap.

Apa perbedaan penggunaan GitHub Script dengan octokit/rest.js?

Perbedaan utama dalam penggunaan adalah bahwa Skrip GitHub menyediakan klien octokit/rest.js yang telah diautentikasi sebelumnya bernama github.

Jadi alih-alih

octokit.issues.createComment({

Anda menggunakan

github.issues.createComment({.

Selain variabel github, variabel berikut juga disediakan:

Membuat alur kerja yang menggunakan Skrip GitHub

Tindakan GitHub Script cocok dengan alur kerja seperti tindakan lainnya. Akibatnya, Anda bahkan dapat mencampurnya dengan alur kerja yang ada, seperti yang mungkin telah Anda siapkan untuk CI/CD. Untuk mengilustrasikan kenyamanan Skrip GitHub, Anda sekarang akan membuat alur kerja lengkap yang menggunakannya untuk memposting komentar secara otomatis ke semua masalah yang baru dibuat.

Anda akan memulai dengan klausa name dan on yang menentukan bahwa alur kerja ini berjalan ketika masalah dibuka.

name: Learning GitHub Script

on:
  issues:
    types: [opened]

Selanjutnya, Anda akan menentukan pekerjaan bernama comment yang berjalan di Linux dengan serangkaian langkah:

jobs:
  comment:
    runs-on: ubuntu-latest
    steps:

Dalam hal ini, hanya ada satu langkah: tindakan Skrip GitHub.

      - uses: actions/github-script@0.8.0
        with:
          github-token: ${{secrets.GITHUB_TOKEN}}
          script: |
            github.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: "🎉 You've created this issue comment using GitHub Script!!!"
            })

Menggunakan GitHub Actions benar-benar dapat membantu mengotomatiskan peristiwa yang terjadi di repositori Anda. Bayangkan bahwa pengunjung repositori membuka masalah baru yang berisi informasi tentang bug penting. Anda mungkin ingin berterima kasih kepada mereka karena memberitahu Anda mengenai bug tersebut, tetapi tugas sederhana ini bisa menjadi melelahkan karena repositori Anda menarik lebih banyak pengunjung. Dengan mengotomatiskan komentar masalah, Anda dapat mengotomatiskan proses berterima kasih kepada pengunjung setiap saat.

Menggunakan actions/github-script@0.8.0

Tindakan actions/github-script@0.8.0, yang juga dikenal sebagai Skrip GitHub, melakukan semua pekerjaan sulit untuk integrasi Anda dengan GitHub API.

Tindakan ini memerlukan github-token yang disediakan saat runtime sehingga permintaan diautentikasi. Ini secara otomatis dilakukan untuk Anda, sehingga Anda dapat menggunakan kode tersebut apa adanya.

Parameter script dapat hampir semua JavaScript yang menggunakan klien octokit/rest/js yang disimpan di github. Dalam hal ini, hanya satu baris (dibagi di beberapa baris untuk keterbacaan) yang membuat komentar yang dikodekan secara permanen.

Setelah alur kerja berjalan, Skrip GitHub mencatat kode yang dijalankannya untuk ditinjau pada tab Tindakan :

Cuplikan layar alur kerja Skrip GitHub yang telah selesai.

Menjalankan dari file terpisah

Terkadang Anda mungkin perlu menggunakan sejumlah besar kode untuk memenuhi skenario Skrip GitHub Anda. Ketika itu terjadi, Anda dapat menyimpan skrip dalam file terpisah dan mereferensikannya dari alur kerja alih-alih menempatkan semua skrip sebaris.

Berikut adalah contoh alur kerja sederhana yang menggunakan teknik tersebut:

on: push

jobs:
  echo-input:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/github-script@v2
        with:
          script: |
            const path = require('path')
            const scriptPath = path.resolve('./path/to/script.js')
            console.log(require(scriptPath)({context}))

Lihat contoh Skrip GitHub lainnya.