首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PublishPipelineArtifact .artifact忽略未识别

PublishPipelineArtifact .artifact忽略未识别
EN

Stack Overflow用户
提问于 2019-07-15 15:35:52
回答 2查看 4.3K关注 0票数 5

我使用Azure DevOps构建管道将工件发送到发布管道。我的构建管道如下:

  1. NodeTool@0安装Node
  2. 运行运行npm安装的脚本命令,然后运行测试套件。
  3. 通过PublishCodeCoverageResults@1发布代码覆盖率结果
  4. PublishPipelineArtifact@1targetPath: '$(Pipeline.Workspace)'作为工件目录发布工件。

当我最初不使用代码覆盖率部分( IE不安装节点)时,发送的文件为257,略高于25 IE。完全可行而且快速。

然而,当我安装节点并运行代码覆盖时,文件激增到750 an,这是可以理解的--但是作为一个工件IMHO传输起来太过了。

所以,看看我找到的一个解决方案:https://learn.microsoft.com/en-us/azure/devops/artifacts/reference/artifactignore?view=azure-devops

我把这个加进了回购的根部。

但是,使用PublishPipelineArtifact@1似乎对此文件没有任何影响。不管我做了什么,工作空间中的所有文件都被用作工件。

但是,真正起作用的是物理上删除构建过程中的文件。

我意识到这是一个问题的很多细节,但是我想知道.artifactignore文件是否真的适用于这个构建管道?

是否有一种方法可以正确地使用工件忽略文件,而不必担心在创建工件之前删除文件?

尝试更改PublishPipelineArtifact@1任务中的目标目录。

以下是目前正在工作的YAML:

代码语言:javascript
复制
# Node.js with Angular
# Build a Node.js project that uses Angular.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://learn.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'

预期的结果将是一个更小的工件文件,它仍然发布代码覆盖和安装节点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-16 06:30:04

.artifactignore应该位于定义为发布管道工件任务的目标路径的同一目录中(不仅仅是在回购的根目录中,比如azure-管线. The )。

不在文档中,而且它存在一个问题,这里。也可以检查这里

票数 7
EN

Stack Overflow用户

发布于 2019-07-18 23:29:12

好的,我使用了Shayki的信息--这是正确的答案--但是我想为每个人提供一个有用的yaml。我必须将我的.artifactignore从回购程序中复制,即:$(Pipeline.Workspace)/s到根$(Pipeline.Workspace)

一旦我做了这件事-它就显示了结果。一旦我调整了工件忽略文件,输出就从750+MB减少到2.3MB,并在8秒内处理。

YAML工作人员:

代码语言:javascript
复制
- 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'

FYI -这是为角度而建的,所以这是我使用的工件忽略文件。您的里程将根据您的项目不同。

代码语言:javascript
复制
**/dist
**/node_modules
**/coverage
**/.git
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57042995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档