Devops Pipeline 中的 dotnet-ef 迁移脚本没有工件输出

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

我有一个 DevOps 管道,曾经在

windows-latest
代理下运行。由于多种原因,我们最近将其移至
ubuntu-latest
。然而,自该更改以来,
dotnet-ef
工具尚未将迁移 SQL 脚本输出到工件文件夹。

这是管道的(简化的)YML:

trigger:
- dev

pool:
  vmImage: 'ubuntu-latest'

steps:

- task: UseDotNet@2
  displayName: 'Use .NET8 SDK'
  inputs:
    useGlobalJson: false
    packageType: sdk
    version: 8.x
    includePreviewVersions: false

- task: CmdLine@2
  displayName: "Build EF Migrations"
  inputs:
    script: |
      dotnet tool install --global dotnet-ef --version 8.0.7
      dotnet ef migrations script -p FooBar.Domain -s FooBar.API -o "$(System.DefaultWorkingDirectory)/ef-migrations.sql" -i -v

# other build stages....

- task: PublishBuildArtifacts@1
  displayName: "Publish Artifacts"
  inputs:
    artifactName: 'drop'

管道中的步骤运行良好,日志中没有错误。事实上,输出表明它已经创建了文件:

Pipeline stage result

正在写入“/home/vsts/work/1/s/ef-migrations.sql”...
整理:构建 EF 迁移

问题是 Artifacts 文件夹不包含对该文件的引用:

Artifacts list

谁能告诉我为什么会这样?

entity-framework-core azure-pipelines devops
1个回答
0
投票

根据您的

PublishBuildArtifacts@1
任务,
PathtoPublish
是默认值
$(Build.ArtifactStagingDirectory)
,即
/home/vsts/work/1/a

enter image description here

根据你的脚本

-o "$(System.DefaultWorkingDirectory)/ef-migrations.sql
,你的
ef-migrations.sql
$(System.DefaultWorkingDirectory)
,也就是
/home/vsts/work/1/s

在发布构建工件之前,将

ef-migrations.sql
复制到
$(Build.ArtifactStagingDirectory)

- task: CmdLine@2
  displayName: "Build EF Migrations"
  inputs:
    script: |
      dotnet tool install --global dotnet-ef --version 8.0.7
      dotnet ef migrations script -p FooBar.Domain -s FooBar.API -o "$(System.DefaultWorkingDirectory)/ef-migrations.sql" -i -v
      cp ef-migrations.sql $(Build.ArtifactStagingDirectory)
© www.soinside.com 2019 - 2024. All rights reserved.