提高协同开发过程中分支合并部署效率及敏捷度,所谓敏捷度在LightMerge中主要体现在一下功能:
- 可以轻松选择需要部署分支
- 可以从已经部署分支中剔除不需要分支
- 可见已经有哪些分支部署
- 协助解析冲突
LightMerge 不等于自动构建、不等于自动部署、他处于这些步骤的上游,能让我们自由控制对分支的部署,能基于开发分支为粒度自由组合部署。
为了确保LightMerge能适用于没有Git仓库API权限的团队也能使用LM的功能,LM是基于用户角度SSH拉取合并推送代码的,故你需要确保:
- 部署的机器ssh公钥已经被添加到你的Git账号内
- 关联公钥的Git账号具备所要控制项目的推送权限
最好的验证就是你可以在该机器,通过ssh协议进行对项目的拉取推送。
配置文件存放在 ~/.lightmerge/config.json
# 为注释,真实配置请移除注视
{
"safeConfig": {
# 由于采用ssh访问git仓库,这里填入你的私钥位置
# 由于私钥头的区别,请使用 ssh-keygen -m PEM -t ecdsa -b 521 命令来生成私钥并将填入此
"privateKeyPosition": "~/.ssh/id_rsa"
},
"projectRepository": {
# 项目配置,每一个都是一个项目
"projects": {
"yourProjectName": {
# 项目名称
"projectName": "yourProjectName",
# 项目的ssh地址
"remoteAddress": "git@github.com:ZhaoYueNing/lightmerge.git",
# 泳道,这里的泳道实际指一个远程目标分支
"swimlaneMap": {
# qa 代表选中分支会被合并到原创 qa
"qa": {
# 与key保持同名
"swimlaneName": "qa",
# 远程目标分支名称与Key保持同名
"remotePushBranchName": "qa"
},
"rd": {
"swimlaneName": "rd",
"remotePushBranchName": "rd"
}
}
}
}
}
}
一份范例
{
"safeConfig": {
"privateKeyPosition": "C:\\Users\\MyUserName\\.ssh\\id_ecdsa"
},
"projectRepository": {
"projects": {
"TestProject": {
"projectName": "TestProject",
"remoteAddress": "git@github.com:buynowdev/lightmerge-test.git",
"swimlaneMap": {
"dev": {
"swimlaneName": "dev",
"remotePushBranchName": "dev"
},
"sit": {
"swimlaneName": "sit",
"remotePushBranchName": "sit"
}
}
}
}
}
}
-
java -jar light-merge-*.jar --server.port=9000
-
docker镜像
buynow/lightmerge
-
docker run -p 8099:8099 -v {你本地.lightmerge 的配置目录}:/root/.lightmerge/ buynow/lightmerge java -jar /app/light-merge.jar --server-port=8090
- 前端 @Jarvan
- 后端 @ZhaoYueNing