git pull не выполняется через webhook в скрипте bash

#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.