在我们的小型启动中,我们使用GitLab进行开发,使用电报进行开发人员和PO之间的内部通信。由于PO希望立即看到进度,所以我们已经设置了GitLab管道,以便在每次提交后在web服务器上部署预览版本。现在我们要扩大输油管道。因此,在部署之后,通过Telegram组发送通知。
所以问题是--这有可能吗?如果可能的话,怎么做?
编辑:既然我已经实现了,这不是一个真正的问题。我想在这里张贴答案,以便其他人也可以使用它。
发布于 2021-12-22 22:50:34
所以,我们将一步一步地完成:
1.创建一个电报机器人
电报本身就有足够好的指示来说明这一点:
https://core.telegram.org/bots#6-botfather
指令没有明确说明任何内容,但是要生成它,您必须进入与BotFather的聊天。最后,您将得到一个机器人令牌,类似于110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw
2.在电报组中加入bot
切换到Telegram组,并将创建的bot添加为成员(按名称查找bot )。
3.查找电报组Id
获取浏览器中bot的更新状态:https://api.telegram.org/bot<YourBOTToken>/getUpdates
在响应:... "chat": {"id": <YourGroupID>, ...中找到聊天id
有关更多细节,请参见:电报机器人-如何获得一个团体聊天的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记住修改YourBOTToken和YourGroupID,以及消息的文本。
*)我们在这里使用高寒码头映像,因此必须安装- 'apk --no-cache add curl'。对于其他图像,这可能必须以不同的方式完成。
发布于 2021-12-22 23:21:12
发送通知的一种简单方法(特别是在使用多个服务或聊天时)是使用报应。
发送到一个电报频道:
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.comhttps://stackoverflow.com/questions/70455939
复制相似问题