【问题标题】:Is there a way of extract output of bash script in Azure Pipeline有没有办法在 Azure Pipeline 中提取 bash 脚本的输出
【发布时间】:2020-02-19 12:38:34
【问题描述】:

我有大量带有各种变量的 bash 脚本,这些变量通过管道传输到各种脚本中。

我一直想知道是否可以提取由 Azure Pipeline 激活的 bash 脚本的输出,作为 Pipeline 运行时其余部分的管道变量?

示例: foo=$(date + %Y%m%d_%H%M%S) output: 20200219_143400,我想得到输出供以后在管道上使用。

【问题讨论】:

  • 变量"$foo" 现在具有date 命令的值/输出。你想要什么?
  • 你试过##vso[task.setvariable]docs.microsoft.com/en-us/azure/devops/pipelines/process/…吗?
  • @IvanIgnatiev 我已经完成了,但没有完全理解它,因为我的变量是在 bash 任务中声明的,我需要它以供以后在管道中使用。
  • @Jetchisel 我想$foo 变量输出并将其用于另一个 bash 任务,作为输出变量,但我不知道如何
  • @DorShamay 在您的示例中,您需要在 OutputsStep:echo "##vso[task.setvariable variable=foo;isOutput=true]$foo" 的 Job1 中的某个位置启动,并在另一个任务中使用它,您需要将其传递给 Job2 脚本的参数:./myscript.sh $[ dependencies.Job1.outputs['OutputsStep.foo'] ]

标签: bash azure azure-pipelines


【解决方案1】:

取决于你如何设计你可以使用的管道Azure Pipeline variables

  1. 在同一个工作中:
- job: Job1
  steps:
  - bash: |
      $WORKDIR/foo.sh
      echo "##vso[task.setvariable variable=foo]$foo"
    name: FooStep
  - bash: |
      $WORKDIR/nextscript.sh $(FooStep.foo)
    name: NextScript

# ...
  1. 不同的工作:
- job: Job1
  steps:
  - bash: |
      $WORKDIR/foo.sh
      echo "##vso[task.setvariable variable=foo;isOutput=true]$foo"
    name: FooStep
- job: Job2
  dependsOn: Job1
  steps:
  - bash: |
      $WORKDIR/job2script.sh $[ dependencies.Job1.outputs['FooStep.foo'] ]
    name: Job2ScriptStep

# ...

因此,您需要使用 ##vso[task.setvariable] 将所有需要保存到输出的变量“打印到管道控制台”,然后将它们作为脚本参数值传递。

【讨论】:

  • 谢谢你的回答我会检查这个方法并更新
猜你喜欢
  • 2016-03-18
  • 2021-07-05
  • 1970-01-01
  • 2012-12-31
  • 2020-01-08
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
  • 2020-09-30
相关资源
最近更新 更多