zoukankan      html  css  js  c++  java
  • GitHub + VSTS 开源代码双向同步

    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命令进行简单修改即可。


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

    qrcode_for_gh_b7c158df1fd1_430

  • 相关阅读:
    flask ajax
    python 符合条件跳过下一次循环
    python使用openpyxl excel 合并拆分单元格
    等价类划分法
    python 同级目录包导入问题,使用"."错误
    django:查询,反向查询
    Python实现程序执行次数的计数
    python 2x SSH通道连接服务器读取数据库和中文编码问题
    Python for 循环中使用append()添加可变元素,前面的值被覆盖,循环中内存应用地址不变
    以概率列表选择对应元素,轮盘概率选择Python实现
  • 原文地址:https://www.cnblogs.com/ups216/p/5475389.html
Copyright © 2011-2022 走看看