【发布时间】:2021-11-26 13:56:13
【问题描述】:
我想限制 azure 管道装饰器注入所有管道。正如我们所知,一旦安装了装饰器,它将应用于组织中的所有项目。如何将其限制在某些项目中?
我使用Projects API 并获得了我的项目ID,然后我将项目ID 作为targettask 和targetid 添加到我的json 模板中。
"properties": {
"template": "custom-postjob-decorator.yml",
"targetid": "9146bcde-ef7b-492d-8289-b3dce5f750b0"
}
它不起作用,我们是否需要在decorator.yaml 中提供条件以将其限制为组织中的某些项目?
我还有几个问题。
现在我不想在项目 B 上运行我的装饰器,我定义如下
steps:
- ${{ if in(variables['System.TeamProject'], 'ProjectB')) }}:
- task: ADOSecurityScanner@1 --> injected decorator
我运行了它,它仍在向 ProjectB 注入装饰器。
正如你所说,我已经创建了两个场景。
- 如果任务已经存在就跳过,它就像一个魅力,但它没有显示任何关于跳过部分的消息。我们怎么知道装饰器在管道中被跳过了?
steps:
- ${{ if eq(variables['Build.task'], 'ADOSecurityScanner@1') }}:
- task: CmdLine@2
displayName: 'Skipping the injector'
inputs:
script: |
echo "##vso[task.logissue type=error]This Step '$(Build.task)' is not injected. You dont need this in pipeline"
exit 1
- 我使用了 microsoft 文档中的条件,也类似于您上面提到的条件。
它并没有仅使用条件命令跳过注入器,当我在装饰器和 pipeline.yaml 中添加任务(powershell)时,它会跳过与两个 yaml 文件上的任务匹配的装饰器。
如果装饰器在管道中被跳过,它是否显示或记录任何信息。 我观察到,当跳过装饰器向我显示错误陈述时,它的显示方式确实有所不同。
我们是否还需要在 pipeline.yaml 文件中定义任何内容?
我按照您在上面提供的条件运行,但不知何故,装饰器仍在注入到 projectB 中。你能告诉我我哪里做错了吗?
这是我粘贴在下面的基本 azure-pipeline.yaml 文件。
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- script: echo Hello, world!
displayName: 'Run a one-line script'
- script: |
echo Add other tasks to build, test, and deploy your project.
echo See https://aka.ms/yaml
displayName: 'Run a multi-line script'
【问题讨论】:
-
请更新您上面的问题,如果您需要更多关于这个确切主题的信息。或者创建一个新问题并
@jessehouwing在 cmets 中提及我,以便通知我。那我去看看。 -
再次,请编辑/改写原始问题。或者在 cmets 中问一些小问题。 StackOverflow 不希望进行公告板式的对话,而是要求您继续按摩您的问题,直到您找到确切的问题。您可以通过在 cmets 中使用
@mention(如@jessehouwing)或在我的答案中添加评论来吸引像我这样的人的注意力。在这种情况下,我会收到通知。见:stackoverflow.com/help/how-to-ask -
您能分享您现有的所有装饰器的相关部分,并解释您对其中的每件作品的期望吗?我认为您可能有一些被证明是错误的期望/假设,但我不知道它们,因此很难为您提供具体的后续步骤。
标签: azure-devops azure-pipelines azure-devops-extensions azure-pipelines-decorator