自从被裁员之后,逊哥就在家休息,偶而还是会技痒想写几行代码,所以一直想找个类似于git hub的代码仓库,因为一些众所周知的原因,github在国内访问不太爽利,所以一直想找个平替。
问了一下AI,推荐了几个,第一个是腾讯的coding。腾讯的域名是真不错。这个coding 也被翻译成扣钉,挺有中国特色的。
登陆还是挺简单的,用微信一扫就好。
一登进首先看到的就是研发任务工作,这让我想起以前公司用的octean,不知道有没有读者用过HP的QC或是ALM,这里应该是给scrum master或是项目经理管理任务的地方。
可以想像如果用coding这套平台,这里会是牛马每天登到这里查看自己任务的地方。 接下来是项目,没有什么好讲,一个项目会涉及到多个repo,这很容易理解,比如我们还需要编程成docker image部署到k8s的环境上来实现业务功能的集成测试。
一个代码仓库建好之后,会需要一些基本设置。我们有个基本需求,一般来说大家工作于一个代码仓库之上,这个仓库可能有几个分支,分别是master, dev等等。master主要用于阶段性的生成稳定的image用于系统集成测试。dev可能会更新活跃,用户新功能的开发,各developer的开发分支也是从dev上发现来的。阶段性的dev会合并到主分支上,保证master的更新。
每个developer可能有自己的一个开发分支,维护的比较松散,目的主要是为了发出merge request到dev。 而阶段性的会由repo owner将dev 合并到master上。
别的配置与github大同小异,注意下面
- master dev 要禁掉强制推送,。
除了特定人可以将改动直接push到master dev,developer只应该通过merge request合并到dev master
- 打开状态检查
这里的开启状态检查,是指coding上有套类似于gitlab 的cicd的东西,通过repo分支下的一个配置文件,决定在遇到特殊event时,比如push, mr之类的事件时,会跑对应的pipeline,来保证比如基本的UT和编译是没有问题的。
所以一旦开了,并配置了对应的步骤,就会产生对应的自动化ci过程。比如下面,保证npm install和npm test的UT都是跑通的。
所以对于dev /master分支,每次MR的提出,以及合并和推送都会跑下面的步骤。
从repo的云原生构建里可以看到历史构建过程。
多人协作:
传统的github和git lab一般来说都是你想贡献代码给一个repo,你需要 1)fork这个原repo到自己家 2)然后把自己家的fork repo ,git clone到本地电脑 3)这时本地会有两个头,一个是origin一般指的是自己家的fork repo,一个是upstream是源repo 4)开个分支改代码,改好,commit到本地分支 5)把本地改动推到origin自己家里 6)然后,从自己家里的fork repo->改动分支,发一个MR到源repo->目标分支 比如master 7)下次再干活就需要git pull 或是git fetch一下拉一下远程的改动,同步到自己的本地
但是 coding貌似没有这个fork,让我很迷。 对于某项目,你是owner,需要邀请一个同事,这个同事需要注册coding帐户,邀请成功,在他家就可以看到你share过去的项目和下面的repo
在这种模式下,没有找到如上面所说的那种习惯的工作模式。只能:
在repo上为每个developer开个开发分支,wang_develop, li_develop developer只能往自己的分支上推, 推完之后,就可以向dev发merge request,而merge request会检查冲突,如果有冲突需要解决。 同时dev的ci 配置会引起一次构建,如果失败无法merge , 同时这个merge reqeust可以配置强制code review,如果不过也没办法merge
从而实现对代码的修改控制
最后说一下持续集成
这里的持续集成其实就是jenkinfile风格的自动构建,比如我们上面的例子中会将代码最终编成docker image并上传到artifactory。在coding这里叫制品。
可以首先加一个仓库,选定为docker 类型
可以通过向导的方式为客户创建一个jenkinsFile,也可以将这个jenkinsFile放到自己的repo/branch下,这样实现版本控制。编译或是构建的过程可以使用coding的云主机来进行,也可以连接自已的构建环境。
免费用户有如下的额度
随着对supply chain security的关注,现在coding也引入了制品扫描,可以发现制品中的cve等安全隐患 ,就是不太清楚他集成了什么扫描工具。
总体试用之后,感觉coding已经涵盖了
软件产品生产过程的
项目与需求管理 Task 管理 代码管理 构建 CI/CD Artifactory 管理 安全扫描
等各方面,足以应对小规模的开发团队的日常开发管理活动。值得一试!