任何 git 存储库和 versionone commitstream 之间的集成

Integration between any git repository and versionone commitstream

我们的工具 Deveo, is a code hosting and collaboration platform that supports Git, Subversion and Mercurial. We have a customer case, where they utilise VersionOne. In VersionOne there's a commitstream 功能允许他们 link 在 Git 存储库中提交到 VersionOne 中的任务。

目前 VersionOne commitstream 仅支持 GitHub、Gitlab 和 Bitbucket。有什么方法可以将任意 Git 存储库集成到 VersionOne Commitstream 中吗?我最初的想法是设置一个代理,将 VersionOne commitstream 中的 links 的请求转发给 Deveo 对应方。

如果给定的 VCS 或前端(如 GitHub、GitLab、Bitbucket、VSO)支持 Webhooks,那么将对它的支持添加到 CommitStream 的过程是相当标准的。 CommitStream 是用 Node 和 GetEventStore 编写的,是开源的,我们正在接受 pull-requests :D

就 Deveo 而言,我在您的系统中看到了一些关于 Webhook 的文档:http://support.deveo.com/knowledgebase/articles/494691-using-deveo-webhooks

这包括一个示例负载。如果通过任意 Git 个存储库,你的意思是 Git 个与 Deveo 关联的存储库,因此将导致那些 Deveo Webhooks 被触发,那么我认为乍一看这是可行的。

对于每个 VCS,我们都有一个简单的转换器函数,它接受入站负载并在将这些通用属性和原始消息保存到 EventStore 之前挑选出一些通用属性。

这里是gitLabTranslator.js,例如:

https://github.com/openAgile/CommitStream.Web/blob/develop/src/app/api/translators/es6/gitLabTranslator.js

还有一些测试用例:

https://github.com/openAgile/CommitStream.Web/blob/develop/src/app/test/api/translators/gitLabTranslator.tests.js

GitHub、GitLab 和 Bitbucket 转换器彼此非常相似。

Visual Studio 在线翻译 Git 有点不同:https://github.com/openAgile/CommitStream.Web/blob/develop/src/app/api/translators/es6/vsoGitTranslator.js

但是,每个模块都有相同的基本"interface"。我不知道 Deveo Webhook 消息的格式是否因一个 VCS 而异,但如果我假设没有,那么它看起来像:

const deveoTranslator = {
  family: 'Deveo', // Provides a unique VCS "family" name for this translator.
  canTranslate(request) {
   // Returns true/false by inspecting the inbound request's headers / body properties.
  },
  translatePush(pushEvent, instanceId, digestId, inboxId) {
   // Returns an array of translated commit messages that conform to the "standard" set of common properties.
  },
  getProperties(event) {
    // Returns an object in the form of { repo : 'text name of the repositoryt', repoHref: 'http://link.to/theRepo', branchHref: 'http://link.to/theRepo/branchName' }        
  }
}

如果你想就此讨论更多,我很乐意。此外,您可以在 https://gitter.im/openAgile/CommitStream.Web

进入我们的 Gitter.im CommitStream 频道