首页 > 解决方案 > 如何仅获取 git commit 的未阻止作者电子邮件

问题描述

我需要从 jenkins 向 git commit 的作者发送一封电子邮件通知。

为了获得 git commit 作者,我使用了 sh 脚本:

git_emails = sh ( 
          script: "git log --format='%cE%n%aE%n%gE' ${gitLogCommand} | sort -u", 
          returnStdout: true 
        ).trim()

在发送邮件之前,我需要检查返回的作者是否在 Gitlab 中被屏蔽。

有没有人知道如何做到这一点!谢谢你。

编辑:从 Gitlab 阻止用户

在此处输入图像描述

标签: gitjenkinsjenkins-pipeline

解决方案


  • 转到此处(或者更确切地说,您的私人 GitLab 上的等效设置:用户设置 > 访问令牌)并生成具有read_user权限的访问令牌。一定要复制它,否则你再也看不到它了(你必须制作一个新的)。

  • 您可以发出以下命令:

    curl -H "Private-Token: $token" "https://gitlab.com/api/v4/users/?username=$username"
    

    $token您创建的令牌在哪里,以及$username您要检查的用户的 GitLab 用户名在哪里。(同样,您可能需要调整 URL 以匹配您的 GitLab 所在的位置,我认为您在这里不是在谈论 gitlab.com。)您也可以通过电子邮件搜索,使用search=$email而不是username=$username.

    你会得到一个 JSON。其中一个字段是state,可以是activeblocked。您可以使用该jq实用程序或任何更高级别的编程语言来解析 JSON 并查找state字段的值。

    或者,您可以附加&active=true; 这样,如果用户未被阻止,您将获得该用户,[]如果被阻止,您将获得一个空数组 ( )。这会更容易在 bash 中测试,因为您只需要查看结果是否正确"[]"。(您也可以进行相反的测试,&blocked=true仅在被阻止时返回用户。)

您可以在此处找到相关文档。


推荐阅读