创建简单部署应用程序时出现问题


Troubles creating a simple deployment application

我为我的PHP应用程序创建了一个部署应用程序,实际上这是一个管理3个环境(dev、rc、prod(的简单PHP页面
此页面获取有关上次提交和每个环境的信息,允许开发人员使用标记更改环境的版本
我看到一些应用程序(例如github、packagist…(使用版本标签,但我遇到了一些问题。
以前,我使用SVN,它非常简单快速,所以我对Git感到沮丧,也许你可以帮助我。
我在几个项目中使用gitlab和github

首先,请注意,只有一个数字的远程请求可能非常慢(1到6秒(

获取有关上次提交的信息
为了获得这些信息,我必须获取我正在做的开发环境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"
我使用一个随机的__TOKEN__来解析结果,git可以在它之前添加更多信息,但我不在乎
所以结果可能是:

___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
我得到的结果:

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

这分类不好。

更改环境版本
我目前找到两个解决方案:

  1. git checkout v0.1.7.2将当前版本更新为新版本。问题是,当我使用composer时,composer.lock会在本地更改,git会返回一个错误
  2. git reset --hard v0.1.7.2这将替换文件夹中的所有内容

我可以通过忽略它来修复composer.lock错误。

我在操作版本时遇到了一些麻烦,因为环境可能在master或标记上分支,并且我无法有效地识别环境的标记(版本(。

我正在缓存标签,但通过这种方式,我的页面需要5-10秒才能加载。。。

你能帮我解决这些麻烦吗?你有什么建议吗?你认为我应该换一种方式吗?我也可以使用一个简单的现有部署应用程序,但我没有找到任何好的。

PS:所有命令都是在debian/uuntu操作系统上使用system((PHP函数运行的。

Loenix,我认为在您的情况下,最好的方法是使用专用软件,例如buddy.works。您可以为每个服务器创建一个单独的部署环境(他们在buddy中称之为管道(+应用程序本身重量轻,使用非常简单(只需点击即可(。

使用system()进行手动部署很困难,可能会出现错误