配置完成后,可选择在GitLab中的项目发生Issue、Merge Request、push等事件时向Mattermos的指定频道推送通知消息;
创建通知钩子时必须指定频道;即,创建的钩子只能用于通知某个频道。在Mattermost中,团队相当于软件部门,频道相当于部门下的项目团队。可以创建多个私有或公开频道,并为每个频道创建通知钩子;频道通过通知钩子来接收来自GitLab等平台的通知消息。可以为一个频道创建多个通知钩子,以便接收不同系统、不同来源的通知消息。
1>. 默认情况下,GitLab不允许出站请求指向本身本机网络,例如: http://localhost
、http://127.0.0.1
、http://192.168.*.*
、http://10.*.*.*
、http://172.16.*.*
等。也就说如果Mattermost和Gitlab在同一台服务器上时,Gitlab是无法向调用Mattermost的通知钩子的;因此,请按下图配置允许本地网络请求(勾选后,请点击“保存更改”)。
2>. 选择某个组或项目,点击 “设置/Settings” → “集成/Integrations” →“Mattermost notifications”,所下图所示添加Mattermost通知:
注:如果没有“Mattermost通知”这个集成项,说明当前组或项目已经添加过此项,因为同一个组或项目只能添加一次;
3>. 配置Mattermost通知时,要设定触发通知的事件(例如:Issue、Merge Request、Pipeline 等)和钩子链接。
配置钩子链接时要注意:如果Mattermost和Gitlab部署在同一台服务器的Docker中,那Docker中容器之间的互相访问要使用容器名称;例如:http://mattermost.10.12.0:8066/hooks/egms4i6k43fgic787kqshwijoc,其中mattermost.10.12.0
就是mattermost
容器的名称;容器之间的这种互相访问的前提是Mattermost和Gitlab容器都加入到了同一个自定义网络中;Docker容器之间的访问也属于本地请求,因此在GitLab的出站请求中必须放开本地网络限制。还有就是,容器之间访问时不经过外部端口映射;例如:Mattermost的端口映射是 -p 8066:8065
,但容器之间访问时使用的是8065端口而非宿主机的8066;也可以在直接使用Mattermost的局域网IP,而不是直接访问Mattermost的容器地址;
配置完成了,必须点击“测试设置”以验证配置的正确性。
Mattermost安装和集成GitLab详见:https://sidoc.cn/article/1568.html