#看好了 GitHub Actions #我只示範一次 #GitHub Actions #Node.js #DevOps #Zeabur

萬籟聚集 - 自動化 Issue 管理與整合第三方服務

Date
2024.10.02
Category
自動化
Read Time
12 min
Word
3.5k
Last Mod
2024.10.02
課程 2024.10.02 萬籟聚集 - 自動化 Issue 管理與整合第三方服務

萬籟聚集 - 自動化 Issue 管理與整合第三方服務

戰國時期張儀遊說各國開放 API 給秦整合,才能夠瓦解合縱聯盟。

在這篇教程中,我們將探討如何整合外部 API 和服務,自動化 GitHub issue 管理,並使用 CodeRabbit 自動進行程式審查,Vercel 與 Zeabur 來實現自動化部屬。

今日範例程式:https://github.com/elvisdragonmao/2024-GitHub-Actions/tree/main/19

自動化 GitHub Issue 管理

步驟 1:設定 GitHub Actions 工作流程

我們首先需要設定一個 GitHub Actions 工作流程,當有新的 issue 建立或更新時,自動執行指定操作。例如,我們可以自動為新建立的 issue 標籤。

.github/workflows 目錄下建立一個 YAML 文件,例如 issue-management.yml,並添加以下內容:

YAML
name: Manage GitHub Issueson:  issues:    types: [opened, edited]jobs:  label:    runs-on: ubuntu-latest    steps:      - name: Checkout repository        uses: actions/checkout@v3      - name: Label new issues        uses: actions/github-script@v6        with:          script: |            const issue = context.issue;            const labels = ['new-issue'];            await github.issues.addLabels({              ...issue,              labels            });

這個工作流程在每次 issue 被建立或更新時自動為其添加一個標籤 new-issue

步驟 2:自動處理 Issue

假設我們想要在 issue 被標記為 bug 時,自動將其分配給一個特定的用戶。我們可以擴充上述 YAML 文件:

YAML
name: Manage GitHub Issueson:  issues:    types: [opened, edited]jobs:  label:    runs-on: ubuntu-latest    steps:      - name: Checkout repository        uses: actions/checkout@v3      - name: Label new issues        uses: actions/github-script@v6        with:          script: |            const issue = context.issue;            const labels = ['new-issue'];            await github.issues.addLabels({              ...issue,              labels            });      - name: Assign bug issues        if: contains(github.event.issue.labels.*.name, 'bug')        uses: actions/github-script@v6        with:          script: |            const issue = context.issue;            await github.issues.addAssignees({              ...issue,              assignees: ['specific-user']            });

整合第三方服務

有許多第三方服務可以幫助我們提高開發效率,大多不須要手動設定,只需要設定一些配置即可。這裡會介紹幾個我自己常用的服務。

CodeRabbit 程式審查

官網:CodeRabbit

比如說面對中電會大量的程式審查,有時候難免會出現遺漏的情況,這時候就可以使用 CodeRabbit 來自動進行程式審查。CodeRabbit 對於開源專案是完全免費的。

CodeRabbit
CodeRabbit

你只需要註冊並安裝至你的 GitHub 存儲庫,然後設定一些基本配置,就可以開始使用了。CodeRabbit 會自動檢查你的程式,並提供有關程式品質和風格的回饋。

安裝 CodeRabbit
安裝 CodeRabbit

你可以建立 .coderabbit.yaml 文件來配置程式審查的規則,例如以下是我們中電喵的設定:

YAML
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.jsonlanguage: "en-US"early_access: falsetone_instructions: "You are a smart cat"reviews:  profile: "assertive"  path_instructions:    - path: "templates/*.html"      instructions: "All text should follow sparanoid/chinese-copywriting-guidelines. There should be space between English and Chinese."  request_changes_workflow: false  high_level_summary: true  poem: true  review_status: true  collapse_walkthrough: false  auto_review:    enabled: true    drafts: true    base_branches:      - main      - developmentchat:  auto_reply: true

Vercel 部署

官網:Vercel

Vercel 是一個 serverless 的部署平台,可以幫助你快速部署靜態網站、API 和 Serverless 函數。只需將你的程式推送到 GitHub 存儲庫,Vercel 將自動構建和部署你的應用程序。

Vercel
Vercel

Vercel 最方便的是它會在每次程式推送後自動部署你的應用程序,你不需要手動操作。你可以存取 Vercel 的控制台來查看應用程序的部署狀態和日誌。

你可以使用 vercel.json 設定自動部署的規則,或是重新導向規則。例如只在特定分支推送時部署,或者只在特定時間部署。這樣可以確保你的應用程序始終保持最新狀態。

比如說我最用的就是在某些分支取消自動部屬,因為有些東西就是還沒做完每天都要看他噴錯寄 email 罵我也是很煩的。

參考配置:https://vercel.com/docs/projects/project-configuration

JSON
{	"git": {		"deploymentEnabled": {			"main": false,			"new-site": false		}	}}

或著是你可以設定一些簡單的重新導向規則:

JSON
{	"redirects": [{ "source": "/me", "destination": "/profile.html", "permanent": false }]}

Zeabur 自動化部屬

官網:Zeabur

Zeabur 是一個可以幫助你部署服務的平台,而且只需要透過幾個簡單的按鈕即可完成,無論你使用什麼程式語言或開發框架。Zeabur 採用按量計費的方式,你只需要為你的服務實際用到的資源付費,而不需要為整個伺服器付費。

控制台
控制台

如果你只是要部屬 serverless 函數,Zeabur 是完全免費的。你可以在 Zeabur 的控制台上查看你的服務的部署狀態和日誌,並設定自動部署規則。

專案設定
專案設定

通常 99% 的時間你不會需要,但你可以使用 zbpack.json 文件來配置你的服務,例如以下是一些簡單的配置範例:

JSON
{	"build_command": "npm install && npm run build:dist"}
JSON
{	"start_command": "php artisan migrate && _startup"}

小結

今天,我們探討了如何使用 GitHub Actions 自動化 issue 管理,並整合外部 API 來提高開發效率,並確保程式品質。希望這篇教程能幫助你更高效地管理項目和程式。

About me

毛哥EM

這裡是毛哥EM,一隻全端開發龍還有英文辯士。
熱愛開源、音樂、設計、獸迷文化,專研人機互動與人工智慧。

本部落格皆屬原創文章,採 CC BY-SA 4.0 授權,
轉載請註明來自毛哥EM資訊密技。
這篇文章對你有幫助嗎? 考慮幫我買瓶 Red Bull?

毛哥EM 角色插圖

Comments

留言區