我正在尝试创建一个构建管道,然后部署在我的临时服务器和实时服务器上。 我使用下面的 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/