Когда я запускаю сборку на TeamCity, я хочу пометить сборку переменной окружения. Я надеялся, что это может быть просто, но кажется, что нет встроенного способа сделать это. Я нашел link, который использует TeamCity REST Api для добавления тега, но он использует curl
, а мой сервер сборки - Windows. Итак, я подумал, что PowerShell, возможно, это сделает.TeamCity REST Api возвращает 403 с использованием системных учетных данных
Использование Invoke-WebRequest
Я придумал следующий сценарий, где параметры сборки Teamcity подставляются автоматически:
$username = "%system.teamcity.auth.userId%"
$password = "%system.teamcity.auth.password%" | ConvertTo-SecureString -asPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($username,$password)
Invoke-WebRequest `
-Uri "%teamcity.serverUrl%/httpAuth/app/rest/builds/%teamcity.build.id%/tags" `
-Credential $cred `
-Method POST `
-ContentType "application/xml" `
-Body '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><tags><tag>%env.Environment%</tag></tags>' `
-UseBasicParsing
The TeamCity documentation заявляет, что свойства системы могут быть использованы в качестве учетных данных:
Если вы выполняете запрос из сборки TeamCity, рассмотрите возможность использования teamcity.auth.userId/teamcity.auth.password системных свойств как учетных данных (в настройках TeamCity вы можете ссылаться ать их как % system.teamcity.auth.userId% и% system.teamcity.auth.password%)
Однако, когда я бегу выше, как на этапе сборки сценарий Powershell, я получаю 403 запрещено:
> [16:48:35][Step 1/1] Invoke-WebRequest : The remote server returned an
> error: (403) Forbidden. [16:48:35][Step 1/1] At line:1 char:1
> [16:48:35][Step 1/1] + Invoke-WebRequest ` [16:48:35][Step 1/1] +
> ~~~~~~~~~~~~~~~~~~~ [16:48:35][Step 1/1] + CategoryInfo :
> InvalidOperation: (System.Net.HttpWebRequest:Htt [16:48:35][Step 1/1]
> pWebRequest) [Invoke-WebRequest], WebException [16:48:35][Step 1/1]
> + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShe [16:48:35][Step 1/1]
> ll.Commands.InvokeWebRequestCommand [16:48:35][Step 1/1]
> [16:48:35][Step 1/1] Process exited with code 1 [16:48:35][Step 1/1]
> Step Powershell failed
Должен ли я включить что-то в TeamCity, чтобы этот пользователь мог отправлять URL-адрес?
Достаточно честно, я буду следить за этим. благодаря – AlexFoxGill