Latihan - Menggunakan GitHub Script dalam GitHub Actions
Di unit ini, Anda akan mempelajari selengkapnya tentang bagaimana Anda dapat menggunakan Skrip GitHub untuk meningkatkan alur kerja Anda.
Menambahkan masalah ke papan proyek
Selain menggunakan okokit/rest.js untuk membuat komentar dan membuka permintaan pull, Anda juga dapat menggunakan okokit/rest.js untuk mengelola Proyek GitHub. Dalam sampel kode berikut, Anda membuat alur kerja yang berjalan setiap kali ada yang menambahkan masalah baru ke repositori. Ini menambahkan isu ke papan proyek, yang memudahkan Anda untuk menyortir atau mengatur pekerjaan Anda.
name: Learning GitHub Script
on:
issues:
types: [opened]
jobs:
comment:
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@0.8.0
with:
github-token: {% raw %}${{secrets.GITHUB_TOKEN}}{% endraw %}
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!!!"
})
github.projects.createCard({
column_id: {{columnID}},
content_id: context.payload.issue.id,
content_type: "Issue"
});
Bagian pertama dari alur kerja ini membuat komentar setiap kali masalah baru dibuat, yang tercakup dalam unit sebelumnya. Bagian berikutnya membuat kartu berdasarkan masalah ini dan menambahkannya ke papan proyek.
Pisahkan alur kerja ke dalam langkah-langkah
Salah satu manfaat menggunakan tindakan adalah Anda dapat memisahkan pekerjaan menjadi unit kerja yang lebih kecil yang disebut langkah-langkah. Dalam contoh alur kerja sebelumnya, Anda dapat memisahkan alur kerja menjadi dua langkah.
Salah satu keuntungan memecah alur kerja saat ini menjadi beberapa langkah adalah memungkinkan Anda menggunakan ekspresi untuk menerapkan logika. Menggunakan langkah-langkah memungkinkan Anda membuat aturan saat langkah-langkah diizinkan untuk dijalankan dan dapat membantu mengoptimalkan eksekusi alur kerja Anda.
Untuk memisahkan contoh alur kerja menjadi langkah-langkah:
- Beri nama setiap langkah sehingga Anda dapat melacaknya dari tab Tindakan .
- Gunakan ekspresi untuk menentukan apakah langkah harus berjalan (opsional).
Dalam contoh ini, dua tugas dalam file alur kerja asli dipisahkan menjadi langkah individual:
name: Learning GitHub Script
on:
issues:
types: [opened]
jobs:
comment:
runs-on: ubuntu-latest
steps:
- name: Comment on new issue
uses: actions/github-script@0.8.0
with:
github-token: {% raw %}${{secrets.GITHUB_TOKEN}}{% endraw %}
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!!!"
})
- name: Add issue to project board
if: contains(github.event.issue.labels.*.name, 'bug')
uses: actions/github-script@0.8.0
with:
github-token: {% raw %}${{secrets.GITHUB_TOKEN}}{% endraw %}
script: |
github.projects.createCard({
column_id: {{columnID}},
content_id: context.payload.issue.id,
content_type: "Issue"
});
Setiap langkah menyertakan elemen deskriptif name yang juga membantu Anda melacaknya dari tab Tindakan .
Langkah ini Add issue to project board juga menyertakan if pernyataan yang menyatakan bahwa masalah harus ditambahkan ke papan proyek hanya jika diberi label bug.
Gunakan lingkungan Node.js
Skrip GitHub juga memberi Anda akses ke lingkungan Node.js penuh. Meskipun kami tidak merekomendasikan penggunaan Skrip GitHub untuk menulis logika untuk tindakan kompleks, Anda dapat menggunakannya untuk menambahkan lebih banyak fungsionalitas ke API octo/rest.js.
Misalnya, Anda dapat menggunakan Node.js untuk menampilkan panduan kontribusi setiap kali masalah dibuka. Anda dapat menggunakan sistem file Node.js untuk membaca file dan menggunakannya sebagai isi komentar masalah. Untuk mengakses file dalam repositori, sertakan tindakan actions/checkout sebagai langkah pertama dalam alur kerja.
Contoh berikut membuat perubahan berikut pada file alur kerja:
-
action/checkoutMenambahkan tindakan untuk membaca file respons templat yang terletak di.github/ISSUE_RESPONSES/comment.md - Menambahkan JavaScript untuk menggunakan modul Node.js File System untuk menempatkan konten respons templat kami sebagai isi komentar masalah
name: Learning GitHub Script
on:
issues:
types: [opened]
jobs:
comment:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Comment on new issue
uses: actions/github-script@0.8.0
with:
github-token: {% raw %}${{secrets.GITHUB_TOKEN}}{% endraw %}
script: |
const fs = require('fs')
const issueBody = fs.readFileSync(".github/ISSUE_RESPONSES/comment.md", "utf8")
github.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: issueBody
})
- name: Add issue to project board
if: contains(github.event.issue.labels.*.name, 'bug')
uses: actions/github-script@0.8.0
with:
github-token: {% raw %}${{secrets.GITHUB_TOKEN}}{% endraw %}
script: |
github.projects.createCard({
column_id: {{columnID}},
content_id: context.payload.issue.id,
content_type: "Issue"
});
Skrip GitHub membantu Anda membuat respons komprehensif terhadap masalah baru. Respons ini juga didasarkan pada templat di repositori, sehingga mudah diubah. Terakhir, Anda juga menyertakan pemicu untuk menambahkan masalah ke papan proyek sehingga Anda dapat dengan mudah melakukan triase untuk pekerjaan di masa mendatang.