GitHub Script là gì?
Trong đơn vị này, bạn sẽ tìm hiểu cách GitHub Script cho phép bạn tự động hóa các quy trình GitHub thông thường bằng cách sử dụng dòng công việc Hành động GitHub.
GitHub Script là gì?
GitHub Script là một hành động cung cấp một máy khách Octokit được xác thực và cho phép JavaScript được viết trực tiếp trong tệp dòng công việc. Nó chạy trong Node.js, vì vậy bạn có sức mạnh của nền tảng đó có sẵn khi bạn viết kịch bản.
Octokit là gì?
Octokit là bộ sưu tập chính thức của máy khách cho API GitHub. Một trong những khách hàng này, rest.js, cung cấp quyền truy cập JavaScript vào giao diện REST GitHub.
Bạn luôn có thể tự động hóa API GitHub thông qua octokit/rest.js, mặc dù đó có thể là một công việc cần thiết để thiết lập và duy trì đúng cách. Một trong những lợi thế tuyệt vời của việc sử dụng GitHub Script là nó xử lý toàn bộ chi phí này để bạn có thể ngay lập tức bắt đầu sử dụng API. Bạn không cần phải lo lắng về các quan hệ phụ thuộc, cấu hình hoặc thậm chí là xác thực.
Octokit/rest.js gì?
Câu trả lời ngắn là nó có thể làm hầu như bất cứ điều gì liên quan đến việc tự động hóa GitHub. Ngoài việc có quyền truy nhập vào cam kết, yêu cầu kéo và sự cố, bạn cũng có quyền truy nhập vào người dùng, dự án và tổ chức. Bạn có thể truy xuất danh sách các tệp thường được sử dụng, chẳng hạn như các giấy phép phổ .gitignore tệp. Bạn thậm chí có thể kết xuất Markdown.
Nếu bạn đang tạo nội dung tích hợp GitHub, thì khả năng bạn sẽ tìm thấy những gì mình đang tìm kiếm trong tài liệu đầy đủ về octokit/rest.js liệu.
Làm thế nào là sử dụng GitHub Script khác với octokit /rest.js?
Sự khác biệt chính trong việc sử dụng là GitHub Script cung cấp một octokit/ octokit được xác thực trướcrest.js tên là github.
Vì vậy, thay vì
octokit.issues.createComment({
bạn sử dụng
github.issues.createComment({.
Ngoài biến số github, các biến sau đây cũng được cung cấp:
-
contextlà một đối tượng có chứa ngữ cảnh của dòng công việc chạy. -
corelà tham chiếu đến gói @actions/core này. -
iolà tham chiếu đến gói @actions/io này.
Tạo dòng công việc sử dụng Tập lệnh GitHub
Hành động Tập lệnh GitHub phù hợp với dòng công việc giống như bất kỳ hành động nào khác. Kết quả là, bạn thậm chí có thể kết hợp chúng với dòng công việc hiện có, chẳng hạn như những dòng công việc bạn có thể đã thiết lập cho CI/CD. Để minh họa sự tiện lợi của GitHub Script, bây giờ bạn sẽ xây dựng một dòng công việc hoàn chỉnh sử dụng nó để tự động đăng nhận xét cho tất cả các sự cố mới được tạo.
Bạn sẽ bắt đầu với một mệnh đề name và một on mệnh đề chỉ rõ rằng dòng công việc chạy khi các vấn đề được mở ra:
name: Learning GitHub Script
on:
issues:
types: [opened]
Tiếp theo, bạn sẽ xác định một công việc có comment tên chạy trên Linux với một loạt các bước:
jobs:
comment:
runs-on: ubuntu-latest
steps:
Trong trường hợp này, chỉ có một bước: hành động Tập lệnh 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!!!"
})
Sử dụng Hành động GitHub thực sự có thể giúp tự động hóa các sự kiện diễn ra trong kho lưu trữ của bạn. Hãy tưởng tượng rằng một khách truy cập kho đã mở một vấn đề mới chứa thông tin về một lỗi quan trọng. Bạn có thể muốn cảm ơn họ đã đưa lỗi vào sự chú ý của bạn, nhưng tác vụ đơn giản này có thể trở nên quá tải vì kho lưu trữ của bạn thu hút nhiều khách truy cập hơn. Bằng cách tự động hóa nhận xét vấn đề, bạn có thể tự động hóa quy trình cảm ơn khách truy cập mỗi lần.
Sử dụng actions/github-script@0.8.0
Hành actions/github-script@0.8.0 động này, còn được gọi là GitHub Script, thực hiện tất cả các công việc khó khăn cho việc tích hợp của bạn với API GitHub.
Hành động này yêu cầu github-token được cung cấp tại thời gian chạy để các yêu cầu được xác thực. Thao tác này được thực hiện tự động cho bạn, vì vậy bạn có thể sử dụng mã as-is.
Tham script có thể là hầu như bất kỳ JavaScript nào sử dụng máy khách octokit/rest/js được lưu trữ trong github. Trong trường hợp này, nó chỉ là một dòng (tách qua nhiều dòng để dễ đọc) tạo ra chú thích được mã hóa cứng.
Sau khi dòng công việc chạy, Tập lệnh GitHub ghi lại mã mà nó chạy để xem lại trên tab Hành động:
Chạy từ một tệp riêng biệt
Đôi khi, bạn có thể cần sử dụng một lượng mã đáng kể để đáp ứng kịch bản GitHub Script của mình. Khi điều đó xảy ra, bạn có thể giữ script trong một tệp riêng biệt và tham chiếu tập lệnh đó từ dòng công việc thay vì đặt tất cả tập lệnh tại chỗ.
Đây là ví dụ về một dòng công việc đơn giản sử dụng kỹ thuật đó:
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}))
Xem thêm các ví dụ về GitHub Script.