Я пытаюсь использовать конвейер Azure DevOps. Основной репозиторий, на котором должен работать конвейер, клонируется просто отлично, за исключением того, что я не могу клонировать его подмодули. Подмодули добавляются с использованием URL-адресов SSH, потому что это то, что настроено на моем компьютере.
Процесс клонирования завершается с ошибкой:
Please make sure you have the correct access rights
and the repository exists.
fatal: clone of '[email protected]:v3/<rest_of_link>' into submodule path '/home/vsts/work/1/s/Modules' failed
Failed to clone 'Modules' a second time, aborting
Итак, поскольку я использую SSH, я создал пару ключей RSA и использую собственную задачу Azure для их установки, как показано ниже:
- task: InstallSSHKey@0
inputs:
knownHostsEntry: '<entry>'
sshPublicKey: '<public_key>'
sshKeySecureFile: 'id_rsa'
Это удается со следующим выводом:
/usr/bin/ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-XXXXXXFGcDdd/agent.1614; export SSH_AUTH_SOCK;
SSH_AGENT_PID=1615; export SSH_AGENT_PID;
echo Agent pid 1615;
/usr/bin/ssh-add -L
The agent has no identities.
/usr/bin/ssh-add /home/vsts/work/_temp/id_rsa
Identity added: /home/vsts/work/_temp/id_rsa (jose@42we-desktop)
/usr/bin/ssh-add
Finishing: InstallSSHKey
Отлично, правда? За исключением того, что если я попытаюсь инициализировать подмодули с помощью:
GIT_SSH_COMMAND = "ssh -v" git submodule update --init --recursive
Это все еще терпит неудачу.
Глядя на дополнительную информацию, предоставленную с помощью флага -v, я вижу, что он изначально принимает ключ и даже говорит Authenticated to ssh.dev.azure.com
, но затем терпит неудачу после git-upload-pack
debug1: Authentications that can continue: password,publickey
debug1: Next authentication method: publickey
debug1: Offering public key: <key> RSA SHA256 <key> agent
debug1: Server accepts key: <key> RSA SHA256 <key> agent
Authenticated to ssh.dev.azure.com ([20.125.155.0]:22) using "publickey".
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: pledge: filesystem
debug1: Sending environment.
debug1: channel 0: setting env GIT_PROTOCOL = "version=2"
debug1: channel 0: setting env LANG = "C.UTF-8"
debug1: Sending command: git-upload-pack 'v3/name/project/repo'
remote: Public key authentication failed.
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 3592, received 2304 bytes, in 2.1 seconds
Bytes per second: sent 1725.1, received 1106.5
debug1: Exit status 2
fatal: Could not read from remote repository.
Почему не получается?? Это действительно не имеет смысла в моей голове, и вывод, который я вижу, если я клонирую на своем компьютере (работающем под управлением Fedora), остается таким же до «git-upload-pack».
РЕШЕНО РЕШЕНО РЕШЕНО РЕШЕНО
Оказывается, мне также нужно было добавить сгенерированный SSH-ключ в свою учетную запись. Сначала я не думал, что это имеет смысл, потому что аутентификация должна происходить между самими лазурными машинами... в любом случае. Это сделано и это работает!
Оказывается, мне также нужно было добавить сгенерированный SSH-ключ в свою учетную запись. Сначала я не думал, что это имеет смысл, потому что аутентификация должна происходить между самими лазурными машинами... в любом случае. Это сделано и это работает!
После создания пары ключей, добавления закрытого ключа в библиотеку Azure и открытого в сценарий YAML, вам также необходимо добавить открытый ключ к своим личным ключам доступа в своем профиле azure devops.
Вы можете опубликовать свое решение в качестве ответа здесь и принять ответ, чтобы помочь тем, у кого такая же проблема.