GitHub + VSTS 开源代码双向同步

原创 2016年05月31日 22:18:51

GitHub已经是全球开源代码的大本营了,通过以下统计你可以看到仅仅javascript在github就有超过32万个活动的repo。很多开发人员都会把自己的一部分代码分享到github上进行开源,一方面可以提高自己在编程领域的知名度,也可以吸引其他的开发人员帮助你一起改进,当然还可以认识更多的朋友,要不怎么说github其实是个交友网站呢。

github-code-stats

但是github上免费的repo只能是公开的,对于一些我们不希望完全开源的项目,就没有办法免费分享了,当然你可以付费升级到专业版,这样就可以托管私有repo了。

Visual Studio Team System是微软提供的免费的企业级软件开发Saas服务,提供免费的私有git repo服务。我周围的很多朋友都将自己或者公司的项目托管在VSTS上,其中也有一部分是开源的。

结合GitHub免费的公有repo和VSTS上免费的私有repo,我们可以搭建一套内外结合的开源代码开发平台,让我们可以控制哪些代码开源,同时接受社区对开源代码的贡献。常见场景主要有:

  • 将私有的repo的master分支与公有repo的master分支进行双向同步,支持主要发行版与社区的分享,接受PR。
  • 将私有repo的特定分支与公有repo的master分支进行双向同步,支持特定发行版与社区的分享,接受PR;在内部经过新一轮PR后并入私有master分支。
  • 支持私有发行版与公有发行版的差异化发布。
  • 支持自动和手动同步。

在VSTS上创建CI来完成同步配置

VSTS上的CI引擎内置对GitHub和VSTS本身自带的git的支持,借助这个功能我们可以很容易的建立同步机制。

1. 建立从VSTS到GitHub的同步作业

建立一个构建定义,使用Empty的模版,选择VSTS上的repo作为代码来源

build-def-from-vsts

在里面添加2个Command line的任务,分别配置成以下命令

Git pull https://github.com/ups216/vsalm-hols.git master
Git push https://$(githubtoken)@github.com/ups216/vsalm-hols.git head:master

build-def-vsts-cmd1

build-def-vsts-cmd2

你会注意到在第二个命令中我使用了一个叫做$(githubtoken)的参数。你可以通过GitHub生成这样一个Personal Access Token,并使用以下页面绑定到构建定义,这样在运行的时候用户是看不到这个token的具体内容的。

build-def-vsts-pat

注意图中箭头所指向的加锁标注,VSTS会采用加密的方式存储密钥,确保用户看不到具体内容。

2. 建立从GitHub到VSTS的同步作业

这里的配置过程相反,在第一步我们创建一个从GitHub上获取代码的构建定义

build-def-from-github

然后运行以下两个命令

Git pull https://$(vststoken)@almnetworks.visualstudio.com/DefaultCollection/_git/vsalm-hols master
Git push https://$(vststoken)@almnetworks.visualstudio.com/DefaultCollection/_git/vsalm-hols head:master

你会注意到这里在pull和push的命令上都用了$(vststoken)参数,这是因为我们所操作的vsts上的repo是一个私有的repo,读取和写入都需要认证。

建立好以上配置我们就可以测试这个双向同步过程了,以下是测试视频:

以上是最简单的针对master分支的双向同步配置,如果需要同步特定分支,我们只需要对git命令进行简单修改即可。

本文基于以下博客:
https://nkdagility.com/open-source-vsts-tfs-github-better-devops/


请关注微信公众号 【devopshub】,获取更多关于DevOps研发运维一体化的信息

qrcode_for_gh_b7c158df1fd1_430

github上传自己的开源代码

这是我第一次应用git,以下仅供git的初学者参考。 github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开。这对于一般人来...
  • xdrt81y
  • xdrt81y
  • 2014年03月11日 17:56
  • 15036

怎样在Github上托管开源代码库

大家好,今天我们要学习一下怎样在 github.com 提供的仓库中托管开源软件源代码。GitHub 是一个基于 web 的 Git 仓库托管服务,提供基于 git 的分布式版本控制和源代码管理(SC...

github 开源代码托管

github作为程序员必备的工作技能之一,我学起来还是很费力,在此记录学习历程 1. 如何将新建号的项目上传至github#在要托管的项目根目录下生成.git文件,将此文件夹变成本地仓库(re...

大公司在github的开源代码

Alibaba(阿里巴巴):阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的18人,于1999年在中国杭州创立。 https://github.com/alibaba...

开源代码上传GitHub

GitHub代码上传 1、进入GitHub主页,登录自己的账号,添加新的repository:  输入项目名和项目描述:  2、利用终端进行代码上传: cd project...

160多个android开源代码汇总

第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListView、ActionBar、Menu、ViewPager、Gallery、GridView、ImageView、...

开源代码应用之Eclipse篇

开写这篇的时候,恰逢Eclipse Mars(4.5)正式发布,终于由日蚀变登火星了,也离我开始基于Eclipse开发产品已经过去10年,这10年间,经历了Eclipse由私有核心框架到拥抱OSGi,...

怎样阅读一份PHP开源代码

怎样阅读一份PHP开源代码 很多朋友估计都会在网上下载开源的PHP源代码,style="font-weight:bold;">PHP源代码怎么用很简单:将...

图像视觉领域部分新进展对应的开源代码

转自:http://ms.csdn.net/share/F3BBE1CF72ADF09FAC05AAB06F0E3B08_1_IPHONE_APP 图像视觉领域部分新进展对应的开源代码 ...

指纹识别开源代码SourceAFIS使用入门

SourceAFIS是一个人类指纹识别库,它可以比较两个指纹(1:1模式)是否属于同一个人,或搜索一个大型数据库(1:N模式)找出该指纹的身份。它需要原始指纹图像的输入,并产生匹配得分的输出。提供 ....
  • ss910
  • ss910
  • 2017年07月09日 09:36
  • 939
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:GitHub + VSTS 开源代码双向同步
举报原因:
原因补充:

(最多只允许输入30个字)