通过 YAML 发布管道运行 azure powershell 脚本

2024-04-07

我有正常且工作的发布管道,通过给定的某个部署组,该管道执行一些任务:

  1. 复制脚本
  2. 执行该 powershell 脚本(在部署组中定义的目标计算机上)
  3. 删除脚本

我知道 YAML 不支持部署组,但是(幸运的是我!)到目前为止我的部署组只有一台机器,我们称之为MyTestVM .

所以我想要实现的主要目标是简单地在该 vm 上执行 powershell 脚本。通常,发布管道会发生的情况是,您在虚拟机上安装了触手/发布代理,您的部署目标(位于部署组内)连接到该目标,并且您的发布管道(感谢部署组)规范)能够在机器上使用该释放代理并在虚拟机本身上执行它想要的任何操作。

我需要相同的...但是通过 YAML !我知道有PowerShellOnTargetMachines命令在 YAML 中可用,但我不想使用它。它使用 PSSession,需要 SSL 证书和许多其他东西。我只想使用虚拟机上已有的代理!

到目前为止我已经采取的措施:

pool: 'Private Pool'

steps:
- task: DownloadPipelineArtifact@2
  inputs:
    buildType: 'specific'
    project: 'blahblah'
    definition: 'blah'
    buildVersionToDownload: 'latest'
    targetPath: '$(Pipeline.Workspace)'
    
- task: CopyFiles@2
  displayName: 'Copy Files to: C:\TestScript'
  inputs:
    SourceFolder: '$(Pipeline.Workspace)/Scripts/'
    Contents: '**/*.ps1'
    TargetFolder: 'C:\TestScript'
    CleanTargetFolder: true
    OverWrite: true

第一部分只是下载包含我的脚本的工件。然后说实话,我什至不确定我是否需要复制第二部分中的脚本..首先,因为我不认为它将脚本复制到VM目标工作区,而是将其复制到VM所在的VM Azure 管道代理已安装。第二:我想我可以从我的工件中引用它..但这不是重要的部分。 如何让我的 YAML 管道像正常发布管道一样使用虚拟机上安装的发布代理?


以某种方式达成了解决方案。首先值得一提的是,由于部署组不能使用 YAML 管道,因此继续的方法是创建一个环境并将您的目标虚拟机添加为资源。

因此,我不需要创建自己的托管代理或任何特殊的东西,因为问题是目标本身,而不是运行管道的代理。 通过创建环境并向该环境添加资源(在我的例子中是虚拟机),我们还在目标本身上创建了一个新的发布代理。因此,我的目标 VM 现在将有 2 个发布代理:旧的发布代理可供普通发布管道使用,新的发布代理附加到 Azure Devops 上的环境资源,可供 YAML 管道使用。

现在我终于可以访问我的虚拟机了:

- stage: PerformScriptInVM
  jobs:
  - deployment: VMDeploy
    pool:
      vmImage: 'windows-latest'
    # watch out: this creates an environment if it doesn’t exist
    environment:
      name: My Environment Name
      resourceType: VirtualMachine
    strategy:
      runOnce:
        deploy:
        steps:
        - task: DownloadPipelineArtifact@2
          inputs:
            buildType: 'specific'
            project: 'blahblahblah'
            definition: 'blah'
            buildVersionToDownload: 'latest'
            targetPath: '$(Pipeline.Workspace)'
        - task: PowerShell@2
          displayName: 'PowerShell Script'
          inputs:
            targetType: filePath
            filePath: '$(Pipeline.Workspace)/Scripts/TestScript.ps1'
            arguments: 'whatever your script needs..'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 YAML 发布管道运行 azure powershell 脚本 的相关文章

随机推荐

  • tkinter 和 time.sleep

    我试图在等待 5 秒后删除文本框中的文本 但程序不会运行 并且会休眠其他所有内容 还有一种方法可以让我的文本框休眠 这样我就可以在文本冻结时运行其他代码 from time import time sleep from Tkinter im
  • 了解何时以及如何使用 Require.JS

    我刚刚开始使用 Require JS 并且不太清楚应该使用它的适当情况 以及在这些情况下使用它的正确方法 以下是我目前使用 Require JS 进行设置的方式 我有两个功能 functionA and functionB 这两个功能都需要
  • 如何创建包含下拉列表的 HTML 对话框?

    我想在特定类别下记录用户输入 为此 我希望用户从下拉列表中选择一个类别 并且还有另一个可以输入文本的文本单元格 我的目标是用特定条件填充下拉列表 然后将用户选择和附加文本字符串记录到变量中 然后将其写入电子表格中 编辑 我已经能够创建下拉列
  • C# .NET 3.5 GUI设计[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一些 C GUI 设计的编程指南 我来自 Java 阵营 在那里我可以愉快地手工编写 Swi
  • winforms 事件中未保留同步上下文

    我有以下 winforms 事件 public MainForm InitializeComponent new Form ShowDialog This causes the problem private async void Main
  • 在swift ios中多线程并行执行多个任务

    我知道队列的创建并且能够执行单个任务 但如何并行执行多个任务 并发队列 gt let concurrentQueue DispatchQueue label com some concurrentQueue attributes concu
  • 配置 Microsoft Application Insights 以监视 Windows 服务

    是否可以配置微软的应用洞察 http msdn microsoft com en us library dn481095 aspx监控 Windows 服务 我有一个在 Azure 中运行的 VM 其中托管了 Web 服务 我需要安装哪个版
  • 在 fxml 文件之间切换

    我在 swing 组件内使用 jfxPanel 创建了一个应用程序 我面临的问题是我无法更改 fxml 文件 当单击 fxml 的按钮时 我想处理该 fxml 并在那里加载另一个 fxml 文件 这就是我到目前为止所做的 public cl
  • Objective-C 类前缀 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 您对命名 ObjC 类有何偏好 我有点不确定对此最合理的方法是什么 所以很高兴听到一些其他意见 Apple 建议为 cocoa 类添加前缀 因为
  • 在 jQuery 中,如何使用元素选中和取消选中所有复选框? [复制]

    这个问题在这里已经有答案了 我有以下代码 它使用通常位于复选框顶部的 LABEL 元素检查页面上的所有复选框 现在如何使用相同的 LABEL 元素取消选中所有框 jQuery document ready function var chec
  • Kibana4 监听端口 80 而不是端口 5601

    我在运行 RHEL7 的 Amazo EC2 实例上运行 elasticsearch 1 4 和 kibana4 Kibana4 作为独立进程运行 未部署在 nginx 等 Web 容器中 它正在侦听端口 5601 默认端口 我想让 kib
  • Android - 加载图像Url并在ImageView中显示

    我有这段代码来加载图像 服务器是安全的 我得到的答复是 200 这意味着可以 然后还要加载正确的网址 问题是当我运行我的应用程序时 图像不会被加载 try Bitmap bitmap null URL imageUrl new URL ur
  • C++ - 生成随机位集的有效方法,具有可配置的平均“1 与 0”比率

    我正在寻找一种高效的方法来生成随机数std bitset设定长度 我还希望能够影响1s 出现在结果中 因此如果概率值设置得足够低 则所有结果中只有一小部分会包含1 但仍然有可能 但不太可能 导致所有1s 它将用于计算量很大的应用程序 因此欢
  • 动态调用函数 - Python

    我有一个功能列表 例如 def filter bunnies pets def filter turtles pets def filter narwhals pets 有没有办法通过使用代表其名称的字符串来调用这些函数 e g filte
  • 如何更新 GridView / ListView 的每个元素上的 ProgressBar 状态?

    目前我有一个 GridView 每个元素都应该有一个单独的 ProgressBar 这些元素代表单独的下载 我想使用这些进度条显示下载的状态 但我应该如何更新它们呢 我的问题是 根据文档 以及我在 Google IO 视频中听到的内容 更新
  • 我应该实际使用哪个版本的 jQuery? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 所以几个月前 有一段时间我实际上并不需要 jQuery 来完成任何事情 并且几乎忘记了它 然后我醒了 所以 我前往http jquery
  • C++ 迭代模板 Map

    当我有一个包含模板映射和一个模板类const iterator声明如下代码typedef 如何迭代类外部映射的元素 例如 main 中以将它们打印在输出上 template
  • 删除小于X的数组元素

    我有数组 arr1 array 5 3 9 11 6 15 arr2 array 11 20 1 3 8 现在我需要循环遍历 arr1并找到小于的最大数X foreach arr1 as x need element that is MAX
  • 如何在 Laravel 中使用主密码登录用户?

    在 Laravel 中 我想使用主密码登录我的任何用户帐户 这是我在控制器中尝试过的 if Input get password master password email Input get email user User find em
  • 通过 YAML 发布管道运行 azure powershell 脚本

    我有正常且工作的发布管道 通过给定的某个部署组 该管道执行一些任务 复制脚本 执行该 powershell 脚本 在部署组中定义的目标计算机上 删除脚本 我知道 YAML 不支持部署组 但是 幸运的是我 到目前为止我的部署组只有一台机器 我