前言
应开发及同事需求,为方便代码管理及构建部署,使用Teambition提供的行云(Codeup)及飞流(Flow)进行代码管理,代码评审,构建部署以及线上自动更新。这里以PHP项目为模板。
前提
- 服务器中须安装最新版本的 Git,具体的安装教程请自行查找;
- 服务器中须安装最新版本的 Composer,具体的安装教程请自行查找;
- 注册 Teambition账号,并在应用管理中添加行云和飞流应用;
- 将本地及服务器中的sshkey添加至行云中:账号 => ssh密钥;
注:脚本在执行ssh连接时可能会提示如下:
这是需要输入yes才能继续操作,否则会导致后面构建部署时通过ssh无法clone代码至服务器中,因此可以:
(1). 在服务器中先clone一次进行添加hostkey至know_hosts中;
(2). 在ssh_config中进行配置,打开/etc/ssh/ssh_config文件,找到:
# StrictHostKeyChecking ask
更改为:
StrictHostKeyChecking no
行云(Codeup)
- 代码组
可根据需求新建不同的代码组用于区分:
- 代码库
可在代码组中新建代码库,亦可直接在首页进行新建:
至此,代码库建立完毕,可通过git命令进行clone,修改提交:
- 代码评审配置:
-
- 进入代码库主界面,点击右上角的设置按钮进入设置项:
在当前页面中可对代码库的基本信息进行修改,具体操作请自行学习实践;
- 进入代码库主界面,点击右上角的设置按钮进入设置项:
-
- 选择分支设置:
点击新建保护分支规则进行分支规则设置:
可根据项目的具体需要选择相应的分支,推送规则以及合并规则,开启要求合并前通过代码评审功能并设置评审人数及人员
- 选择分支设置:
-
至此,既可以通过行云对代码进行git管理以及多人评审。
飞流(Flow)
- 概念
流水线:可初略理解为代码构建部署任务 - 新建流水线:
-
- 选择流水线模板:
注:此教程只列举Git代码库的构建部署,其他的模板可根据需求自行选择对应的流水线模板
- 选择流水线模板:
-
- 添加代码源:
在添加代码源页面中选择代码源,并选择相应的代码库及分支,并开启代码源触发,触发事件及触发分支根据各自需求自行选择。此处也可暂不开启代码源触发,然后在触发设置中开启Webhooks。
- 添加代码源:
-
- 阶段1中设置任务:
点击阶段1下的空任务,在右边弹框中设置任务名称,并:
添加任务步骤 => 选择构建 => 选择获取Git版本,并根据需求修改步骤名称及制品名称(可不用修改)
添加完步骤和插件后点击右上角的仅保存进行任务保存
注:可选择添加多个任务步骤,也可添加任务插件,流程大致一致,就不在此一一复述,感兴趣的同学可以试试;
- 阶段1中设置任务:
-
- 阶段1设置完任务后,在新阶段中添加新的任务:
(1). 在选择任务组界面选择部署,找到并选择主机部署(无构建包):
注:任务名称可根据需求自行修改
(2). 选择主机组:
主机组为部署运行项目所需的服务器(组)
若当前没有可使用的主机组,则需要新建主机组:
若阿里云账号并没有对Teambition进行服务授权的话则需要先进行授权:
点击添加主机界面的新建服务授权按钮:
授权完成后在添加主机页面选择服务授权,地区及可添加的主机列表:
选择完成后继续下一步保存主机信息方便以后选择:
注:主机名称及主机组环境可根据需求自行填写选择
- 阶段1设置完任务后,在新阶段中添加新的任务:
-
- 保存好主机组信息后在部署中就可选择相应的主机进行部署:
因我们创建的是个空模板,且阶段1中的任务为获取Git版本,故部署时需要用脚本进行部署:
注:此为脚本示例,具体脚本内容可根据需求自行编写cd /var/www/html # 判断当前项目是否存在,若不存在则clone,否则pull if [ ! -d "your_project_name" ]; then #export GIT_REPO=$(echo ${GIT_REPO} | base64 -d) #export GIT_BRANCH=$(echo ${GIT_BRANCH}| base64 -d) #export COMMIT_ID=$(echo ${COMMIT_ID} | base64 -d) #echo ${GIT_REPO} #echo ${GIT_BRANCH} #echo ${COMMIT_ID} git clone your_project_git_link -b your_project_branch(default master) if [ $? -ne 0 ]; then echo "loading"; else cd your_project_name composer install fi else cd your_project_name git pull if [ $? -ne 0 ]; then echo "loading"; else compsoer update fi fi
注: 选择部署策略时推荐以不暂停的方式进行部署,因为选择第一批暂停或者每批暂停都可能导致部署过程中已运行的项目无法访问。
至此完成了流程部署。
- 保存好主机组信息后在部署中就可选择相应的主机进行部署:
-
- 完成流程部署后进行触发设置:
触发方式有两种,可根据需求自行选择,
(1). webhook触发:配合行云实现自动部署
开启了webhook触发后,复制将Webhook复制到你的触发器下的触发路径,然后打开行云,进入当前项目的设置,找到Webhooks项:
若在选择代源时开启了开启代码源触发的话,当前页面中已有了webhooks配置:
选择当前已有的webhooks进行编辑:
将之前复制的流水线中触发设置中webhooks中的webhook覆盖掉已有的url,触发器可根据需求进行选择,因我行云当前项目开启了代码评审,故此处我需要开启合并请求事件触发。
确定保存后可点击测试hook测试当前webhook是否生效:
(2):定时触发:可设定时间定时运行流水线任务,具体请查看官方文档:
- 完成流程部署后进行触发设置:
-
- 在行云中设置完Webhook后返回飞流中的当前流水线中:
至此飞流也已经配置完成了,可以点击界面右上角的保存并运行来测试流水线是否可以部署:
运行每一步可以通过日志查看部署运行情况:
若出现如下页面则表示运行脚本成功:
- 在行云中设置完Webhook后返回飞流中的当前流水线中:
-
- 至此,行云与飞流的组合配置基本已完成,小伙伴们可以自行测试:
本地修改代码 => 将代码提交至行云中 => 在行云中进行代码评审合并
当代码合并后会自动触发飞流进行服务器代码更新,因行云和飞流分属不同应用,合并后飞流自动运行流水线会有一定的延时,需小伙伴耐心稍等片刻。
- 至此,行云与飞流的组合配置基本已完成,小伙伴们可以自行测试:
-
若合并代码后飞流能自动运行流水线且成功,则表示自动构建部署完美实现了,若有问题则需小伙伴耐心检查每个步骤是否疏漏或错误,及查看部署日志是否有报错。
后记
鉴于本人水平及表达尚有不足,若文中有不当之后欢迎评论指正;后续会根据大家需求及遇到的问题进行更新补充,欢迎大家评论及交流
联系方式
Email : allyfireshen@gmail.com
或在文章中进行评论