Как обновить репозиторий со встроенным проектом? - PullRequest
0 голосов
/ 07 мая 2018

Я пытаюсь настроить GitLab CI / CD для старого клиентского проекта, использующего Grunt (https://github.com/yeoman/generator-angular).

До сих пор развертывание работало так:

  • локально запустите $ grunt build, которая создала проект и создала файлы в папке «dist» в корне проекта
  • зафиксировать изменения
  • изменения перенесены на рабочий сервер

После создания .gitlab-ci.yml и выполнения коммита задание GitLab CI / CD проходит, но файлы в папке «dist» в хранилище не обновляются. Если я определю артефакт, я получу измененные файлы в загрузке. Однако я бы предпочел, чтобы файлы в папке «dist» в обновлялись, чтобы мы могли продолжать тот же рабочий процесс, который нам подходит. Это достижимо?

1 Ответ

0 голосов
/ 08 мая 2018

Я не думаю, что вступать в репо внутри конвейера - хорошая идея. Контроль версий не был бы таким ясным, у некоторых людей есть автоматический запуск конвейера, когда их репо продвигается, что запускает цикл конвейеров.

Вместо этого вы можете реорганизовать свою среду для использования Docker, существует множество причин для использования Docker в профессиональной среде и среде разработки. Вот лишь некоторые из них: это позволило бы вам сохранить недавно созданный проект в реестр и использовать его всякий раз, когда это необходимо, с нужной вам версией и нужной /dist внутри. Так что вы можете легко запустить его в нескольких местах, масштабировать, управлять им и т. Д.

Если вы перешли на Docker, вам на самом деле не нужно было бы что-то делать, чтобы dist был постоянным, просто отправьте образ в реестр после завершения сборки.

Но чтобы на самом деле ответить на ваш вопрос:

Существует запрос функции, который очень долго зависал для той же проблемы, о которой вы спрашивали: здесь . В настоящее время не существует безопасного и профессионального способа сделать это, как утверждают члены GitLab. Хотя вы можете отодвинуть изменения, как предложил один из участников GitLab ( Kamil Trzciński ):

git push http://gitlab.com/group/project.git HEAD:my-branch

Просто поместите его в свой script раздел внутри gitlab-ci файла. Там представлено больше хакерских методов, но обязательно учитывайте риски, которые с ними связаны (конвейеры более подвержены ошибкам, и если они настроены неправильно, они могут, например, опубликовать некоторую конфиденциальную информацию и запустить бесконечный цикл конвейеров для именования несколько).

Надеюсь, вы нашли это полезным.

...