【问题标题】:Trying to understand deployment jobs in Azure Pipelines尝试了解 Azure Pipelines 中的部署作业
【发布时间】:2021-08-24 18:44:21
【问题描述】:

我正在浏览有关部署作业的 Azure Pipelines 文档,我觉得我错过了一些重要的时间。 我将解释到目前为止我所理解的,请纠正我的错误:

部署作业用于将您的应用程序部署到不同的环境。环境是一组资源(VM 或 Kubernetes 命名空间),您的应用程序可以部署到其中。

通常(如果不总是)这些资源是您要将应用程序部署到的服务器。

在您的管道定义中,部署作业类似于:

jobs:
  # Track deployments on the environment.
- deployment: DeployWeb
  displayName: deploy Web App
  pool:
    vmImage: 'Ubuntu-16.04'

  # Creates an environment if it doesn't exist.
  environment: 'smarthotel-dev'
  strategy:
    # Default deployment strategy, more coming...
    runOnce:
      deploy:
        steps:
        - checkout: self 
        - script: echo my first deployment

根据经验,如果环境不包含任何资源,则此作业将在指定池中的代理上运行。如果是,它将在环境中的所有资源上运行。

现在我在这里遗漏了一些非常基本的东西:为什么可以选择在没有资源的环境中运行此部署作业?创建和使用没有资源的“环境”有什么意义?为什么这里有一个pool: 定义,在这种情况下,该作业将在其代理之一上运行?关键不就是将您的应用程序部署到您的一个环境(并且实际上拥有这些环境)吗?

我必须说,围绕这个问题的文档非常不清楚。

【问题讨论】:

    标签: azure-devops azure-pipelines


    【解决方案1】:

    为什么可以选择在没有资源的环境中运行此部署作业

    因为环境是您定义部署前检查(批准、门禁等)的范围。

    部署到环境中定义的资源是一个选项,而不是要求。

    例如,如果您有一个无服务器 Azure Web 应用程序,您可以使用一个环境来定义部署到该环境所需的批准和门,但随后实际部署活动会发生在代理池中的代理上,因为 Azure Web应用没有任何物理机器可以部署到。

    【讨论】:

    • 那么在这种情况下使用环境只是控制作业运行的一种方式?那么在这种情况下,环境的名称真的没有任何意义吗?听起来很奇怪..
    • 环境的名称是有意义的。 “开发”环境可能有更宽松的限制或没有限制。 “产品”环境可能需要在部署之前进行大量检查和批准。它只是不直接对应一组物理硬件。
    • 但是没有“环境”,那么人为地将作业运行与“开发”、“测试”和“产品”“环境”相关联有什么意义?就我们而言,这些作业都在同一台服务器上运行。也许您的意思是,针对“prod”环境的作业将更新在生产端口上侦听的应用程序或类似的东西?
    • @YoavKlein 你被 one 环境用例所困扰。环境不仅仅是一组服务器。他们还告诉 Azure DevOps 需要哪些批准和关卡才能将构建从一个环境升级到另一个环境。查看环境的全套功能。
    • 解决这个问题,你就会明白我在说什么:假设你有一个管道,构建 -> 部署到开发 -> 部署到生产。在有人转到 Azure DevOps 并批准部署之前,您不希望部署到 prod。你是如何做到这一点的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 2018-07-07
    • 2020-01-31
    • 2020-03-13
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    相关资源
    最近更新 更多