从gitlab webhooks访问api

时间:2014-04-02 20:00:16

标签: api gitlab webhooks

我需要为自动部署开发一堆我自己的Web挂钩(或服务),报告到项目管理系统等。 但发布到网络挂钩的数据并没有足够的信息来满足我的需求。

例如,我收到了简单的推送事件,我怎么知道是否强制推送?好的,我有2个树木,让我们看看存储库并检查这个push-oops,需要用户令牌才能完成。悲伤。

从Web钩子访问gitlab api的正确方法是什么?可能我错过了一些重要的事情?我真的很困惑。


Upd1:

让我们尝试找到解决方案。可能性

  1. 想象一下,我们可以让用户能够阅读gitlab中的所有项目。但 该用户应连接到每个项目以获得访问权限。好 - (

  2. 如何通过推杆阅读回购?我们不能,因为我们需要使用他的私人令牌来执行此操作。

  3. 也许有些内部功能可以阅读所有回购或其他内容?当然不是。

  4. 因此。也许数据库?不。因为我们首先需要克隆repo,并且无论如何都不能使用刷新的缓存来保存数据库。

  5. 我认为我们需要一个安全令牌,可能还有许多复选框,每个加入的Web挂钩或应用程序(服务)都具有访问权限。

    请随时分享您的想法。

1 个答案:

答案 0 :(得分:1)

我记得部分解决方案。所以场景就是这样:

  1. 使用您的网络连接创建网络服务。
  2. 在同一主机上为某些特殊(通常是Web挂钩服务的所有者)用户创建一个ssh密钥,以便有权访问repos。
  3. 将上一步创建的ssh密钥添加为部署密钥。
  4. 最后:注册您的webhook并将该钩子的部署密钥添加到项目中 - 为需要此钩子的每个项目重复它。
  5. 您有事件监听器(您的Web挂钩服务),并且您可以访问该存储库(ssh / git)。

    但该解决方案仍无法访问API本身。


    可能还有另一种解决方案。

    1. 使用大随机密码和一些合成名称(如HookBot等)创建自定义管理员用户,请记住该用户的private_token;
    2. 注册您的网络摘要;
    3. 使用api访问权限添加部署密钥与HookBot(未经测试);
    4. 使用sudo api获取源代码或其他内容。只是模仿推杆的帐户(sudo -u {author_id})然后继续,阅读回购,使用它等等。
    5. 也许是另一种解决方案?更合法吗?