#node.js #bash #git
#node.js #bash #git
Вопрос:
У меня есть сервер узла, работающий на ec2 в ubuntu, который должен обновляться при запуске в master, поскольку я создал для этого перехват в Gitab integrations.
Я видел, что хук работает с журналами и выполняет каждую команду, ожидая простого git pull.
Я проверил много похожих вопросов, в которых есть предложения вроде добавления env -i
для сброса GIT_DIR, чтобы команда могла выполняться, но пока безуспешно.
Я пробовал выполнять разные команды, такие как git status
, и они выполняются через хук в bash-скрипте нормально.
Вот мой скрипт, который находится в моей домашней папке вместе с репозиторием:
#!bin/bash
cd toTheFolder
git pull
вот конечная точка, которая выполняет скрипт
childProcess.exec(
"bash temp.sh",
{ cwd: "/home/ubuntu/repoFolder" },
function(err, stdout, stderr) {
console.log(stdout, stderr);
if (err) {
return res.status(500).send(err);
}
res.status(200).send("OK");
}
);
Ошибка, которую он возвращает, является {"killed":false,"code":1,"signal":null,"cmd":"bash temp.sh"}
Любые мысли о том, почему simple git pull
не работает, были бы огромной помощью.
-Спасибо
РЕДАКТИРОВАТЬ: вот вывод стандартного вывода
git@gitlab.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Комментарии:
1. 1) Измените shebang на
#!/bin/bash
. 2) Попробуйтеgit --git-dir=path/to/repo/.git --work-tree=path/to/repo pull <remote> <branch>
явно вместоcd
иgit pull
.2. Пробовал оба … та же ошибка
3. Может
git pull
ли это добиться успеха, если вы вручную запустите его в репозитории Ubuntu?4. Если я вручную выполняю скрипт, он выполняется без проблем… подобные проблемы возникают, когда я делаю это через хук … просто обновил вопрос.
5. Кажется, что хук запускает скрипт от имени пользователя, отличного от вашего. Если это так, вам нужно добавить открытый ssh-ключ пользователя, подключившегося к github, в настройки учетной записи.
Ответ №1:
Используйте следующую команду
git pull https://username:password@mygithost.com/my/repository
Не забудьте заменить [имя пользователя: пароль] вашими учетными данными git, [mygithost.com ] с вашим хостом git (gitlab, .. etc), [my / repository] с URL вашего репозитория
Это все равно не сработало бы для github, потому что они удалили поддержку аутентификации по имени пользователя / паролю.
Для github, пожалуйста, проверьте ваше ssh-соединение между вашим сервером и github.