一、自动打包的使用场景
近半年一直在参与几个移动互联网的App前后端相关技术工作,其中有一个比较典型的需求。
就是运营和产品同学希望能够在运营平台通过可视化界面,针对Java、Android、Vue进行指定版本指定环境的动态打包。
这个需求其实很普遍,整理的实现过程是这样的。
本篇文章,主要探讨,Gitlab相关信息如果在运营后台进行可视化展现。
二、技术栈构成
运营平台后端使用SpringBoot、MybatisPlus、Retrofit,前端使用Vue+Guns。
三、运营后台SpringBoot接入GitLab
3.1 登录GitLab,采集基础信息
project id:项目标号信息,一般情况都是一个id类型的数字。采集位置如下:
申请账号token:主要用于在springboot项目中访问GitLab时候,识别用户权限的。位置如下:
其中,红色方框描述的是生成的token,具备什么样的操作权限。
3.2 配置访问接口,读取项目信息
因为使用的是Retrofit进行了的GitLab数据拉取,所以核心在于接口文件的描述。application扫描的代码略掉,接口文件配置演示内容如下:
/**
* @author zhangjian
* @version 1.0.0
* @date 2021/6/12
* @since 1.0.0
*/
@RetrofitClient(baseUrl = "http://"主机地址)
public interface FishnovelAndroid {
/**
* 查询分支信息
* @return
*/
@GET("/api/v4/projects/73/repository/branches?private_token=Y1zycWpT-eYLNyKB_Jzz")
List<ProjectBranche> getProjectBranchs(@Query("page")int page,
@Query("per_page")int count);
/**
* 查询默认分支提交记录
* @return
*/
@GET("/api/v4/projects/73/repository/commits?private_token=Y1zycWpT-eYLNyKB_Jzz")
List<ProjectCommitRecord> getProjectCommitRecord(@Query("page")int page,
@Query("per_page")int count);
/**
* 根据分支信息查询提交记录
* @param branchName 分支名
* @param page 页码,默认1
* @param count 每页数据量,极限值100
* @return
*
*/
@GET("/api/v4/projects/73/repository/commits?private_token=Y1zycWpT-eYLNyKB_Jzz")
List<ProjectCommitRecord> getProjectCommitRecordForBranch(@Query("ref_name")String branchName,
@Query("page")int page,
@Query("per_page")int count);
}
通过上述几个接口,就可以顺利拉取到GitLab中project id 为73这个项目的分支信息
和提交记录
。
四、注意事项
重点关注接口文件的配置
@RetrofitClient
指向的是GitLab服务器IP或者域名地址,切记不要是堡垒机关联的内网地址,否则访问不到。
接口地址/api/v4/projects/73/repository/commits?private_token=Y1zycWpT-eYLNyKB_Jzz
中,73是GitLab中项目的project id信息,private_token描述的是访问GitLab的token信息,其他地址信息固定。
项目project id 信息需要在业务数据库手动维护,在运营后台展示,通过选中操作,指定某个project id ,通过动态拼接参数就可以动态访问,实现暂时忽略。