首页 > 其他分享 >.Net 创建webhooks Demo,可用于Gitlab等Workflow

.Net 创建webhooks Demo,可用于Gitlab等Workflow

时间:2024-03-12 15:11:19浏览次数:20  
标签:set string get Demo Gitlab var Workflow null public

框架:.Net 6 、webapi
package:GitLabApiClient


定义body参数DTO,不同event有不同的参数,具体可参考gitlab文档:https://docs.gitlab.com/ee/user/project/integrations/webhook_events.html

public class GitLabWebhookData
{
    public string Ref { get; set; }
    public string Before { get; set; }
    public string object_kind { get; set; }
    public string event_type { get; set; }
    public string After { get; set; }
    public string UserName { get; set; }
    public string UserEmail { get; set; }
    public List<Commit> Commits { get; set; }
    public ObjectAttributes object_attributes { get; set; }
    public User User { get; set; }
}
public class Commit
{
    public string Id { get; set; }
    public string Message { get; set; }
}

public class ObjectAttributes
{
    public string Note { get; set; }
    public string noteable_type { get; set; }
}

public class User
{
    public string Name { get; set; }
    public string Email { get; set; }
    // Add more properties as needed
}

定义controller,一定要是Post请求

[HttpPost("webhooks"),AllowAnonymous]
public async Task<string> Demo([FromBody] GitLabWebhookData data)
{
    _logger.LogInformation(JsonConvert.SerializeObject(data));

    ### Add your workflow

    return JsonConvert.SerializeObject(data);
}

部署之后,把 http:XXXXX/api/webhooks放入到Url中,并选择要触发的事件

触发comment event返回的结果如下:

{"Ref":null,"Before":null,"object_kind":"note","event_type":"note","After":null,"UserName":null,"UserEmail":null,"Commits":null,"object_attributes":{"Note":"656565","noteable_type":"MergeRequest"},"User":{"Name":"XXXX","Email":"[REDACTED]"}}

若有需要,我们也可以主动操作gitlab,透过api请求,下面使用packageGitLabApiClient来做Demo。首先需要设置Access Tokens,

// if you have auth token:
GitLabClient client = new GitLabClient("https://gitlab.XXX.com.cn", "U2WPMRgfXUydn1QKafcS");
//使用GitLabClient 创建comment event
var result = await client.MergeRequests.CreateNoteAsync(2583, 1, new CreateMergeRequestNoteRequest("8787887887788788787"));
return JsonConvert.SerializeObject(result);
我们也可以通过api请求,本质上package也是透过api请求的
HttpClient client = new HttpClient();

var gitLabUrl = "https://gitlab-k8s.XXXX.com.cn";
var privateToken = "U2WPMRgfXUydn1QKafcS";
var projectId = "2583";
var mergeRequestId = "1";
var comment = "your-comment";

client.DefaultRequestHeaders.Add("PRIVATE-TOKEN", privateToken);
var tempc = JsonConvert.SerializeObject(new { body = comment });
var content = new StringContent(tempc, Encoding.UTF8, "application/json");

var response = await client.PostAsync($"{gitLabUrl}/api/v4/projects/{projectId}/merge_requests/{mergeRequestId}/notes", content);

Console.WriteLine(await response.Content.ReadAsStringAsync()); 
//{"id":133288,"type":null,"body":"your-comment","attachment":null,"author":{"id":1129,"username":"project_2583_bot","name":"****","state":"active","avatar_url":null,"web_url":"https://gitlab-k8s.wzs.wistron.com.cn/project_2583_bot"},"created_at":"2024-03-08T11:49:33.891+08:00","updated_at":"2024-03-08T11:49:33.891+08:00","system":false,"noteable_id":46213,"noteable_type":"MergeRequest","resolvable":false,"confidential":false,"internal":false,"noteable_iid":1,"commands_changes":{}}

标签:set,string,get,Demo,Gitlab,var,Workflow,null,public
From: https://www.cnblogs.com/hwxing/p/18068291

相关文章

  • Docker部署GitLab-2024
    搭建公司/个人私有化的Gitlab/Github代码版本管理平台文章耗时:5天(终于全流程走通),相关的应用或问题将持续更新。朗读全文Yourbrowserdoesnotsupporttheaudioelement.怎么用条件:个人域名,公网IP的小主机或服务器(或购得的VPS或网络服务器)根据‘实现方法’中的步骤用d......
  • Gitlab如何将多个项目移动到指定目录/群组?
    将您的个人项目移至群组本教程将向您展示如何将个人项目移动到群组中。为什么群组很重要?在极狐GitLab中,使用群组可以同时管理一个或多个相关项目。群组具有很多的好处。例如,您可以:管理您的项目的权限。查看群组中项目的所有议题和合并请求。查看您命名空间中的所有项目......
  • 常见问题解决 --- 海康OpenAPI安全认证库的demo运行报错
    我要开发一个对接海康isc平台的oss的api,发现需要有海康登录库和ak、sk的配合才能完成。在海康官方下载OpenAPI安全认证库(JAVA)V1.1.11,解压后用idea打开demo发现一对报错。解决办法:1.修复基本的错误。比如包名报错,应该是  packagega; 2.修复maven依赖导入报错。首先是artem......
  • comfy UI 的workflow对应的json文件
    {"3":{"inputs":{"seed":404663911490888,"steps":30,"cfg":7,"sampler_name":"dpmpp_2m","scheduler":"karras","denoi......
  • 详细解读Gitlab Runner中SSH到远程服务器的细节
    生成特有的密钥对用windows的命令行生成即可$ssh-keygen-trsa-C"[email protected]"执行如下图:上述命令行中,密钥保存在C:\Users\d211.ssh目录下:把上述公钥拷贝到目标服务器的对应用户目录下比方我们要在目标服务器,用上述私钥,以用户runner的身份登入。那么我们在目标......
  • 如何在CentOS 安装极狐GitLab Runner?
    本文作者:徐晓伟GitLab是一个全球知名的一体化DevOps平台,很多人都通过私有化部署GitLab来进行源代码托管。极狐GitLab是GitLab在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。基于CentOS和极狐GitLab官方仓库脚本安装/配置GitLabRunner文档......
  • CompletableFuture Demo
    CompletableFutureDemo题目:有一个数据库client,从数据库中取数据A和数据B,然后求和。请使用并发的知识,尽快的完成操作。/***{@code@author:}keboom*{@code@date:}2024/3/8*{@code@description:}*/publicclassDataBaseClient{@SneakyThrowspublic......
  • 如何配置极狐GitLab Maven 仓库
    本文作者:徐晓伟GitLab是一个全球知名的一体化DevOps平台,很多人都通过私有化部署GitLab来进行源代码托管。极狐GitLab是GitLab在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。极狐GitLabMaven仓库极狐GitLabMaven私库使用方式文档软件包库中......
  • Sonarqube 使用授权Gitlab账号登录 Sonarqube 手记
      Sonarqube使用授权Gitlab账号登录Sonarqube手记1、安装部署sonarqbue  参考:https://www.cnblogs.com/nb-blog/p/17988874 2、安装部署gitlab参考:https://www.cnblogs.com/nb-blog/p/17965971 我是通过k8s部署argocd 使用argocd进行的sonar......
  • 如何部署极狐GitLab Runner Cache 缓存配置?
    本文作者:徐晓伟GitLab是一个全球知名的一体化DevOps平台,很多人都通过私有化部署GitLab来进行源代码托管。极狐GitLab是GitLab在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。极狐GitLabRunnerCache缓存支持S3标准协议,如:OSS、OOS等等支持S3......