# 代码库管理
DevOps项目管理中的代码库模块支持将Gitlab、Gihub、Bitbucket、Svn、Tfs关联至项目,并集成了高频功能,方便用户对代码库进行管理,支持对代码库打标签。
项目负责人需要在项目的设计阶段初始化好代码库,并将代码库关联至项目,支持批量关联,此处配置的账号密码作为后续CI流水线执行拉取代码任务时的认证账号,此处配置的Private_Token作为后续流水线代码类别任务代码服务器接口调用token。
属性名称 | 必填 | 描述 | 示例 |
---|---|---|---|
代码库类型 | 是 | 需正确选择代码库类型,支持Gitlab、Gihub、Bitbucket、Svn、Tfs | Gitlab |
代码库地址 | 否 | 配置正确的代码库地址 | http://euler.git.primeton.com/devops/devops.git |
用户名 | 否 | 建议配置代码库owner或者该库管理员账号 | *** |
密码 | 否 | 配置正确的密码 | *** |
Private_Token | 否 | 需要在代码服务器创建该用户Private_Token并在此配置 | *** |
分支使用策略 | 否 | 支持TBD、Github-Flow两种策略,非强制,仅做标识 | TBD |
组件 | 否 | 可选择关联组件,当组件发布成功后,可在应用全链路视图中查看源码所属代码库 | demo |
代码库描述 | 否 | 描述信息 | 无 |
如涉及到代码库人员的变更,需要配置管理人员操作平台级功能,先配置代码库集成。
eg. 以Gitlab类型举例,保证代码库名称唯一,配置正确的代码库地址,Private_Token无需填写。
在Gitlab权限配置页面,配管需要正确选择代码服务器、代码库以及DevOps的项目,然后授予DevOps项目成员以何种角色加入代码库,Gitlab默认代码库角色有Owner、Master、Developer、Reporter、Guest,点击更新保存DevOps项目成员的代码库权限。
# Private_Token创建说明
以Gitlab12.4举例,如图,进入Gitlab创建Access_Token页面,勾选api权限,不需要配置时间。
创建好后将Access_Token配置到DevOps用户的个人凭证中。
# 功能详解
说明:建议分别控制项目负责人以及开发人员的代码库模块操作权限,不建议除项目负责人外的所有角色拥有关联/编辑/解除关联代码库的权限、创建/锁定/删除分支的权限、创建/删除标签的权限、创建/删除webhook的权限。
# commits菜单
选择一个代码库进入代码库详情页面,commits菜单提供项目成员按分支或标签浏览产品代码库提交记录的能力。
支持代码提交记录评论的能力,并通知到指定人员。
eg. 开发人员可以浏览commit记录并提供对应commit的评论,比如提出修正意见、提出疑惑等。
支持代码提交记录revert、patch、cherry-pick能力。
eg. 开发人员提交代码到代码库后,可选择执行revert,重置提交记录;也可以选择将某次提交记录通过pacth能力打包变更的源码;或者将某次提交记录(比如将一个新特性从A开发分支复制到B开发分支)cherry-pick到另外的分支。
通过代码库webhook能力,支持浏览代码提交记录关联工作项信息。
勾选包含构建信息,可以以代码库提交历史记录的角度,了解构建历史信息。
# 代码菜单
代码菜单提供给项目成员浏览产品源码的能力。
# 分支菜单
当新建一个代码库后,一般默认master为主干分支,主干要确保稳定安全,大多数情况下不允许直接向主干提交代码,而是拉取新的分支作为开发分支,在开发分支拉取新的分支作为测试分支,开发、测试完成后,再将开发分支合并到主干上,存在多开发分支并行的情景。
在分支菜单中,项目负责人可以执行新建分支、下载分支源码包、删除分支、锁定分支的功能。
eg. 创建一个dev分支作为开发分支,同时也可在dev分支基础上创建特性分支,特性分支开发完成后合并至dev并销毁。
eg. 当分支创建错误时,可选择删除分支。
eg. 当产品发版前,需要保证源码稳定性,禁止开发人员提交代码或合并代码时,项目负责人可以锁定分支。
# 标签菜单
产品发布时,需要项目负责人在主干打一个标签,标识产品发布源码版本。
支持下载标签所记录版本源码,支持删除标签。
# MergeRequests菜单
此菜单管理当前代码库所有合并请求,以合并请求状态区分为4个页面:Open、Merged、Closed、All,创建MergeRequests需要在版本对比页面执行。
点击合并请求的查看按钮可以浏览合并请求的评论以及详情信息。
合并请求状态为可合并(代表源码不存在冲突)时,拥有权限的用户可以执行同意合并请求能力来执行代码合并,亦或者拒绝合并,选择关闭合并请求,同样,也可以选择删除创建错误的合并请求。
eg. 举例说明,在dev分支基础上拉取一个新的特性分支来开发新功能,当新功能开发完毕后,创建MergeRequests请求,将新功能从特性分支合并至dev分支。
# WebHook菜单
此页面管理当前代码库所有webhook,支持创建和删除。
通过webhook的能力,DevOps有效的将工作项到源码再到构建的环节串联起来,当代码库配置有代码提交触发的webhook时,对当前代码库提交代码时只要commit message满足特定的格式 ( eg. Update: DEVOPS-000(工作项key), 描述信息 ) 即可将该条commit记录关联至工作项的代码提交记录。
当代码库配置有代码提交触发、tag创建触发、merge请求触发的webhook时,且构建定义的代码触发策略匹配该库,则当事件被触发时会自动执行该构建定义的流水线任务。
eg. 项目负责人要求开发人员提交代码满足特定的规范,可以将需求与代码提交记录进行匹配,为需求管理到开发管理提供便利;产品CI流水线配置代码提交触发策略,可以实现自动打包产品,便于部署开发环境。
# 版本对比菜单
版本对比菜单提供了不同分支之间差异对比能力,分别以提交记录和变更文件两个角度来看分支之间的差异。
项目负责人可以在该页面创建MergeRequest。
eg. 审批人范围根据代码库配置决定,默认为拥有Developer及以上权限的人员,可以专门指定审批人,该审批人必须是代码库成员;删除源分支指的是当合并请求审批通过后,源分支将被销毁;压缩commits信息指的是当请求被合并后,源分支相较于目标分支的差异commit记录被压缩为一条commit记录体现在目标分支中。
# 代码分析菜单
提供sonarQube扫描源码质量的能力,需要保证源码根目录中存在sonar-project.properties文件,且在服务集成中配置有sonar6.3服务。
支持查看分析结果以及查看流水线日志。
eg. 一般情况下,可以定期执行代码质量扫描,来保证代码健康度,如一周一次,建议在构建流水线中配置sonar质量扫描任务来执行代码质量扫描,并设定定时策略,示例流水线配置如下。