Git клон с удаленного сервера, сбой в конвейерах bitbucket - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь автоматически развернуть свое приложение в цифровом океане через конвейеры с битбакетом. Вот шаги, которые мое развертывание выполняет:

  • подключиться к удаленной цифровой океанской капле с помощью ssh
  • клонируйте мой репозиторий, запустив git clone с ssh
  • запустите мое приложение с помощью docker-compose

Я успешно настроил ssh-доступ к своему пульту. Я также настроил ssh доступ к своему хранилищу и могу успешно выполнить клон git с моего удаленного сервера. Однако в конвейере, когда подключение к удаленному серверу прошло успешно, команда git clone завершается неудачно со следующей ошибкой.

git@bitbucket.org: В доступе отказано (открытый ключ). Неустранимый: Не удалось прочитать из удаленного хранилища.

Кто-нибудь имеет представление о том, что здесь происходит?

Вот мой bitbucket-pipelines.yml

image: atlassian/default-image:latest
pipelines:
  default:
    - step:
      deployment: production
      script:
        - cat deploy.sh | ssh $USER_NAME@$HOST
        - echo "Deploy step finished"

И сценарий развертывания deploy.sh

#!/usr/bin/env sh
git clone git@bitbucket.org:<username>/<my_repo>.git
cd my_repo
docker-compose up -d

Журналы для команд git clone ssh внутри капли и из конвейера

1 Ответ

0 голосов
/ 15 января 2019

Git по умолчанию использует ключ ssh.

Вы можете перезаписать команду SSH, используемую git, установив переменную окружения GIT_SSH_COMMAND. Вы можете добавить аргумент -i, чтобы использовать другой ключ SSH.

export GIT_SSH_COMMAND="ssh -i ~/.ssh/<key>"
git clone git@bitbucket.org:<username>/<my_repo>.git

Из документации git :

GIT_SSH

GIT_SSH_COMMAND

Если установлена ​​любая из этих переменных среды, тогда git fetch и git push будут использовать указанную команду вместо ssh, когда им нужно будет подключиться к удаленной системе. Параметры командной строки, передаваемые сконфигурированной команде, определяются вариантом ssh. Подробности смотрите в опции ssh.variant в git-config [1].

$ GIT_SSH_COMMAND имеет приоритет над $ GIT_SSH и интерпретируется оболочкой, что позволяет включать дополнительные аргументы. $ GIT_SSH, с другой стороны, должен быть просто путем к программе (который может быть сценарием оболочки оболочки, если требуются дополнительные аргументы).

Обычно проще настроить любые нужные параметры через ваш личный файл .ssh / config. Пожалуйста, обратитесь к документации ssh для получения более подробной информации.

...