在 .Net 8 项目的 Azure DevOps 管道中使用 Snyk 构建任务时出现错误

问题描述 投票:0回答:1

我在 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 解决方案生成安全报告

.net azure-pipelines snyk
1个回答
0
投票

Snyk 不支持 .Net 8 还是我还缺少其他东西?

是的。 Snyk 支持扫描 .net8 项目。请参阅此文档:guidance-for-snyk-for-.net

Snyk 将根据 project.assets.json 文件或 packages.config 文件 -> 包文件夹进行扫描。

在这种情况下,在运行 Snyk 安全扫描任务之前,您需要运行 dotnet Restore /nuget Restore 来生成所需的文件(project.assets.json)或包文件夹。

使用相同的任务定义时,我可以重现相同的问题。

enter image description here

要解决这个问题,您可以参考以下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'
 

结果:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.