这可以在单个 yaml 文件中实现吗?我如何运行不同
不同分支的任务,我已经定义了工作/阶段但无法获得
他们是有条件的?
当然。您可以将这些阶段添加到单个 yaml 文件中。然后您需要为每个阶段或每个作业定义condiftion 字段。
以下是阶段的示例:
trigger:
- '*'
pool:
vmImage: 'ubuntu-latest'
stages:
- stage: Test1
condition: OR(eq(variables['Build.SourceBranch'], 'refs/heads/master') ,eq(variables['System.PullRequest.TargetBranch'], 'refs/heads/master'))
jobs:
- job: BuildJob
steps:
- script: echo Build Stage1!
- stage: Test2
condition: OR(eq(variables['Build.SourceBranch'], 'refs/heads/dev') ,eq(variables['System.PullRequest.TargetBranch'], 'refs/heads/dev'))
jobs:
- job: BuildJob
steps:
- script: echo Build Stage2!
- stage: Test3
condition: OR(eq(variables['Build.SourceBranch'], 'refs/heads/staging') ,eq(variables['System.PullRequest.TargetBranch'], 'refs/heads/staging'))
jobs:
- job: BuildJob
steps:
- script: echo Build Stage3!
您可以将所需的分支设置为触发器。然后你可以使用Build.SourceBranch和System.PullRequest.TargetBranch来判断是否运行当前阶段。
Build.SourceBranch -> 用于合并分支。
System.PullRequest.TargetBranch -> 用于拉取请求。
这里是关于 conditions 和 variables 的文档。
是否有什么魔法可以让我将目录的内容复制到 blob 存储区?还是必须压缩->复制->解压缩?
由于您需要将文件发布到 Azure Blob,您可以直接尝试使用Azure File Copy task。
这是一个例子:
- task: AzureFileCopy@4
displayName: 'AzureBlob File Copy'
inputs:
SourcePath: xxx
azureSubscription: xxx
Destination: AzureBlob
storage: xxx
ContainerName: '$web'
希望这会有所帮助。