Я пытаюсь автоматизировать тегирование репозиториев моего проекта. Код размещен в частном BitBucket, а непрерывная интеграция автоматизирована на Bamboo, который работает только на агенте Windows 10 (на данный момент). Агент имеет возможности MINGW Git , а также PowerShell, но из Bamboo я могу настроить задачи командной строки только для cmd.exe или Windows PowerShell .

Я настроил конкретного пользователя в BitBucket с правами записи в хранилище с известным паролем. Пользователь аутентифицируется на BitBucket через SSH:

remote.origin.url=ssh://git@git.mycompany.com:7999/myproject/myrepository.git

Переменная origin.url устанавливается непосредственно из переменных Bamboo, поэтому нет простого способа переключиться на https://username:password@git.mycompany.com... URL, чтобы вручную указать пароль.

Не делая ничего, кроме установки правильных значений для локальных user.name и user.password , команда git push --tags завершается неудачно:

Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.

Поэтому я догадался, что правильным способом предоставления прав доступа пользователю было использование метода аутентификации SSH. Тем не менее, кажется, что экземпляр Git в PowerShell не знает о pageant: после импорта ключа ssh через Git Bash команда все еще не выполняется в PowerShell, но успешно выполняется в Git Bash. На данный момент я застрял, поскольку кажется, что нет никакого способа либо позволить PowerShell узнать о моих файлах id_rsa , .pub или .ppk , и попытаться вызвать Git Bash из PowerShell, чтобы заставить другой исполняемый файл выполнять грязную работу. не удалось:

"C:\Program Files\Git\git-bash.exe git push --tags --set-upstream origin test-tag-branch"
"C:\Program Files\Git\bin\git.exe push --tags --set-upstream origin test-tag-branch"
"C:\Program Files\Git\bin\git" "push --tags --set-upstream origin test-tag-branch"
"C:\Program Files\Git\bin\bash.exe git push --tags --set-upstream origin test-tag-branch"

Кроме того, важно упомянуть, что, несмотря на то, что вышеприведенное push является всего лишь одним, фактическим поведением будет вычисление тега из номера сборки и добавление тега в различные репозитории: поскольку это правильный скрипт вместо одной команды, добавление MinGW как исполняемый файл с возможностями агента Bamboo и выполнение "исполняемого" задания с параметрами push не сработает (если только оболочка MinGW не способна обрабатывать unix-подобные сценарии).

Кто-нибудь успешно настраивал подобную автоматизацию? Что я делаю неправильно? Предложения по решению проблемы с другой точки зрения?

0