5
0
0
CI/CD 、Git、协同开发初练习

文章摘要
|
项目管理员
新建仓库,初始化readme,建分支main,develop。默认分支选main。
配置主机组,在个人中心,【流水线 Gitee go】标签那点击【主机管理】,按流程创建主机组,然后添加主机。
添加主机需要再ECS上执行一段代码,其实也就是安装agent(帮你部署代码的工人),在一个独立的空目录(/data/gitee-agent)里执行,如果不是以root身份执行的话,记得在gitee提供的代码的每处&&前添加sudo,一共添加三处。最后执行等待即可。
回到仓库,点击【流水线】标签,开通,然后新建空白流水线,使用图形操作界面,做个最简单的流程,全程不需要任何代码,最后点击保存即可,这次保存提交一次commit,会在代码根目录创建.workflow/*.yml(刚才保存时填的文件名)
按生产环境的标准,现在要建立分支保护,点击【管理】标签,创建分支保护,分别建立main和develop的分支保护,不允许直接push代码,谁能合并代码看团队选择。创建好后,还需要回到【代码】标签,做上角的分支,点开选择管理分支,编辑指定分支,选择保护,到这里才能生效,这流程会有点繁琐。
配置ssh密钥对,上传公钥到gitee后台。具体配置看站内《ssh基础》文章。
至此,前置条件完成,开始建立本地仓库>>>>>>
# 克隆仓库
git clone git@gitee.com:仓库地址
cd 仓库名
# 配置,也可以在config后面加 -global 设置全局配置
git config user.name "账号个人昵称"
git config user.email "账号的提交邮箱"
# 打开VB code编辑器,如果有的话
code .
# 本地修改好readme,例如用什么语言,框架等要开发前约好的东西,也配置好gitigonre
git checkout -b docs/init # 临时分支,因为develop不能直接push,推送后到gitee合并到develop即可
git add .
git commit -m "init: blog halo"
git push -u origin docs/init # 第一次执行,远程没有这个分支,只能指定。然后看gitee的流水线,一般会执行成功,因为脚本就是输出一段文字而已。
#
开发组
# 克隆仓库
git clone git@gitee.com:仓库地址
cd 仓库名 # 进入仓库
#
git checkout develop
git pull
git checkout -b feature/xxx
# 开发完后,配置config,写好部署yml,也就是.workflow/MasterPipeline.yml表
git add .
git commit -m "feature: xxx"
git push -u origin feature/xxx
# 后面就是项目管理员审阅代码并合并到develop,待积累到一定程度,就可以添加tag合并到main做一个发行版了。运维组
一般来说,脚本应该运维写,但是项目最熟悉就是开发组,所以现在偏向开发组来管理。待部署时遇到问题等再由运维组管理,或者gitee新建主机组的时候运维来弄,哈哈哈,起码也贡献了力量不是,嘻嘻。
脚本模板
version: "1.0"
name: MasterPipeline # 流水线唯一标识,多个yml情况下不能有相同的
displayName: 流水线-202609221626
stages:
- name: 执行部署 # 流水线内阶段标识,每个阶段的name不同一样
displayName: 执行部署
strategy: naturally # 自然失败策略。如果当前阶段里某个任务失败,只影响这个任务链条往下,其他并行链条继续跑完
trigger: auto # 自动触发。上一阶段构建成功后,自动执行这个阶段
steps:
- step: shell@agent
name: db8635ae-8084-4e34-b19e-d7a2c8cd98d7 # 构建步骤的唯一标识,系统自动生成的UUID
displayName: Shell 脚本执行
schedulerType: DISTRIBUTED # 分布式调度。表示这个步骤会被分发到远端主机(你的 ECS)上执行
scriptType: SH
script: |-
# 请在此输入您想执行的脚本
echo 'Hello Gitee!'
gitClone: "false" # 不重新克隆代码。因为默认工作目录里已经有代码了
hostGroupID:
ID: blog_web
hostID:
- ba25bfc3-f7e6-45ab-a933-4a47335a0b61 # 从流水线的图形界面获取
notify: # 通知级
- type: weixin
certificate: 2ac9a040-988e-013f-5f8b-2a11ef11c214
events:
- fail
content:
- pipeline
- stage
- task
- trigger
- operator
- detail
custom: ""
ats: ""
strategy:
retry: "0"
timeout: 30
triggers: # 触发级
trigger: auto # 触发器开关,auto 表示开启自动触发
push:
branches:
prefix:
- ""
precise: []
include: []
notify: []
