Bài tập - Sử dụng Tập lệnh GitHub trong Hành động GitHub

Đã hoàn thành

Trong đơn vị này, bạn sẽ tìm hiểu thêm về cách bạn có thể sử dụng GitHub Script để cải thiện dòng công việc của bạn.

Thêm sự cố vào bảng dự án

Ngoài việc sử dụng octokit/rest.js để tạo nhận xét và yêu cầu kéo mở, bạn cũng có thể sử dụng octokit/rest.js quản lý Dự án GitHub. Trong mẫu mã sau đây, bạn tạo dòng công việc chạy bất cứ khi nào có ai thêm vấn đề mới vào kho. Điều này thêm sự cố vào bảng dự án, giúp bạn dễ dàng phân loại công việc của mình hơn.

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"
            });

Phần đầu tiên của dòng công việc này tạo chú thích mỗi khi có vấn đề mới được tạo, được đề cập trong đơn vị trước đó. Phần tiếp theo tạo ra một thẻ dựa trên vấn đề này và thêm nó vào bảng dự án.

Tách dòng công việc thành các bước

Một lợi ích của việc sử dụng hành động là bạn có thể tách riêng công việc thành các đơn vị công việc nhỏ hơn được gọi là bước. Trong dòng công việc mẫu trước đó, bạn có thể phân tách dòng công việc thành hai bước.

Một ưu điểm của việc chia dòng công việc hiện tại thành nhiều bước là cho phép bạn sử dụng biểu thức để áp dụng lô-gic. Sử dụng các bước cho phép bạn tạo quy tắc xung quanh khi các bước được phép chạy và có thể giúp tối ưu hóa quy trình chạy dòng công việc của bạn.

Để phân tách dòng công việc ví dụ thành các bước:

  • Đặt tên cho từng bước để bạn có thể theo dõi bước đó từ tab Hành động.
  • Sử dụng biểu thức để xác định xem một bước có nên chạy (tùy chọn).

Trong ví dụ này, hai tác vụ trong tệp dòng công việc gốc được phân tách thành các bước riêng lẻ:

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"
            });

Mỗi bước bao gồm một thành phần mô name tả cũng giúp bạn theo dõi nó từ tab Hành động.

Bước Add issue to project board này cũng bao gồm một if tuyên bố chỉ rõ rằng sự cố chỉ nên được thêm vào bảng dự án nếu được gắn nhãn bug.

Sử dụng môi Node.js này

GitHub Script cũng cấp cho bạn quyền truy cập vào một môi trường Node.js đầy đủ. Mặc dù chúng tôi khuyên bạn không nên sử dụng GitHub Script để viết lô-gic cho các hành động phức tạp, nhưng bạn có thể sử dụng tập lệnh này để thêm nhiều chức năng hơn vào API octo/rest.js.

Ví dụ: bạn có thể sử dụng Node.js để hiển thị hướng dẫn đóng góp bất cứ khi nào sự cố được mở. Bạn có thể sử dụng Node.js thống tệp để đọc và sử dụng tệp làm nội dung của chú thích sự cố. Để truy nhập các tệp trong kho lưu trữ, hãy đưa hành actions/checkout này vào bước đầu tiên trong dòng công việc.

Ví dụ sau đây thực hiện những thay đổi sau đây đối với tệp dòng công việc:

  • Thêm hành action/checkout động để đọc tệp phản hồi theo mẫu nằm tại .github/ISSUE_RESPONSES/comment.md
  • Thêm JavaScript để sử dụng mô-đun Node.js File System để đặt nội dung phản hồi đã được chúng tôi mẫu làm nội dung của nhận xét vấn đề
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"
            });

GitHub Script đã giúp bạn tạo ra một phản hồi toàn diện cho một vấn đề mới. Phản hồi này cũng dựa trên một mẫu trong kho lưu trữ, vì vậy rất dễ dàng để thay đổi. Cuối cùng, bạn cũng đã tích hợp yếu tố kích hoạt để thêm sự cố vào bảng dự án để bạn có thể dễ dàng phân loại sự cố đó cho công việc trong tương lai.