【问题标题】:How to send notification to Telegram from GitLab pipeline?如何从 GitLab 管道向 Telegram 发送通知?
【发布时间】:2022-01-24 02:01:37
【问题描述】:

在我们的小型初创公司中,我们使用 GitLab 进行开发,使用 Telegram 进行开发人员和 PO 之间的内部沟通。由于 PO 希望立即看到进度,我们设置了 GitLab 管道,以便在每次提交后将预览版本部署在 Web 服务器上。现在我们要扩展管道。这样在部署之后就会通过 Telegram 组发送通知。

所以问题 - 这可能吗?如果可以,怎么做?

编辑:因为我已经实现了,所以这不是一个真正的问题。我想在这里发布答案,以便其他人也可以使用它。

【问题讨论】:

    标签: notifications gitlab telegram


    【解决方案1】:

    所以,我们会一步一步来:

    1. 创建 Telegram 机器人
    2. 将机器人添加到电报组
    3. 找出 Telegram 组 ID
    4. 通过 GitLab 管道发送消息

    1。创建一个电报机器人

    Telegram 本身对此有足够好的指导:

    https://core.telegram.org/bots#6-botfather

    说明并没有明确说明任何内容,但要生成它,您必须与 BotFather 进行聊天。 最后你会得到一个机器人令牌,比如110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw

    2。将机器人添加到电报组

    切换到 Telegram 组,并将创建的机器人添加为成员(按名称查找机器人)。

    3。找出 Telegram 群组 ID

    在浏览器中获取机器人的更新状态: https://api.telegram.org/bot<YourBOTToken>/getUpdates

    在响应中查找聊天 ID: ... "chat": {"id": <YourGroupID>, ...

    查看详情:Telegram Bot - how to get a group chat id?

    4。通过 GitLab 管道发送消息

    使用 curl 命令发送消息。例如,可以为此目的扩展 gitlab 管道中的现有阶段:

    upload:
      stage: deploy
      image: alpine:latest
      script:
        - 'apk --no-cache add curl'
        - 'curl -X POST -H "Content-Type: application/json" -d "{\"chat_id\": \"<YourGroupID>\", \"text\": \"CI: new version was uploaded, see: https://preview.startup.com\"}" https://api.telegram.org/bot<YourBOTToken>/sendMessage '
      only:
        - main
    

    记得调整YourBOTTokenYourGroupID,以及消息的文本。

    *) 我们在这里使用 alpine docker 镜像,所以 curl 必须安装 - 'apk --no-cache add curl'。对于其他图像,这可能必须以不同的方式完成。

    【讨论】:

      【解决方案2】:

      发送通知(尤其是在您使用多种服务或聊天时)的一种简单方法是使用apprise

      发送到一个电报频道:

      apprise -vv --body="Notify telegram chat" \
        tgram://bottoken/ChatID1 \
      

      这使得一次性通知来自管道的多个服务变得容易,而无需针对每个服务的 API 编写代码(apprise 会为您处理)。

      image: python:3.9-slim # or :3.9-alpine if you prefer a smaller image
      before_script:
        - pip install apprise # consider caching PIP_CACHE_DIR for performance
      script: | 
        # Set a notification to multiple telegram chats, a yahoo email account, 
        # Slack, and a Kodi Server with a bit of added verbosity:
        apprise -vv --body="Notify more than one service" \
          tgram://bottoken/ChatID1/ChatID2/ChatIDN \
          mailto://user:password@yahoo.com \
          slack://token_a/token_b/token_c \
          kodi://example.com
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-08
        • 1970-01-01
        • 2020-08-20
        • 2021-03-07
        • 1970-01-01
        • 2012-04-03
        • 2015-11-13
        • 1970-01-01
        相关资源
        最近更新 更多