【问题标题】:Azure DevOps - Pipelines checkoutAzure DevOps - 管道签出
【发布时间】:2021-12-16 15:06:25
【问题描述】:

我正在尝试解决一个问题,但我无法为我遇到的问题找到正确的文档。

目前,在我的项目中,我正在使用 Azure DevOps 管道在函数中构建和部署简单代码。我要尝试的是让多个阶段做一些具体的事情。

管道示例

第 1 阶段 - 代码验证(checktsyle、指南等) 第 2 阶段 - 测试

  • Job1:单元测试
  • Job2:集成测试 第 3 阶段 - 在云上部署 第 4 阶段 - 针对第 3 阶段完成的部署进行功能测试。

问题

您可能知道,当您执行不同的阶段时,管道会运行到不同的从站,这意味着将在所有这些从站中应用 git checkout。我要做的是避免这种结帐,只在第一阶段进行一次结帐,其余的使用第一阶段的结帐(代码相同..)

你知道我在这里缺少什么吗?我知道我可以在一个包含所有步骤/作业的阶段完成此过程,但我想将其拆分为不同的阶段,以确保每个阶段都有自己的责任。

提前感谢您的宝贵时间。

【问题讨论】:

    标签: azure-devops azure-pipelines devops


    【解决方案1】:

    这取决于您的代理运行的位置,如果代理是自托管的,您当然可以使用公共位置并避免签出自回购。对于托管代理,我认为您不能使用 azure 管道中的阶段概念来做到这一点,阶段具有特定的语义,无法映射到您想要的结果 AFAIK。还有其他方法可以在不坚持使用 azure 管道阶段的情况下拆分职责。这取决于您希望通过这种职责分工实现什么目标;

    如果您只是想对管道进行逻辑分区,还有其他选择,例如模板将允许您将分区分成可以单独维护的文件,如果这将满足您对职责分离的要求。它们甚至可以像下面的示例那样被分成不同的存储库,当然它们也可以驻留在同一个存储库中。

    我用于缓存和恢复使用公共存储库的 C++ 项目的依赖项的示例。

    - checkout: DevOpsScripts
    
        - template: up-restore.yml@DevOpsScripts
          parameters:
            CachePath: $(updepsCache)
            CacheKeyPrefix: 'updeps | "$(Agent.OS)"'
            DependenciesManifest: $(updepsPrefix)$(osSuffix).json
    

    【讨论】:

      【解决方案2】:

      如前所述,您应该有一个自定义代理,您可以在该代理上创建一个文件夹来存储代码,例如 C:\code。然后您可以在此代码路径上签出存储库并在下一阶段禁用签出。

      您可以在舞台内的作业中禁用checkout

        - job: DeployCode
          displayName: Deploy code
          steps:
          - checkout: none
          - script: echo deploying code
            displayName: deploy code
      

      为了在您的自托管代理上的特定目录上结帐,您应该:

      - checkout: self
        clean: true
        path: C:\code
      

      【讨论】:

        猜你喜欢
        • 2021-12-02
        • 1970-01-01
        • 1970-01-01
        • 2019-11-23
        • 1970-01-01
        • 2019-08-04
        • 2021-01-21
        • 1970-01-01
        • 2020-07-15
        相关资源
        最近更新 更多