Можно ли с помощью Gitlab запустить bash-скрипт на сервере?
В целом задача проста и понятна. Нужно чтобы при пуше в ветку мастер на сервере запускался один bash-скрипт, при пуше в ветку qa - другой.
Можно ли это реализовать средствами gitlab? (!Важно - не веб-хуком).
Если да то как? Опишите что за чем делать. Если нет, то каким способом это можно сделать?
ky0: Я не могу понять, вроде как все просто, но не ясно.
К примеру я создал скрипт .gitlab-ci.yml в корне проекта
test:
script: /myProject/myScript.sh
Делаю пуш в любую ветку, в гитлабе на вкладке builds появляется строка со статусом pending.
Непонятно как это должно работать, и мне нужно запускать его только когда я делаю пуш в ветку master. А например для пуша в ветку qa будет другой скрипт запускаться.
Помогите разобраться, растолкуйте пожалуйста!
Al: для того, чтобы скрипт запустился, нужно дать понять, где его запускать, т.е. создать так называемый runner, простейшим видом которого является shell-runner, запускающийся локально на сервере рядом с гитлабом - https://docs.gitlab.com/runner/
т.е. он просто должен запустить js-скрипт который соберет фронт, потом добавит процесс в forever.js. Так то если руками в консоли запускать - все работает. А вот раннер выдает такую ошибку:
Running with gitlab-ci-multi-runner 1.10.4 (b32125f)
Using Shell executor...
Running on server...
Fetching changes...
HEAD is now at 5553b27 Merge branch 'dev' into 'master'
Checking out ed68665c as dev...
Skipping Git submodules setup
$ /myproject/myScript.sh
/myproject/myScript.sh: строка 3: forever: команда не найдена
/myproject/myScript.sh: строка 11: node: команда не найдена
/myproject/myScript.sh: строка 13: forever: команда не найдена
ERROR: Build failed: exit status 1
В чем причина? почему он не понимает команд forever и node?
Al: видимо, нужно указать абсолютные пути до утилит или добавить пользователю, из-под которого происходит сборка каталоги, в которых они находятся в PATH