配置 git 仓库流水线自动部署 PHP
需求
当代码推送到 Gitee 仓库时,自动更新服务器上的代码,免去人工更新的操作。
分析
分支推送并部署本质上就是自动化行为。平常接触得比较多的方案有两种:
- Webhook
- 流水线
方案比较
码云仓库的 Webhook 做不了监听多分支、监听指定子目录推送。所以最后还是项目组还是选了流水线。
费用
流水线是一项付费服务,它会按上传、构建、发布等环节按量收费,每月有1000分钟免费赠送的额度。
好在PHP项目是不用 build 的,额度完全够用,可以视同免费。
部署构思
以测试环境为例,以 release 分支对应测试环境。那么先到测试环境目录,把 release 分支 clone 下来。接下来每次 push 到 release 的时候,都让服务器自动化 pull 一次,就能实现自动部署了。
配置步骤
一、开通流水线
按照《码云帮助文档-流水线》的流程开通,在分支里会自动创建 3 条流水线。
虽然上面有说明这 3 条流水线分别用来干嘛,但不是很符合我的需求,我选择了直接删掉。
二、配置主机
要想让码云和云服务器相连,必须提前做一些配置。按照《码云帮助文档-主机组》的流程,把服务器(组)挂到码云上去。
三、配置公钥(可选)
让服务器拉代码是要 gitee 凭证的,当然,用个人账密也可以拉取,所以本流程是(可选)的。
但对于公司服务器来讲,个人账密配在上面,那跟穿条底裤来上班有什么区别?
为了保留最后一丝体面,最好还是按照《码云帮助文档-公钥管理》配个公钥,配好之后,公钥只能 pull 指定仓库的代码。
四、配置机器人(可选)
如果需要流水线执行通知,那么可配置企微/钉钉/飞书机器人。具体看需求去查不同公司的文档。
五、创建流水线
流水线配置如下方代码所示,主要包含了以下几个意思:
- 当 release 分支发生任何 push 时触发
- 触发时,将在连接好的主机组上执行脚本
- 脚本的内容是“进入项目目录拉取代码”
- 完事之后让钉钉机器人发通知
- 超时设置一分钟,失败不重试
version: '1.0'
name: release
displayName: 测试环境流水线
triggers:
trigger: auto
push:
branches:
prefix:
- release
stages:
- name: stage-89ebf680
displayName: 自动化部署
strategy: naturally
trigger: auto
executor: []
steps:
- step: shell@agent
name: steps-release
displayName: 代码拉取
hostGroupID:
ID: develop
hostID:
- 主机
script:
- cd /www/wwwroot/网站目录/项目名字
- git reset --hard HEAD
- git pull --no-edit origin release
notify:
- certificate: 钉钉机器人配置(如不用, notify 板块直接删掉)
events:
- success
- fail
- cancel
- skip
content:
- repository
- pipeline
- operator
- branch
- detail
- stage
- task
type: dingtalk
strategy:
retry: '0'
timeout: 1
六、保存流水线
流水线到 release 分支,会创建一个 yml 并提交到 release。
这步操作也符合流水线条件,所以会直接触发流水线,执行第一次代码拉取。
正常情况下,就可以看到“流水线执行成功”的提示了。
小记
- 主机重启后,流水线会连不上主机,需要重新执行脚本以连接码云。
- 一般来说,流水线拉一次 PHP 代码耗时在 2 - 5s 之间。
- 流水线每次最低计费时间是 1 分钟。也就是说每个月赠送 1000 分钟额度,最多供我们用 1000 次。
- 前端其实也能用流水线。前端的流水线步骤是先 clone 代码,把 dist 复制到项目目录重命名,再把拉取的代码包删掉。
本文来自作者:西湖摸鱼,转载请注明原文链接:https://www.cnblogs.com/conne/p/17000237.html