我在 Azure DevOps Pipeline 中为 .Net 8 项目使用 Snyk 安全扫描任务,但收到以下错误:
开始:SnykSecurityScan =================================================== =========================== 任务:Snyk 安全扫描 描述:Snyk 的 Azure Pipelines 任务 版本:1.7.1 作者:斯尼克 帮助 : =================================================== =========================== 获取平台的 Snyk 下载信息:0 版本:稳定 将可执行文件下载到:C:gent\_work\_temp\snyk-win.exe 下载:snyk-win.exe 来自:https://downloads.snyk.io/cli/stable/snyk-win.exe?utm_source=AZURE_PIPELINES https://downloads.snyk.io/cli/stable/snyk-win.exe?utm_source=AZURE_PIPELINES 的下载连接已关闭 File.close snyk-win.exe 保存到 C:gent\_work\_temp\snyk-win.exe snyk-win.exe 下载成功 将可执行文件下载到:C:gent\_work\_temp\snyk-to-html-win.exe 下载:snyk-to-html-win.exe 来自:https://downloads.snyk.io/snyk-to-html/latest/snyk-to-html-win.exe?utm_source=AZURE_PIPELINES https://downloads.snyk.io/snyk-to-html/latest/snyk-to-html-win.exe?utm_source=AZURE_PIPELINES 的下载连接已关闭 File.close snyk-to-html-win.exe 保存到 C:gent\_work\_temp\snyk-to-html-win.exe snyk-to-html-win.exe 下载成功 项目名称包含空格 C: gent\_work\_temp\snyk-win.exe test --severity-threshold=low --org=myOrg "--project-name=\"项目名称\"" --json-file-output=C : 绅士\_work\_temp eport-2024-11-20T15-06-37.json 测试 C:gent\_work\8\s... 无法在 C:gent\_work\8\s 中检测到支持的目标文件。 请参阅我们的文档以了解支持的语言和目标文件:https://snyk.co/udVgQ 并确保您位于正确的目录中。 ************************************** ** Snyk 任务将失败管道 ** ****************************************** 由于“snyk”使用不当或存在其他错误,任务失败 C: gent\_work\_temp eport-2024-11-20T15-06-37.json 不存在...无法附加 C: gent\_work\_temp eport-2024-11-20T15-06-37.html 存在...正在附加文件 ##[error]任务失败,因为`snyk`使用不当或有其他错误 整理:SnykSecurityScan
我们正在使用自托管构建代理
Snyk 不支持 .Net 8 还是我还缺少其他东西?我正在使用 Snyk 的免费版本
这是我的管道中的 yaml
- task: SnykSecurityScan@1
inputs:
serviceConnectionEndpoint: 'Snyk Connection'
testType: 'app'
monitorWhen: 'always'
failOnIssues: true
projectName: 'Project Name'
organization: 'myOrg'
我期望根据我的 .Net Web API 解决方案生成安全报告
Snyk 不支持 .Net 8 还是我还缺少其他东西?
是的。 Snyk 支持扫描 .net8 项目。请参阅此文档:guidance-for-snyk-for-.net
Snyk 将根据 project.assets.json 文件或 packages.config 文件 -> 包文件夹进行扫描。
在这种情况下,在运行 Snyk 安全扫描任务之前,您需要运行 dotnet Restore /nuget Restore 来生成所需的文件(project.assets.json)或包文件夹。
使用相同的任务定义时,我可以重现相同的问题。
要解决这个问题,您可以参考以下Pipeline示例:
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'build'
projects: '**/*.csproj'
- task: SnykSecurityScan@1
inputs:
serviceConnectionEndpoint: 'xxx'
testType: 'app'
monitorWhen: 'always'
organization: 'myOrg'
failOnIssues: true
additionalArguments: '--all-projects'
您可以在任务中设置
--all-projects
参数并删除 projectName 字段。在这种情况下,它将扫描所有包管理器和 .sln 文件。
或者您可以在任务中定义targetFile字段来定义单个扫描文件。
例如:
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'build'
projects: '**/*.csproj'
- task: SnykSecurityScan@1
inputs:
serviceConnectionEndpoint: 'xx'
testType: 'app'
targetFile: '$(build.sourcesdirectory)/.../yourpath/project.assets.json'
monitorWhen: 'always'
failOnIssues: true
projectName: 'ProjectName'
organization: 'Myorg'
结果: