【问题标题】:azure piplines yaml config天蓝色管道 yaml 配置
【发布时间】:2020-06-16 10:58:29
【问题描述】:

我正在尝试改进一个旧的时髦项目的 CI/CD 流程,该项目的代码目前无法重构。我只是无法按照 Azure 文档或即使可能。

我已经能够使用在合并到发布/开发分支之前运行单元测试的天蓝色管道文件来改善当前状态。但我想更进一步。

每个 PR 到发布/开发中的任务将:

  1. 脚本:npm run test:unit
  2. 脚本:npm run build:dev
  3. 将 .div/ 文件夹的内容复制/发布到静态站点的 azure blob 存储配置

任何 PR 或合并到发布/登台将:

  1. 脚本:npm run build:staging
  2. 将 .div/ 文件夹的内容复制/发布到静态站点的 azure blob 存储配置

任何 PR 或合并到 master 将:

  1. 脚本:npm run test:unit
  2. 脚本:npm run build:production
  3. 将 .div/ 文件夹的内容复制/发布到静态站点的 azure blob 存储配置

我有 3 个问题

这可以在单个 yaml 文件中实现吗?

我如何为不同的分支运行不同的任务,我已经定义了作业/阶段但不能让它们成为有条件的?

有没有什么魔法可以让我将目录的内容复制到 blob 存储区?还是必须压缩->复制->解压缩?

提前感谢一位睡眠不足的新爸爸

【问题讨论】:

    标签: azure yaml azure-pipelines


    【解决方案1】:

    这可以在单个 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.SourceBranchSystem.PullRequest.TargetBranch来判断是否运行当前阶段。

    Build.SourceBranch -> 用于合并分支。

    System.PullRequest.TargetBranch -> 用于拉取请求。

    这里是关于 conditionsvariables 的文档。

    是否有什么魔法可以让我将目录的内容复制到 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'
    

    希望这会有所帮助。

    【讨论】:

    • 那太棒了,我在兜圈子。非常感谢
    猜你喜欢
    • 2020-09-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 2020-01-27
    • 2022-07-13
    相关资源
    最近更新 更多