Я пытаюсь создать новую страницу в моей Wiki из конвейера сборки с созданными заметками о выпуске. В ответ я получаю эту ошибку: Invoke-WebRequest : The remote server returned an error: (401) Unauthorized
.
Я просмотрел все ресурсы, которые нашел по этой теме, и все выглядит хорошо для меня.
Вот мой сценарий powershell:
# Get content of the generated release notes file
$content = [IO.File]::ReadAllText("$(build.artifactstagingdirectory)/release-notes-$(Build.BuildNumber).md")
$data = @{content=$content;} | ConvertTo-Json;
$params = @{uri = '$(WikiPath)';
Method = 'PUT';
Headers = @{Authorization = "Bearer $(System.AccessToken)" };
ContentType = "application/json";
Body = $data;
}
Write-Host "PUT $(WikiPath)"
$response = Invoke-WebRequest @params
Write-Host $response
Значение переменной WikiPath
установлено на:
https://<server-ip>/PersonalProjects/Personal-KM/_apis/wiki/wikis/Personal-KM.wiki/pages?path=%2FRelease%20notes%2F$(Build.BuildNumber)&api-version=5.0
URI взят из официальной документации API . Я хотел бы создать подстраницы страницы Release notes
, которая существует. Я попытался создать root страницу без успеха (?path=$(Build.BuildNumber)&api-version=5.0
).
Обратите внимание, что я также пытался без .wiki
в конце идентификатора вики.
Вот вывод шага сборки:
##[command]"C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ". 'C:\DevOpsAgent\_work\_temp\ebf68890-3544-4a8d-a415-4309983b1381.ps1'"
PUT https://<server-ip>/PersonalProjects/Personal-KM/_apis/wiki/wikis/Personal-KM.wiki/pages?path=%2FRelease%20notes%2F1.0.0.7&api-version=5.0
Invoke-WebRequest : The remote server returned an error: (401) Unauthorized.
At C:\DevOpsAgent\_work\_temp\ebf68890-3544-4a8d-a415-4309983b1381.ps1:26 char:13
+ $response = Invoke-WebRequest @params
+ ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebExc
eption
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
##[error]PowerShell exited with code '1'.
Ключевой момент 1: Я проверил Allow scripts to access the OAuth Token
в задании агента:
Key point 2 : I have given the permissions 'Contribute' to the Build service account :
Can you see anything wrong with my script or configuration ?
Edit 1 based on the comment from @MarioDietner :
I have tried to use a PAT instead of $(System.AccessToken), I get the same error (I am member of Project Collection Administrators and my PAT has Full access scope).
I also tried executing the script from my local computer (variables replaced) :
Edit 2 Я попытался запустить скрипт из Azure Pipelines на нашем производственном сервере, и он сработал с первой попытки. Я не знаю, что не так с нашими локальными Azure DevOps, но я сконцентрирую внимание на личности, а не на скрипте Powershell.