代码之家  ›  专栏  ›  技术社区  ›  Yatrix

如何使用Bash在Azure DevOps中设置构建变量?

  •  0
  • Yatrix  · 技术社区  · 5 年前

    我使用下面的命令从package.json文件中提取版本并将其设置为我的一个构建变量, Version .

    # successfully retrieves and prints the version to console
    ver=$(node -e "console.log(require('./package.json').version)")
    echo "Version: $ver"
    
    # does jack squat
    # even trying to hard-code something in place of $ver doesn't set the variable
    echo "##vso[task.setvariable variable=Version]$ver"
    echo "Version: $(Version)"
    

    我试过用 ver $(ver) 而不是 $ver ,当控制台为 $(Version) 在所有情况下(一开始是空的)。如果我硬编码 版本 ,它打印得很好,所以不是打印或检索,而是设置问题。我的脚本是以MS的例子为基础的,

    echo "##vso[task.setvariable variable=sauce]crushed tomatoes"

    我们的生成服务器位于Windows环境中。

    0 回复  |  直到 5 年前
        1
  •  -1
  •   Andy E    5 年前

    发了一段时间后,我想我会分享一下,以防别人无意中发现。

    从文档中可以看出,管道变量在任务完成之前不会展开。 Microsoft has enhanced their documentation to illustrate it better

    steps:
    
    # Create a variable
    - script: |
        echo '##vso[task.setvariable variable=sauce]crushed tomatoes'
    
    # Use the variable
    # "$(sauce)" is replaced by the contents of the `sauce` variable by Azure Pipelines
    # before handing the body of the script to the shell.
    - script: |
        echo my pipeline variable is $(sauce)
    

    我想这就是为什么即使硬编码一个值,你仍然看不到任何东西。