首页 > 解决方案 > Azure DevOps - 在 Azure YAML 管道的 React 构建中删除文件夹为空

问题描述

我正在尝试将 YAML 管道实施到我的项目中;但是,当前代码不会输出到放置文件夹中。我没有任何子文件夹。该项目位于根部。有任何想法吗?我在某个地方看到,在脚本部分我需要 pushd 来指定目录并在最后弹出 popd。

项目结构:

在此处输入图像描述

我看过这个教程:https ://www.youtube.com/watch?v=QbmLxfRCt38&t=406s但我将如何指定根文件夹。

trigger:
- master

pool:
  vmImage: ubuntu-latest

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '10.x'
  displayName: 'Install Node.js'

- script: |
    npm install
    npm run build
  displayName: 'npm install and build'

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(Build.BinariesDirectory)'
    includeRootFolder: true
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
    replaceExistingArchive: true

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'

标签: azureazure-devopsyamlazure-pipelines-yaml

解决方案


您存档Build.BinariesDirectory的是:

您可以将代理上的本地路径用作已编译二进制文件的输出文件夹。

默认情况下,未设置新的构建管道来清理此目录。您可以定义您的构建以在 Repository 选项卡上对其进行清理。

例如:c:\agent_work\1\b。

此变量是代理范围的,可以用作脚本中的环境变量和构建任务中的参数,但不能用作构建号的一部分或版本控制标记。

通常 npm 会dist为您的代码生成位于 nera 的目录。所以这肯定是错误的存档路径。

你的步骤应该是

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: 'src/dist'
    includeRootFolder: true
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
    replaceExistingArchive: true

有点确定请添加临时步骤,例如

- bash: ls src

一步之后'npm install and build'

trigger:
- master

pool:
  vmImage: ubuntu-latest

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '10.x'
  displayName: 'Install Node.js'

- script: |
    npm install
    npm run build
  displayName: 'npm install and build'

- bash: ls src
  displayName: 'Check directories'

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: 'build/static'
    includeRootFolder: true
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
    replaceExistingArchive: true


- task: PublishPipelineArtifact@1
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
    ArtifactName: 'drop'


推荐阅读