我为CodeQL扫描器分析创建了AzureDevOps管道。我在YAML文件中使用Powershell sript。我需要传递存储在环境变量UPLOAD_TOKEN中的令牌。
看起来,将输出从一个管道传递到另一个管道在Azure上不起作用,而相同的脚本在Powershell上成功地在本地工作。
YAML文件中的脚本不起作用(身份验证失败):
Write-Output $env:UPLOAD_TOKEN | codeql github upload-results --repository=xxxxx --sarif=$(Build.SourcesDirectory)\scan-results.sarif --ref=$(Build.SourceBranch) --commit=$(Build.SourceVersion) --github-auth-stdin
字符串
测试结果:
发生致命错误:从“D:\a\1\s\scan-results. sarif”上传SARIF到“https://api.github.com/repos/....”时出错。404 Not Found Not Found
在Powershell上本地运行的相同脚本成功:
Write-Output $env:UPLOAD_TOKEN | codeql github upload-results --repository=xxxx --sarif=xxxx\scan-results.sarif --ref=refs/heads/main --commit=11111111 --github-auth-stdin
型
我还尝试在文件中传递token,而不是使用Get-Content token.txt | codeql github upload-results ......
的环境变量,但结果是相同的。错误404.
1条答案
按热度按时间wnavrhmk1#
我遇到了类似的问题:在本地,一切正常,但在管道期间,当标准输入被重定向时,PowerShell任务失败。
是什么给了我灵感:使用PowerShell Core。在PowerShell@2任务中,可以指定使用pwsh(Micorsoft:PowerShell@2任务)。
(我使用本地代理,必须在该代理上安装PowerShell Core并重新启动代理,然后管道按预期工作。)