我为我的PHP应用程序创建了一个部署应用程序,实际上这是一个管理3个环境的简单PHP页面(dev,rc,prod)。
此页面获取有关上次提交和每个环境的信息,允许开发人员使用标记更改环境的版本
我看到几个应用程序(例如github,packagist ......)使用标签版本,但我遇到了一些问题
以前,我使用的是SVN,它非常容易和快速,所以我对Git感到沮丧,也许你可以帮助我。
我在几个项目中使用gitlab和github
首先,要小心只有一个git远程请求可能非常慢(1到6秒)
获取有关上次提交的信息
要获得这些信息,我必须获取开发环境然后我正在做
Time A B
12:30 1.2 -3.4
12:35 4.7 -4.0
我使用随机__TOKEN__来解析结果,git可以在它之前添加更多信息,但我不在乎。
结果可能是:
git --no-pager show --name-status --format="__TOKEN__%n%H%n%T%n%P%n%d%n%an%n%ae%n%aD%n%cn%n%ce%n%cD"
这是有效的,但我每次都要抓取它。
我以同样的方式获取有关环境的信息。
列出版本(标签)
现在,我需要列出所有版本的名称和日期,所以我正在做___DATA-57a988c31bbf2___
b4041b95c0221fe211ea74110a421842f625f2c8
2287ccb797fc886055a5f4afc56aa90d7dcf4a4e
d1c618e0f50783efff209ba6c0752d55f14bd241
(HEAD, v0.1.7.2, origin/master, origin/HEAD, master)
Loenix
myemail@domain.com
Mon, 8 Aug 2016 15:09:44 +0200
Loenix
myemail@domain.com
Mon, 8 Aug 2016 15:09:44 +0200
我得到了结果:
git for-each-ref --sort=taggerdate --format "%(tag)|%(taggerdate)" refs/tags | sort -V
这不是很好。
更改环境版本
我目前找到2个解决方案:
v0.1.5|Mon Jun 6 22:14:18 2016 +0200
v0.1.6|Mon Jun 6 22:47:02 2016 +0200
v0.1.7.1|Mon Aug 8 13:55:59 2016 +0200
v0.1.7.2|Mon Aug 8 15:10:02 2016 +0200
v0.1.7|Mon Aug 8 13:36:12 2016 +0200
将当前版本更新为新版本。问题是当我使用composer时,composer.lock在本地更改,git返回错误。git checkout v0.1.7.2
这取代了文件夹中的所有内容...... 我可以通过忽略它来修复composer.lock错误。
我在操作版本方面遇到了一些麻烦,因为环境可能在master或标记上分支,我无法有效地识别环境的标记(版本)。
我正在缓存标签,但通过这种方式,我的页面需要5-10秒才能加载...
你帮我解决了这个问题吗?你有什么建议吗? 你觉得我应该用另一种方式吗? 我也可以使用一个简单的现有部署应用程序,但我找不到任何好的。PS:在debian / ubuntu操作系统上使用system()PHP函数运行所有命令。
答案 0 :(得分:0)
Loenix,我认为在您的情况下,最好的方法是使用专用软件,例如。 buddy.works。您可以为每个服务器创建一个单独的部署环境(他们称之为Buddy中的管道)+应用程序本身很轻,使用起来非常简单(只需点击一下)。
使用system()
进行手动部署很困难,可能容易出错