【问题标题】:Azure Release Pipeline task on AWS System Manger succeeds even when the job is in execution in background即使作业在后台执行,AWS System Manager 上的 Azure Release Pipeline 任务也会成功
【发布时间】:2020-10-07 07:23:24
【问题描述】:

我在 Azure 上安装了 AWS-Toolkit 扩展。在 Azure 发布管道中,我配置了 System Manager Run Command 任务以在 ec2-instance 上执行 python 脚本。问题是,一旦触发 SSM - Run 命令任务,它就会给出 “成功” 状态(在 1 秒内)并继续执行阶段中的下一个任务。但是,该作业仍在 ec2-instance 上执行。

我想知道我应该如何让天蓝色管道任务等到执行真正结束,然后提供它执行的脚本的适当状态。

对于 AWS SSM 控制台上的相同调用,它显示作业(脚本)正在执行中。 这是天蓝色管道的问题吗?我其余的 AWS 任务似乎在 azure 管道中运行良好。

注意:管道任务根据需要正确配置(因为它在做它应该做的事情)。唯一的问题是这个任务应该等到工作完成。

编辑 1: 添加在管道中执行的任务以更清晰:

  1. 使用 Terraform 启动 EC2
  2. 从 repo 获取代码并发布(使用 Publish Artifact 任务)
  3. 存档(创建 zip)然后上传到 S3
  4. 使用 AWS CodeDeploy 服务从 S3 获取代码并将其“安装”到已启动的 EC2 上,然后使用 CodeDeploy Hooks 运行一些“安装后”脚本。
  5. 通过 SSM 执行另一个脚本(因为它可能需要几个小时才能完成,因此无法通过最大超时时间为 3600 的 CodeDeploy Hooks 来执行)
  6. 脚本执行完成后,使用 terraform destroy 终止实例。

【问题讨论】:

    标签: azure-pipelines azure-pipelines-release-pipeline aws-systems-manager


    【解决方案1】:

    AWS System Manger 上的 Azure Release Pipeline 任务即使在 该作业正在后台执行。这是天蓝色管道的问题吗?

    Azure 管道没有问题。尝试使用官方CMD task 运行您的python 脚本。除非脚本成功执行且没有错误,否则官方 CMD 任务不会显示Success 状态。 (您的预期行为。)

    相反,我认为这是第三方任务本身的问题。 Azure Devops 支持developing custom extensions,如果您遇到任务本身的问题,请尝试联系第三方扩展的作者。

    您可以尝试通过问题here 与他们联系。这是与该任务相关的open issue,与您遇到的行为相似。我建议您在那里跟踪问题并要求对该功能请求进行任何更新。

    【讨论】:

    • 感谢@Lance Li-MSFT 的建议。但是 CMD 任务将无法满足要求,因为我的代码在 ec2 实例上,并且 CMD 任务在执行期间不会找到这些脚本。我需要能够在 ec2 上执行脚本的东西。我曾尝试使用“SSH 任务”,但由于 EC2 位于私有子网中,因此握手失败。在我观察到这种行为之前,SSM Run 命令非常适合该场景。
    • 为了更清晰,我在问题中添加了更多细节。
    • @Akshay 嗯,我了解您的情况。我以 CMD 任务为例,因为我想澄清这个问题在官方任务中不会发生。这不是天蓝色管道的问题,而是第三方任务本身的设计。所以你的问题的答案是你必须联系第三方任务的作者以获得进一步的支持。就像我在答案中分享的最后一个链接...
    猜你喜欢
    • 2020-12-19
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    相关资源
    最近更新 更多