Azure Pipeline 空工件

标签 azure azure-devops azure-pipelines azure-pipelines-release-pipeline

我正在尝试创建一个构建管道,然后部署在我的临时服务器和实时服务器上。 我使用下面的 YML 来构建我的管道,但生成的工件是空的

trigger:
- main

variables:
  uiSource: 'dashboard'

pool:
  vmImage: 'windows-2019'

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

- script: |
    pushd $(uiSource)
    npm install
    npm run build
    popd
  displayName: 'npm install and build'
    
- task: PublishPipelineArtifact@0
  displayName: 'Publish pipeline artifact'
  inputs:
    artifactName: 'myArtifact'
    targetPath: '$(Build.ArtifactStagingDirectory)'

我尝试添加,但这只是复制目录中的所有内容。我只对生成的构建感兴趣。

- task: CopyFiles@2
  displayName: Copy file into artifacts
  inputs:
    SourceFolder: '$(Build.SourcesDirectory)'
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

我尝试在 VS code 中运行 npm build 它工作正常并创建了一个构建文件夹。 构建的结果是手动部署的,并且工作正常。我只是想在这里复制相同的内容

我已将其更新为以下内容,但它现在生成一个空的 zip 文件

    trigger:
  batch: true
  branches:
    include:
      - main

  paths:
    include:
    - dashboard/*

pool:
  vmImage: 'windows-2019'

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

- script: |
    npm install
    npm run build
  displayName: 'npm install and build'
  workingDirectory: 'dashboard/'

- task: ArchiveFiles@2
  displayName: 'Archive files'
  inputs:
    rootFolderOrFile: '$(Build.ArtifactStagingDirectory)'
    includeRootFolder: false
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/FrontEnd.zip'
    replaceExistingArchive: true
    
- task: PublishBuildArtifacts@1
  name: 'PublishArtifacts'
  displayName: 'Publish Artifacts'
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'FrontEnd'
    publishLocation: 'Container'

最佳答案

'npm install and build'之后,添加复制任务并更改SourceFolder名称。如果它在本地命名为“build”,则应为 SourceFolder: 'build'

- task: CopyFiles@2
  displayName: 'Copy Files to Artifact Staging Directory'
  inputs:
    SourceFolder: 'public'
    Contents: '**'
    TargetFolder: '$(build.artifactstagingdirectory)'
    CleanTargetFolder: true
    OverWrite: true

我通常使用 zip 和 PublishBuildArtifacts@1。

- task: ArchiveFiles@2
  displayName: 'Zip Artifact Staging Directory to yourproject.zip'
  inputs:
    rootFolderOrFile: '$(Build.ArtifactStagingDirectory)'
    includeRootFolder: false
    archiveType: 'zip'
    archiveFile: '$(Build.ArtifactStagingDirectory)/yourproject.zip'
    replaceExistingArchive: true

- task: PublishBuildArtifacts@1
  displayName: 'Publish Build Artifacts'
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)/yourproject.zip'
    ArtifactName: 'your-project'
    publishLocation: 'Container'

关于Azure Pipeline 空工件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75871950/

相关文章:

azure - 在 Azure 数据工厂中使用本地数据网关

Azure DevOps管道如何设置vcvars64.bat然后从批处理文件调用msbuild.exe?

asp.net-core - 当 dotnet 测试的覆盖率低于目标时,Azure DevOps 构建不会失败

azure - 将 Azure 托管构建代理 IP 地址添加到 Analysis Services 防火墙规则

azure - 如何在Azure IoT hub上找到消息?

bash - 如何使用循环保存所有 key 保管库 secret

azure - 如何从 Azure DevOps 中的文件夹(不是 zip)部署 WebApp

angular - Azure 和 NX,运行 ID 为 4224 的管道 : npm : Another process, 时出错,当前正在运行 ngcc

azure-pipelines - 使用 npm 任务与在 Azure 管道中使用脚本有什么区别?

azure - Azure Pipeline 完成后无法看到我的构建工件