0Pricing
DevOps Bootcamp · 课时

设置通知与告警

使用各种通信渠道,为流水线失败、成功或关键事件配置自动通知和告警

设置通知与告警 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。

为什么需要流水线通知?

在快节奏的开发过程中,了解您的持续集成/持续交付流水线的运行状况至关重要。自动通知可以让您的团队及时了解重要事件。

本课程将介绍如何使用 GitHub Actions 为成功、失败以及流水线中的其他重要里程碑设置警报。

内置 GitHub 通知

GitHub 开箱即提供基本通知。如果您“关注”某个仓库,就会收到工作流运行的电子邮件或网页通知。

  • 成功:工作流已完成。
  • 失败:工作流失败。
  • 中性:工作流已取消。

不过,这些通知通常面向个人,缺少高效持续集成/持续交付所需的实时团队沟通。

常用通知渠道

为了弥合这一差距,GitHub Actions 可以与各种外部服务集成。团队警报常用的渠道包括:

  • Slack:常用的团队沟通平台。
  • Microsoft Teams:另一种广泛使用的协作工具。
  • 电子邮件:适用于更正式或不太紧急的警报。
  • 自定义网络钩子:用于与几乎任何服务集成。

这些渠道可以提供集中化的实时更新。

通过 GitHub Actions 集成 Slack

与 Slack 集成是获取流水线即时更新的常用方式。您可以使用 GitHub Marketplace 操作,或直接向 Slack 网络钩子发送数据。

Marketplace 操作简化了这一过程,将 HTTP 请求的细节封装起来。

简单的 Slack 通知工作流

下面是一个基本工作流,它会在每次向 main 分支推送时发送 Slack 通知。请注意,这里使用了 GitHub 密钥来保存网络钩子 URL。

name: Notify on Push

on: 
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Send Slack Notification
        uses: rtCamp/action-slack-notify@v2
        env:
          SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
          SLACK_MESSAGE: "New push to main branch!"
          SLACK_COLOR: "good"

条件通知(失败时)

很多时候,您只希望在出现问题时收到通知。GitHub Actions 允许您使用 if: 表达式为步骤添加条件。

failure() 表达式会检查作业中之前的任一步骤是否失败。这样可以减少通信渠道中的无关消息。

name: Notify on Failure

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: This step will fail
        run: exit 1 # Simulate a failure

      - name: Send Failure Notification to Slack
        if: failure()
        uses: rtCamp/action-slack-notify@v2
        env:
          SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
          SLACK_MESSAGE: "Workflow failed on ${{ github.ref }}!"
          SLACK_COLOR: "danger"

自定义网络钩子警报

对于没有专用 GitHub Actions 的服务,您可以使用通用网络钩子。这需要通过 curl 向指定 URL 发出 HTTP POST 请求。

这种方式非常灵活,可以与自定义仪表板、事件管理系统,甚至 SMS 网关集成。

name: Custom Webhook Alert

on: [workflow_dispatch]

jobs:
  alert:
    runs-on: ubuntu-latest
    steps:
      - name: Send Custom Alert
        run: |
          curl -X POST -H "Content-Type: application/json" \
          -d '{"text":"A custom alert from GitHub Actions!"}' \
          ${{ secrets.CUSTOM_WEBHOOK_URL }}
        env:
          CUSTOM_WEBHOOK_URL: ${{ secrets.CUSTOM_WEBHOOK_URL }}

过滤通知范围

您可能希望为流水线的不同部分通知不同的团队。您可以使用 if: 条件,根据以下内容过滤通知:

  • 分支:github.ref == 'refs/heads/main'
  • 作业状态:always()、success()、failure()、cancelled()
  • 特定步骤:检查某个特定步骤的结果。

这样可以确保只有相关警报会发送给合适的人员。

保护通知密钥

网络钩子 URL 和通知服务的 API 令牌属于敏感信息。您绝不能将它们直接硬编码到工作流文件中。

请始终将它们存储为GitHub 密钥。这些密钥经过加密,并且只有在工作流执行期间才会暴露给运行器,从而保护您的凭据安全。

快速检查警报

请考虑一个用于构建和测试代码的工作流。我们希望仅在构建或测试步骤失败时收到 Slack 通知。

要实现这一点,Slack 通知步骤应使用哪个 if: 条件?

回顾:通知与警报

您已经学会了如何为 GitHub Actions 流水线设置自动通知和警报。要点如下:

  • 使用 Slack 或网络钩子等外部服务发送全团队警报。
  • Marketplace 操作可以简化与常用服务的集成。
  • 使用 if: 条件(例如 failure())发送有针对性的通知。
  • 始终使用 GitHub 密钥保护敏感的网络钩子 URL 和令牌。

有效的警报机制可以确保您的团队主动维护流水线的运行状况!

常见问题解答

「设置通知与告警」课时是免费的吗?

是的 — 「设置通知与告警」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。

「设置通知与告警」这节课中我会学到什么?

使用各种通信渠道,为流水线失败、成功或关键事件配置自动通知和告警 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「设置通知与告警」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 DevOps Bootcamp 课中编写并运行代码吗?

能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 流水线监控策略
  2. 与外部服务集成
  3. 设置通知与告警
  4. 结构化日志与分布式追踪
← 返回 DevOps Bootcamp