首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure DevOps:不同阶段之间的安装

Azure DevOps:不同阶段之间的安装
EN

Stack Overflow用户
提问于 2022-07-25 07:12:25
回答 2查看 87关注 0票数 0

我们在Azure DevOps中使用阶段,因为可以选择运行管道时要运行的阶段(见图)。但是,在运行阶段时,一个恼人的问题是,如果您在Stage 1中安装了一个程序,那么您似乎无法在Stage 2中使用该程序。

是否有一种方法只安装一次程序,然后在所有阶段都可用?

这里是我想要做的一个例子: 1)在阶段1中安装kubectl,2)在阶段2中使用kubectl。

代码语言:javascript
复制
trigger:
- master

pool:
  vmImage: ubuntu-22.04

steps:
- stage: MakeK8sConfiguration
  jobs:
  - job: MakeK8sConfiguration
    steps:
      - script: |
          # Downloading kubectl
          curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
          
          # Installing kubectl
          sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

- stage: MakeK8sDeployment
  jobs:
  - job: MakeK8sDeployment
    steps:
      - script: |
        # Running kubectl
        kubectl
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-25 07:50:13

从YAML文件中,您使用的是微软托管的代理:Ubuntu-22.04。

请参阅以下文档:Microsoft托管代理

每次运行管道时,都会为管道中的每个作业获得一个新的虚拟机。虚拟机在一个作业之后被丢弃(这意味着作业对虚拟机文件系统所做的任何更改,例如签出代码,都将不能用于下一个作业)。

在您的情况下,不同的阶段将使用不同的和新的微软托管代理。他们是独立的。

因此,当您在第一阶段安装kubectl时,第二阶段仍然不能使用kubectl.You,仍然需要添加其他步骤来在第二阶段安装kubectl。

是否有一种方法只安装一次程序,然后在所有阶段都可用?

根据您的需求,我建议您可以使用自托管代理VMSS代理来运行管道。它们可以使管道级在同一台代理机器上运行。

票数 1
EN

Stack Overflow用户

发布于 2022-07-25 07:51:03

阶段由devop作为不同的管道来处理,它们创建了一个新的工作目录(您可能会注意到,如果您检查阶段日志的话)。这意味着可能会找一个不同的代理人来管理你的工作。尽管您指定了相同的代理池,但另一个VM或容器可能在Microsoft宿主代理池中完成此工作。为了解决这个问题,您有两个选项。

第一个选项:也在第二阶段安装程序

第二个选项:使用安装程序的自托管代理。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73105249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档