我们的工具德维奥是一个支持Git、Subversion和Mercurial的代码托管和协作平台。我们有一个客户案例,他们使用VersionOne。在VersionOne中,有一个委托流功能,允许他们将Git存储库中的提交链接到VersionOne中的任务。
目前,VersionOne提交流只支持GitHub、Gitlab和Bitbucket。是否有任何方法将任意的Git存储库集成到VersionOne委员会?我最初的想法是建立一个代理,将来自VersionOne提交流中的链接的请求转发给Deveo对应方。
发布于 2016-03-10 22:03:26
如果给定的VCS或前端(如GitHub、GitLab、Bitbucket、VSO)支持Webhooks,那么向CommitStream添加对它的支持是相当标准的。CommitStream是用Node和GetEventStore编写的,是开源的,我们正在接受拉请求:D。
在Deveo的例子中,我在系统中看到了一些关于Webhooks的文档,网址是:http://support.deveo.com/knowledgebase/articles/494691-using-deveo-webhooks。
这包括一个样本有效载荷。如果说任意的Git存储库,您指的是与Deveo相关联的Git存储库,从而导致触发Deveo Webhooks,那么我认为这乍一看是可行的。
对于每个VCS,我们有一个简单的转换函数,它接受入站有效负载,并在将这些公共属性和原始消息保存到EventStore之前选择一些公共属性。
下面是gitLabTranslator.js,例如:
还有,一些测试用例是这样的:
GitHub、GitLab和Bitbucket翻译器彼此非常相似。
但是,每个模块具有相同的基本“接口”。我不知道Deveo Web钩子消息的格式在一个VCS和另一个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' }
}
}如果你想多聊聊这件事,我很乐意。此外,您也可以跳到我们的Gitter.im频道为CommitStream在https://gitter.im/openAgile/CommitStream.Web。
https://stackoverflow.com/questions/35775835
复制相似问题