1.前言
VS自带的源码管理工具可以很方便的连接到Azure DevOps(即原来的VSTS),相比于Github,Azure DevOps功能更加强大,能够对项目进行编译、测试、发布等。因此我们可以使用Azure DevOps对自己GitHub上的项目做持续集成,并利用Github来开源自己的代码。 本文主要介绍实现Azure DevOps与Github代码同步的过程,文中所使用的项目以我的开源项目CoreSpatial为例。
2.新建项目
首先,需要在Azure DevOps新建一个项目,项目名同样为CoreSpatial。

图 1
因为这个项目已经在Github上存在了,因此,我们需要将这个项目导入到Azure DevOps。进入项目后,点击左侧“Repos”,然后在上方菜单处点击代码仓库切换按钮,可以看到“Import repository”选项(如图2),点击此选项,然后填写Github上仓库的代码位置,即可将代码导入到Azure DevOps中。 注意,在导入时,Name不能与现在的代码仓库同名,例如现在已经有一个“CoreSpatial”的仓库了,这个Name就不能再为CoreSpatial了。我们可以在导入代码后,将通过仓库切换按钮下来菜单中的“Manage repositories”(如图2)将原来的默认仓库删除,并将新导入的仓库名改为“CoreSpatial”。

图 2


图 3
3.创建Pipeline
3.1.新建Pipeline
点击Pipelines,然后创建Pipeline,此时,选择使用classic editor(如图4所示)。
接着选择代码仓库(如图5),在选择Pipeline模板时,选择使用空的job(如图6所示)。

图 4

图 5

图 6
3.2.添加任务步骤
接着,我们再Pipeline添加“命令行工具”(位于Utility下,如图7(1)),然后选中刚添加的任务步骤,并在右侧的面板中填写“Display Name”和“Script”选项(如图8)。Display Name仅是一个用于显示这个步骤的名称,可以随便填写,Script中则填写相关的git操作脚本(如图7(2))。
为了避免直接修改Github上的代码仓库,导致push时的合并冲突,先选择从Github上拉取下代码,然后在推送。因此,这个命令行工具主要用于pull代码,然后还需要再添加一个命令行工具,这个工具用于push代码到Github上。添加步骤与上相同,主要是在填写Script时有所不同。

(1)

(2)
图 7
要想操作Github上的代码,必须要有相关的授权权限才可,否则直接push肯定是会被拒绝的,因此,需要先到Github上申请一个“Personal access token”,位置位于“Settings/Developer settings”下。需要注意的是,这个token仅在创建时会显示一次,以后均不在显示,也无法查询。
获取到“Person access token”后,回到Azure DevOps中,在Pipeline上方选择“Variables”标签,然后添加一个新的变量githubToken,value为上述申请得到的Github的“Person access token”。此时,将要操作的Github的仓库地址改为:“https://$(githubToken)@github.com/zxyao145/CoreSpatial.git”,即可对远程仓库进行push操作(如图8所示)。

图 8
3.3.设置触发器
为了使得每次向Azure DevOps上推送代码时,Azure DevOps能够自动向Github上同步,需要为Pipeline添加触发器,开启持续集成选项。
选择上方选项卡中的Triggers,然后在右侧选中“Enable continuous integration”选项,此时我们还可以在下方对持续集成的分支进行筛选(如图9所示)。

图 9
至此,同步工作已经完成。当然,还可以在这个管道中添加build等其他步骤。