2016-08-09 2 views
0

Я создал приложение для развертывания для своих PHP-приложений, на самом деле это простая страница PHP, управляющая тремя средами (dev, rc, prod).
Эта страница получает информацию о последнем фиксации и о каждой среде, позволяя разработчику изменять версию среды с использованием тегов.
Я видел несколько приложений (например, 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 
[email protected] 
Mon, 8 Aug 2016 15:09:44 +0200 
Loenix 
[email protected] 
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 

Это не сортировочных Что ж.

Изменить версию среды,
Я в настоящее время найти 2 решения:

  1. git checkout v0.1.7.2 Это обновление текущей версии на новую. Проблема в том, что когда я использую композитор, composer.lock изменяется локально и git возвращает ошибку.
  2. git reset --hard v0.1.7.2 Это заменяет все вещи в папке ...

я мог исправить ошибку composer.lock, игнорируя его.

У меня возникают проблемы с управлением версиями, поскольку среда может быть разветвлена ​​на главном или на теге, и я не могу эффективно идентифицировать тег (версию) среды.

Я кэширование тегов, но этим путем, моя страница занимает 5-10 секунд, чтобы загрузить ...

Можете ли вы помочь мне исправить проблемы? У вас есть какие-то советы? Как вы думаете, я должен сделать это по-другому? Я мог бы также использовать просто существующее приложение развертывания, но я не нашел ничего хорошего.

PS: Все команды запускаются с использованием функции system() PHP на операционной системе debian/ubuntu.

+0

почему система, она возвращает только последнюю строку вывода команды, вы пробовали Exec()? –

+0

@ M.I. Он отображает вывод, это работает лучше, чем exec(), и это не вызывает никаких проблем. – Loenix

ответ

0

Loenix, я думаю, что в вашем случае лучший способ - использовать специализированное программное обеспечение, например. buddy.works. Вы можете создать отдельную среду развертывания для каждого сервера (они называют это конвейерами в Buddy) + само приложение легкое и очень простое в использовании (вы просто нажимаете на него).

Развертывание вручную с system() трудна и может быть подвержен ошибкам

Смежные вопросы