• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

gitlab+PHP自动部署设计方案

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

2018-9-26 14:00:39 星期三

场景: 

由于某种情况, 不能使用Jenkins, so......只有自己实现了

看图: webUI

 

设计方案,

- 文件夹A, 用来存放git分支
- 文件夹B, 运行网站的代码目录
- 文件夹C, 部署用的脚本目录, C里边的脚本用来把A里边的代码更新同步到B里边
- 入口1 gitlab, 添加push hook, hook中指定的url可以执行C中的代码
- 入口2 Linux命令行, 执行C中的脚本进行部署

- 入口3 网页, 在页面中点击按钮进行部署

 

 

注意点: 

1. 脚本由一个入口脚本和多个附属脚本组成,  附属脚本用来部署不同的项目

2. 附属脚本由很多共同点, 比如拉取最新代码, 找到差异, 覆盖到目标目录, 删除缓存等, 不同的是各种路径信息. 因此将这些共同的功能抽出来做一个类, 附属脚本传递不同的参数去实现部署

3. 脚本入口有三种: 一种是命令行, 一种是接收gitlab push hook, 还有就是网页交互

4. gitlab发送的是一串json, PHP接收的时候用 file_get_contents('php://input', 'r'); 内容如下(注意 object_kind, ref, repository->url, 他三个可以确认是哪个项目的哪个分支被push了代码)

 1 {
 2     "object_kind":"push",
 3     "before":"615.....ab2",
 4     "after":"c2c.....c8f",
 5     "ref":"refs/heads/develop",
 6     "checkout_sha":"c2c.....c8f",
 7     "message":null,
 8     "user_id":44,
 9     "user_name":"zhangzhibin",
10     "user_email":"[email protected]",
11     "project_id":120,
12     "repository":{
13         "name":"test",
14         "url":"git@...../test.git",
15         "description":"test",
16         "homepage":"http://...../test",
17         "git_http_url":"http://...../test.git",
18         "git_ssh_url":"git@...../test.git",
19         "visibility_level":0
20     },
21     "commits":[
22         {
23             "id":"c2c6e32d76b7539b8f981ff9830eb2e611c2dc8f",
24             "message":"测试hook",
25             "timestamp":"2018-10-08T16:49:03+08:00",
26             "url":"http://........./test/commit/c2c.....c8f",
27             "author":{
28                 "name":"zhangzhibin",
29                 "email":"[email protected]"
30             }
31         }
32     ],
33     "total_commits_count":1
34 }
View Code

 5. git diff 的时候会把中文路径重新编码, 可以设置一下 sudo git config --global core.quotepath false

 

 项目地址: 码云 Summer-PHP-Deploy

 //==== 2021-4-8 15:21:07 更新

最新版去掉了页面部署功能, 去掉了根据commit id部署的功能

增加了全量部署+自动备份的功能

增加了部署后执行脚本的功能, 比如可以在代码部署后, 创建静态文件目录的软连接, 将图片等静态文件跟主代码分开

增加了支持指定TAG部署的功能


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
WAMPServer的安装及配置-windows安装php环境发布时间:2022-07-10
下一篇:
在UbuntuLinux14.04LTS上安装php7发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap