首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有条件地复制Azure管道中的文件夹

有条件地复制Azure管道中的文件夹
EN

Stack Overflow用户
提问于 2021-06-24 17:53:47
回答 3查看 36关注 0票数 0

当我们使用我们的生产管道执行上传时,我希望能够有条件地上传我们应用程序的assets文件夹。这是因为上载该文件夹的内容所需的时间要长得多,而且很少对其进行任何更改。我已经编写了"CopyFilesOverSSH“任务,如下所示...

代码语言:javascript
复制
# Node.js with Angular
trigger:
- production

pool:
  default

steps:
- task: CopyFilesOverSSH@0
  inputs:
    sshEndpoint: 'offigo-production-server'
    sourceFolder: '$(Agent.BuildDirectory)/s/dist/offigo-v2/'
    ${{ if eq('$(UploadAssets)', 0) }}:
      contents: |
        !browser/assets/**
    ${{ if eq('$(UploadAssets)', 1) }}:
      contents: |
        !browser/assets/static-pages/**
        !browser/assets/page-metadata/**
    targetFolder: '/var/www/docker/DocumentRoot/offigo/frontend'
    readyTimeout: '20000'
    continueOnError: true

但是,当管道运行时,它会完全忽略规则,只上传assets文件夹的所有内容。我不知道为什么它不能正常工作,如果能帮上忙,我会非常感激的……

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-06-29 21:37:28

谢谢Krzysztof Madej,我试着用

代码语言:javascript
复制
${{ if eq(variables['UploadAssets'], 0) }}:

但是它仍然没有解决这个问题,变量似乎是未定义的。使用DreadedFrost提供的有关模板的链接,我最终向管道中添加了一个参数,如下所示……

代码语言:javascript
复制
# Node.js with Angular
trigger:
- production

pool:
  default

parameters:
  - name: uploadAssets # Upload assets folder?; required
    type: boolean # data type of the parameter; required
    default: true

steps:
- task: CopyFilesOverSSH@0
  inputs:
    sshEndpoint: 'offigo-production-server'
    sourceFolder: '$(Agent.BuildDirectory)/s/dist/offigo-v2/'
    ${{ if eq(parameters.uploadAssets, false) }}:
      contents: |
        !browser/assets/**
    ${{ if eq(parameters.uploadAssets, true) }}:
      contents: |
        !browser/assets/static-pages/**
        !browser/assets/page-metadata/**
    targetFolder: '/var/www/docker/DocumentRoot/offigo/frontend'
    readyTimeout: '20000'
    continueOnError: true

这会在我运行管道时添加一个复选框,这样我就可以设置是否上传文件夹。

我怀疑这是最好的方式,但它解决了目前的问题,我将有一个适当的考虑在未来实现模板。

票数 0
EN

Stack Overflow用户

发布于 2021-06-24 18:06:17

如果UploadAssets是变量名,则应使用类似于here的语法

代码语言:javascript
复制
${{ if eq(variables['UploadAssets'], 0) }}:
票数 1
EN

Stack Overflow用户

发布于 2021-06-24 21:49:11

在使用YAML Pipeline的情况下,假设您未来的部署步骤也将在部署什么和如何部署方面具有此条件。

Would recommend to create two templates.模板将概述所有步骤,如果步骤被重用,建议将它们模板化,以便只定义一次。

这里的问题是变量是如何声明的。$() is at the macro 级别。要确认下载日志,请单击已完成作业上的省略号:

我猜你会在运行时需要,所以$[variables.UploadAssets]

或者,当在浏览器中编辑时,也可以单击download full YAML file来查看它,尽管这不会在运行时传入任何变量。

请随时在评论中提出更多问题,因为这些东西从来都不是那么简单。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68113498

复制
相关文章

相似问题

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