Я пытаюсь автоматизировать тегирование репозиториев моего проекта. Код размещен в частном 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-подобные сценарии).
Кто-нибудь успешно настраивал подобную автоматизацию? Что я делаю неправильно? Предложения по решению проблемы с другой точки зрения?