Я пытаюсь настроить автоматическое развертывание c для проекта GitLab. Как только изменение объединено с веткой разработки, бегун должен войти на сервер, переключиться на другого пользователя, go в веб-каталог и выполнить git pull, а затем выполнить несколько других задач.
Если вы не знакомы с бегунами GitLab, это, по сути, просто временный сервер (docker образ), который выполняет все, что вам нужно. Я просто использую его для ввода sh на клиентский сервер для выполнения команд, которые я до сих пор выполнял вручную для каждого развертывания, или, по крайней мере, таков план.
Клиент-сервер - это Ubuntu, я могу только войдите как пользователь , для которого у меня есть sudo pw, а speci c -user владеет сайтом.
До сих пор я был в состоянии подключитесь к указанному серверу через s sh и настройте его так, чтобы пользователь мог переключиться на конкретный c -пользователь без необходимости ввода пароля sudo вручную. Но на этом все и заканчивается - я не могу фактически выполнить какие-либо команды как конкретный c -пользователь .
Вот мой текущий код (.gitlab-ci.yml) после много проб и ошибок и еще больше прибегая к помощи:
deploy_development:
type: deploy
environment:
name: development
url: https://website.com
script:
- ssh -tt user@server
"sudo su - specific-user -s /bin/bash &&
whoami &&
cd htdocs &&
git pull origin development"
only:
- development
Вывод runnter GitLab выглядит следующим образом:
$ ssh -tt user@server "sudo su - special-user -s /bin/bash && whoami && cd htdocs && git pull origin development"
Warning: Permanently added 'server, ip' (ECDSA) to the list of known hosts.
special-user@server:~$
...
С анимированными тремя точками, предположительно показывая, что терминал ждет ввода.
Примечание: если я вместо "s sh -tt" введу "s sh" или "s sh -t", я все еще пользователь даже после использования sudo su и, следовательно, не в состоянии выполнить какой-либо код как special-user .
Что мне нужно сделать, чтобы фактически выполнить мой код от имени другого пользователя?