在现代化开发工具链里面就包含了自动化的通讯工具,而日志写代码我是推到 Gitlab 平台上,我今天听了郭锐大佬的分享之后,感觉我现在的团队的自动化做的远远不够。我在他的课程上学到的最重要一句话就是做工具不是从零到一最难,有很多非常厉害好用的工具最后都没用上的原因是没有加入到开发链条上。所以我用最简单的工具做实践,在 Gitlab 上的代码审查每次都需要自己手动将代码审查链接发给对应的审查者,这样的效率很低,于是我就打通了通讯工具和代码平台之间的联系,开始一步步打造适合自己团队的工具

这只是一个简单的工具,下面让我告诉大家做出来的效果

让 Gitlab 的 MergeRequest 每次有变更的时候,就在 MatterMost 发送信息给审查者催他进行代码审查

我现在团队使用的通讯工具主要是 MatterMost 工具,因为这个工具首先是开源的,第二是支持很多的定制和很多的插件。推荐小伙伴了解一下 MatterMost 这个工具

效果

我在 MatterMost 创建了代码审查频道,这个频道里面将会被机器人发送很多代码审查链接

之前都是纯手工发送链接,同时需要手工催审查者审查

而用上了工具的效果如下

核心用的技术就是 Gitlab 的 WebHook 和 dotnet core 集成到 Mattermost 聊天工具 两个技术

使用方法

下面让我告诉大家如何使用我这个工具关联你自己的 GitLab 和 Mattermost 工具

首先在 github 将这个仓库的代码通过 git clone 下载,然后使用 VisualStudio 2019 打开哦

git clone git@github.com:dotnet-campus/DotNetGitLabWebHook.git

开发要求如下

  • VisualStudio 2019 打开预览版
  • dotnet core 3.0 预览版

打开 appsettings.json 文件,此时将可以看到 MatterMostCodeReviewUrl 内容,请将他替换为你自己的 MatterMost 链接,获取链接方式如下

dotnet core 集成到 Mattermost 聊天工具 这篇博客有告诉大家如何拿到链接,本文这里就简单说一下

点击主菜单,打开集成页面

点击添加钩子

输入一个标题和选择频道,我这里选择的是之前创建的代码审查频道

现在就可以看到一个链接了

我的链接是 http://127.0.0.1:8065/hooks/xjkyn7ks1pn7xeho1f5ifxqhxh 请将本文下面代码用到的这个链接替换为你自己的

appsettings.json 文件替换一下链接,文件如下

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"MatterMostCodeReviewUrl": "http://127.0.0.1:8065/hooks/xjkyn7ks1pn7xeho1f5ifxqhxh"
}

然后在 VisualStudio 将代码运行,我在 Program.cs 设置了监听默认的端口是 5006 暂时还没做到配置里面

下一步就是在 Gitlab 的项目上添加 WebHook 了

通过 cmd 命令输入 ipconfig 就可以知道自己的设备的 ip 地址了,理论上如果是内网的 Gitlab 是可以访问到你的地址的,如果不可以就需要找 IT 小伙伴聊聊,弄个服务器玩

先在 GitLab 创建一个个人项目用于测试

点击 Integrations Settings 进行设置

在 URL 填写自己的 IP 拼接的链接

http://你的ip:5006/GitLabWebHook/MergeRequest

勾选 Merge request events 然后取消打开 SSL 和去掉 Push events 然后点击添加

此时尝试新建一个 MergeRequest 测试一下

如果上面步骤没有错,应该可以在 MatterMost 上看到链接

嗯,代码现在还在进行优化,关键是将这个工具用起来,十分欢迎大家加入开发

在 Gitlab 开启 MatterMost 机器人

我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新

如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入


本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

ASP.NET Core 连接 GitLab 与 MatterMost 打造 devops 工具的更多相关文章

  1. Asp.Net Core 连接Mysql

    上一篇文章里最后在VS里测试是没有问题的,但是在Windows命令行模式下会报错. 首先用dotnet restore命令的时候会出现error: 然后用dotnet run会出现警告,但是依旧会成功 ...

  2. asp.net core连接sqlserver

    开发环境:win7,vs2017,sqlserver2014 vs上建立一个asp.net core web项目和一个.net core的类库项目DBA 简单起见,在DBA项目中就一个类SqlServ ...

  3. 处理asp.net core连接mysql的一个异常Sequence contains more than one matching element

    晚上在那里调程序,把mysql.data组件的nuget包进行了更新,前几天好好的程序,开始抛错,跟踪断点发现以下的异常: Unable to connect to any of the specif ...

  4. 当asp.net core偶遇docker二(打造个人docker镜像)

    网络上的docker容器总有一些不尽人意的感觉,这个时候,就需要自己diy一个自用的. 比如我们想在163的mysql 5.7内diy一下,结果发现,这个不带vim,我想改造一个自用的mysql镜像, ...

  5. asp.net core 系列 22 EF(连接字符串,连接复原,DbContext)

    一.连接字符串 在上二篇中,ASP.NET Core 应用程序连接字符串是写死在ConfigureServices代码中,下面介绍通过配置来实现.连接字符串可以存储在 appsettings.json ...

  6. 玩转ASP.NET Core中的日志组件

    简介 日志组件,作为程序员使用频率最高的组件,给程序员开发调试程序提供了必要的信息.ASP.NET Core中内置了一个通用日志接口ILogger,并实现了多种内置的日志提供器,例如 Console ...

  7. Entity Framework Core系列之实战(ASP.NET Core MVC应用程序)

    本示例演示在ASP.NET 应用程序中使用EF CORE创建数据库并对其做基本的增删改查操作.当然我们默认你的机器上已经安装了.NET CORE SDK以及合适的IDE.本例使用的是Visual St ...

  8. ASP.NET Core Startup类 Configure()方法 | ASP.NET Core 中间件详细说明

    ASP.NET Core 程序启动过程如下 目录 Startup 类 Configure() 方法 中间件 使用中间件 Configure 方法 的参数 IApplicationBuilder Ext ...

  9. .NET Core 3.0预览版7中的ASP.NET Core和Blazor更新

    .NET Core 3.0 Preview 7现已推出,它包含一系列ASP.NET Core和Blazor的新更新. 以下是此预览中的新功能列表: 最新的Visual Studio预览包括.NET C ...

随机推荐

  1. Docker Remote API使用准备

    1 修改配置文件 CentOS: /etc/sysconfig/docker Ubuntu: /etc/init/docker.conf 1.添加: DOCKER_OPTS='-H tcp://0.0 ...

  2. hdu2577 dp

    也可以字符串搞.dp思路还是很清晰的.dp[][0]表示未锁定,dp[][1]表示锁定键. #include<stdio.h> #include<string.h> #defi ...

  3. Java练习 SDUT-2561_九九乘法表

    九九乘法表 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 九九乘法表是数学学习的基础,今天我们就来看看乘法表的相关问题 ...

  4. 【C++】为什么构造函数没有返回值?(转载)

    为什么构造函数没有返回值?   意见(1) 我认为构造函数隐含的返回值就是this,因为构造函数是在类的对象产生时自动调用.构造函数被调用也就意味着产生了一个对象,而this指针是与对象实体相关联的, ...

  5. 巨蟒python全栈开发-第11阶段 ansible_project2

    一个NB的网站: https://www.toolfk.com/ CDN:将用户的需求送到最近的节点:内容分发网络 有些是专门做CDN的工具 常用的markdown是需要知道的,短信有字数限制. we ...

  6. XAML 特效

    <Window x:Class="WpfApp5.MainWindow" xmlns="http://schemas.microsoft.com/winfx/200 ...

  7. SDUT-3343_数据结构实验之二叉树四:(先序中序)还原二叉树

    数据结构实验之二叉树四:(先序中序)还原二叉树 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 给定一棵二叉树的先序遍历 ...

  8. jQuery学习笔记之可见性过滤选择器

    可见性过滤选择器是根据元素的可见和不可见状态来选择相应的元素. 显示隐藏的例子: <!DOCTYPE html> <html> <head> <script ...

  9. 随机线性网络编码的C语言实现,实现可靠传输:原理(1)

    线性方程组,大家都不陌生吧.来一组 A11 *X1 + A12 *X2 + A13 *X3 + A14 *X4 =Q1 A21 *X1 + A22 *X2 + A23 *X3 + A24 *X4 =Q ...

  10. HDU 4417 Super Mario 主席树查询区间小于某个值的个数

    #include<iostream> #include<string.h> #include<algorithm> #include<stdio.h> ...