Azure DevOps 管道 - Flutter - 目录“/home/vsts/work/1/a”为空。不会添加任何内容来构建工件 'drop'

Azure DevOps Pipeline - Flutter - Directory '/home/vsts/work/1/a' is empty. Nothing will be added to build artifact 'drop'

一段时间以来,我一直在尝试发布一个 flutter artefact,但一直出现同样的错误。许多 Whosebug 解决方案似乎都适用于 .NET,但对我来说却不行。我正在使用 Flutter Tasks 扩展来构建。

感谢您的帮助。 如果有人以后需要它,这是解决方案。 https://gist.github.com/OriginalMHV/bca27623c32dc04a311f6dff837e2d42

stages:
- stage: Build
  jobs:
  - job: iOSBuild
    pool:
      vmImage: 'macOS-latest'
    steps:
    - task: FlutterInstall@0
      inputs:
        channel: 'stable'
        version: 'latest'
    - task: FlutterBuild@0
      inputs:
        target: ios
        projectDirectory: $(projectDirectory)
        iosCodesign: false
        iosTargetPlatform: device

  - job: AndroidBuild
    pool:
      vmImage: 'macOS-latest'
    steps:
    - task: FlutterInstall@0
      inputs:
        channel: 'stable'
        version: 'latest'
    - task: FlutterBuild@0
      inputs:
        target: apk
        projectDirectory: $(projectDirectory)

- stage: CopyAndPublishArtifact
  jobs: 
    - job: CopyArtifactFiles
      steps:
      - task: CopyFiles@2
        inputs:
          SourceFolder: $(Build.SourcesDirectory)
          TargetFolder: $(Build.ArtifactStagingDirectory)
    - job: PublishArtifact
      steps:
      - task: PublishBuildArtifacts@1
        inputs:
          PathtoPublish: $(Build.ArtifactStagingDirectory)
          ArtifactName: drop

确保将工件复制到创建它们的作业中。

每个作业(以及每个阶段)都在代理上运行,并且在每个作业开始时清理作业的目录。

因此,您的两个构建作业都必须发布它们自己的工件并使用唯一的名称。然后你不需要最后阶段。

如果您想要一个包含两个文件的工件,您需要在一个作业中构建两个工件,或者让发布作业下载 2 个工件,然后创建一个包含两个工件的新工件 iOS 和 Android 个包。