集成通知服務 - 在 GitHub Actions 中配置 Slack 通知和生成報告文件
雅典軍隊如果有 Slack 通知,斐迪庇得斯就不用趕著從馬拉松跑回雅典了。
在持續集成和持續部署 (CI/CD) 流程中,及時了解工作流程的狀態對於快速響應和改進至關重要。本文將介紹如何在 GitHub Actions 工作流程中集成 Slack 通知服務,以便在工作流程運行時獲得實時通知,以及如何生成報告文件來跟蹤工作流程的結果。
今日範例程式:https://github.com/Edit-Mr/2024-GitHub-Actions/tree/main/26
今天的文章假設你會使用 Slack,並且已經有一個 Slack 工作區。如果你還沒有,可以參考 Slack 官方文檔 來創建一個。
GitHub Actions 中配置 Slack 通知
創建 Slack 應用並獲取 Webhook URL
-
創建 Slack 應用
- 進入 Slack API 頁面。
- 點擊
Create New App
。 - 選擇
From scratch
,並輸入應用的名稱和所屬工作區。 - 點擊
Create App
。
-
設置 Incoming Webhook
- 在應用設置頁面,點擊
Incoming Webhooks
。 - 點擊
Activate Incoming Webhooks
。 - 點擊
Add New Webhook to Workspace
。 - 選擇要發送通知的頻道,並點擊
Allow
。 - 複製 Webhook URL,稍後會在 GitHub Actions 中使用。
- 在應用設置頁面,點擊
配置 GitHub Actions 工作流程
-
創建工作流程文件
在
.github/workflows
目錄下創建一個新的工作流程文件,例如notify-slack.yml
,並加入以下內容:1name: Notify Slack 2 3on: 4 push: 5 branches: 6 - main 7 pull_request: 8 9jobs: 10 notify: 11 runs-on: ubuntu-latest 12 13 steps: 14 - name: Checkout code 15 uses: actions/checkout@v3 16 17 - name: Notify Slack 18 uses: slackapi/slack-github-action@v1 19 with: 20 slack-token: ${{ secrets.SLACK_TOKEN }} 21 channel-id: "C1234567890" # 替換為你的頻道 ID 22 text: "工作流程已完成!查看詳細信息:[工作流程鏈接](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})"
解釋:
slack-token
: 使用 GitHub Secrets 存儲你的 Slack Token。channel-id
: 你的 Slack 頻道 ID。text
: 訊息文本,包括工作流程鏈接。
-
配置 GitHub Secrets
將你的 Slack Token 添加到 GitHub Secrets:
- 進入你的 GitHub repository 頁面。
- 點擊
Settings
>Secrets and variables
>Actions
。 - 點擊
New repository secret
。 - 添加名為
SLACK_TOKEN
的 secret,並填入你的 Slack Token。
生成報告文件
編寫生成報告的腳本
-
創建報告生成腳本
在
src
目錄下創建一個腳本文件,例如generate-report.js
,並添加以下內容:1import fs from "fs"; 2import path from "path"; 3 4const reportFilePath = path.join(__dirname, "report.md"); 5 6// 模擬生成報告的內容 7const reportContent = ` 8# 工作流程報告 9 10**日期**: ${new Date().toLocaleDateString()} 11 12## 總結 13 14本次工作流程運行成功。 15 16## 詳細信息 17 18- [工作流程鏈接](https://github.com/${process.env.GITHUB_REPOSITORY}/actions/runs/${process.env.GITHUB_RUN_ID}) 19`; 20 21// 將報告內容寫入文件 22fs.writeFileSync(reportFilePath, reportContent, "utf8"); 23 24console.log("報告已生成");
步驟 2: 配置 GitHub Actions 生成報告文件
-
更新工作流程文件
在
.github/workflows
目錄下創建流程文件,例如generate-report.yml
,並加入以下內容:1name: Generate Report 2 3on: 4 push: 5 branches: 6 - main 7 pull_request: 8 9jobs: 10 report: 11 runs-on: ubuntu-latest 12 13 steps: 14 - name: Checkout code 15 uses: actions/checkout@v3 16 17 - name: Set up Node.js 18 uses: actions/setup-node@v3 19 with: 20 node-version: "20" 21 22 - name: Install dependencies 23 run: npm install 24 25 - name: Generate report 26 run: node src/generate-report.js 27 28 - name: Commit and push report 29 run: | 30 git config --local user.email "action@github.com" 31 git config --local user.name "GitHub Actions" 32 git add report.md 33 git commit -m "📝 Update report" 34 git push
解釋:
Generate report
: 運行生成報告的腳本。Commit and push report
: 將生成的報告文件提交到 repository。
小結
在本文中,我們介紹了如何在 GitHub Actions 工作流程中配置 Slack 通知,以便實時了解工作流程的狀態,並如何生成報告文件以跟蹤工作流程的結果。當然今天的練習非常的簡單,你可以根據實際需求進行擴展,例如添加更多通知類型、生成更複雜的報告等。