PublishPipelineArtifact .artifact 忽略不被识别
PublishPipelineArtifact .artifact ignore not recognized
我正在使用 Azure DevOps 构建管道将工件发送到发布管道。我的构建管道如下:
- 使用
NodeTool@0
安装 Node JS
- 运行 运行 npm install 然后运行测试套件的脚本命令。
- Post 代码覆盖率结果来自
PublishCodeCoverageResults@1
- 使用
PublishPipelineArtifact@1
和 targetPath:
'$(Pipeline.Workspace)'
作为工件目录发布工件。
当我最初这样做时没有使用代码覆盖部分,IE 不是 安装节点,发送过来的文件是 257 个,略超过 25MB。完全可行且快速。
然而,当我安装 node 和 运行 代码覆盖率时,文件激增至 750MB,这是可以理解的 - 但对于 运行sfer 作为工件恕我直言来说太多了。
所以,在查看解决方案时我发现了这个:https://docs.microsoft.com/en-us/azure/devops/artifacts/reference/artifactignore?view=azure-devops
而且,我将其添加到存储库的根目录中。
但是,使用 PublishPipelineArtifact@1
这个文件似乎没有任何区别。无论我做什么,工作区中的所有文件都被用作工件。
虽然有效,但在构建过程中物理删除了文件。
我意识到问题的细节很多,但我想知道 .artifactignore 文件是否真的适用于此构建管道?
有没有一种方法可以正确使用工件忽略文件,而不用担心在创建工件之前删除文件?
试图更改 PublishPipelineArtifact@1
任务中的目标目录。
这是当前可用的 YAML:
# Node.js with Angular
# Build a Node.js project that uses Angular.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Install Node.js'
- script: |
npm install
npm run test:devops
displayName: 'npm install and test'
- task: PublishCodeCoverageResults@1
displayName: 'publish ng code coverage results'
condition: succeededOrFailed()
inputs:
codeCoverageTool: 'Cobertura'
summaryFileLocation: 'coverage/cobertura-coverage.xml'
reportDirectory: coverage
failIfCoverageEmpty: true
- task: DeleteFiles@1
inputs:
SourceFolder: '$(Pipeline.Workspace)/s'
Contents: |
node_modules
coverage
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Pipeline.Workspace)'
artifact: 'my-artifact'
预期的结果是一个较小的工件文件,它仍然发布代码覆盖率并安装节点。
.artifactignore
应该在与定义为发布管道工件任务的目标路径相同的目录中(不仅在像 azure-pipelines.yml 这样的 repo 的根目录中)。
好的,所以我使用了来自 Shayki Abramczyk 的信息——这是正确的答案——但我想为每个人整理一个工作 yaml。我不得不从 repo 复制我的 .artifactignore,即:$(Pipeline.Workspace)/s 到根 $(Pipeline.Workspace)
我一这样做就显示了结果。一旦我调整了工件忽略文件,输出就从 750+MB 减少到 2.3MB,并在 8 秒内处理。
工作 YAML:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Install Node.js'
- script: |
npm install
npm run test
displayName: 'npm install and test'
- task: PublishCodeCoverageResults@1
displayName: 'publish ng code coverage results'
condition: succeededOrFailed()
inputs:
codeCoverageTool: 'Cobertura'
summaryFileLocation: 'coverage/cobertura-coverage.xml'
reportDirectory: coverage
failIfCoverageEmpty: true
- task: CopyFiles@2
inputs:
SourceFolder: '$(Pipeline.Workspace)/s'
Contents: '**/.artifactignore'
TargetFolder: '$(Pipeline.Workspace)'
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Pipeline.Workspace)'
artifact: 'my-artifact'
仅供参考 - 这是为 angular 构建的,所以这是我使用的工件忽略文件。您的里程将根据您的项目而有所不同。
**/dist
**/node_modules
**/coverage
**/.git
我正在使用 Azure DevOps 构建管道将工件发送到发布管道。我的构建管道如下:
- 使用
NodeTool@0
安装 Node JS
- 运行 运行 npm install 然后运行测试套件的脚本命令。
- Post 代码覆盖率结果来自
PublishCodeCoverageResults@1
- 使用
PublishPipelineArtifact@1
和targetPath:
'$(Pipeline.Workspace)'
作为工件目录发布工件。
当我最初这样做时没有使用代码覆盖部分,IE 不是 安装节点,发送过来的文件是 257 个,略超过 25MB。完全可行且快速。
然而,当我安装 node 和 运行 代码覆盖率时,文件激增至 750MB,这是可以理解的 - 但对于 运行sfer 作为工件恕我直言来说太多了。
所以,在查看解决方案时我发现了这个:https://docs.microsoft.com/en-us/azure/devops/artifacts/reference/artifactignore?view=azure-devops
而且,我将其添加到存储库的根目录中。
但是,使用 PublishPipelineArtifact@1
这个文件似乎没有任何区别。无论我做什么,工作区中的所有文件都被用作工件。
虽然有效,但在构建过程中物理删除了文件。
我意识到问题的细节很多,但我想知道 .artifactignore 文件是否真的适用于此构建管道?
有没有一种方法可以正确使用工件忽略文件,而不用担心在创建工件之前删除文件?
试图更改 PublishPipelineArtifact@1
任务中的目标目录。
这是当前可用的 YAML:
# Node.js with Angular
# Build a Node.js project that uses Angular.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
steps:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Install Node.js'
- script: |
npm install
npm run test:devops
displayName: 'npm install and test'
- task: PublishCodeCoverageResults@1
displayName: 'publish ng code coverage results'
condition: succeededOrFailed()
inputs:
codeCoverageTool: 'Cobertura'
summaryFileLocation: 'coverage/cobertura-coverage.xml'
reportDirectory: coverage
failIfCoverageEmpty: true
- task: DeleteFiles@1
inputs:
SourceFolder: '$(Pipeline.Workspace)/s'
Contents: |
node_modules
coverage
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Pipeline.Workspace)'
artifact: 'my-artifact'
预期的结果是一个较小的工件文件,它仍然发布代码覆盖率并安装节点。
.artifactignore
应该在与定义为发布管道工件任务的目标路径相同的目录中(不仅在像 azure-pipelines.yml 这样的 repo 的根目录中)。
好的,所以我使用了来自 Shayki Abramczyk 的信息——这是正确的答案——但我想为每个人整理一个工作 yaml。我不得不从 repo 复制我的 .artifactignore,即:$(Pipeline.Workspace)/s 到根 $(Pipeline.Workspace)
我一这样做就显示了结果。一旦我调整了工件忽略文件,输出就从 750+MB 减少到 2.3MB,并在 8 秒内处理。
工作 YAML:
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Install Node.js'
- script: |
npm install
npm run test
displayName: 'npm install and test'
- task: PublishCodeCoverageResults@1
displayName: 'publish ng code coverage results'
condition: succeededOrFailed()
inputs:
codeCoverageTool: 'Cobertura'
summaryFileLocation: 'coverage/cobertura-coverage.xml'
reportDirectory: coverage
failIfCoverageEmpty: true
- task: CopyFiles@2
inputs:
SourceFolder: '$(Pipeline.Workspace)/s'
Contents: '**/.artifactignore'
TargetFolder: '$(Pipeline.Workspace)'
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Pipeline.Workspace)'
artifact: 'my-artifact'
仅供参考 - 这是为 angular 构建的,所以这是我使用的工件忽略文件。您的里程将根据您的项目而有所不同。
**/dist
**/node_modules
**/coverage
**/.git