【问题标题】:AZURE PIPELINE pass variable from one script to anotherAZURE PIPELINE 将变量从一个脚本传递到另一个脚本
【发布时间】:2020-06-09 02:18:05
【问题描述】:
steps:
- script: |
    # BuildConfig = production
  env:
    TEST_ONE: 123

- script: |
    echo $TEST_ONE
  displayName: 'Running npm run'

我希望 $TEST_ONE 在第二个脚本中,我还需要 TEST_ONE 在第二个脚本的环境变量中。当我在第二个脚本中回显它时,iT 打印空而不是 123。任何线索?

【问题讨论】:

标签: azure azure-devops azure-active-directory azure-pipelines pipeline


【解决方案1】:

您可以在您的 powershell 中设置一个新变量,然后将其传递给 Azure Devops,以便可以在接下来的任务中使用它。这是example

【讨论】:

  • 问题是,如果我使用变量 GUI 来存储我的变量,它们都会被放入环境中吗?我有 2 台服务器(主服务器、登台服务器),我不想将所有变量都放在环境中。当分支触发器正在暂存时,我想将暂存变量放在 env 中,并且与 master 相同。有什么想法吗?
【解决方案2】:

我不会使用脚本来管理您的变量,否则任何时候您需要更改它们,您都需要更改脚本。如果您使用版本控制来管理对管道的更改,则需要提交等。为什么不利用发布变量并为变量设置范围(因此主变量,暂存环境变量,所有变量)环境等)。最好的部分是,您可以从 Azure DevOps UI 管理这些变量。请查看this article

编辑
由于您不想将这些变量与节点应用程序的源一起存储在环境文件中,因此您可以通过在变量部分定义它们来管理管道上的这些变量,然后您可以将这些变量作为参数发送到您的npm 脚本 - 查看更多 here.

【讨论】:

  • 问题是如果分支触发器是主控,我为什么要在环境中放置暂存变量?如果我使用 UI,并分别为 staging/master 创建变量,它们都将被放入环境中。有意义吗?
  • 好吧,我不知道你的用例是根据分支使用不同的变量。通常你会根据发布的环境使用不同的变量。你能告诉我使用特定变量作为分支 master 和其他变量到其他分支的用例吗?
  • 我将管道用于前端项目和 webpack。所以我需要在构建时在环境中设置这些变量。这样webpack就可以把它放到我的项目中了。我有 2 个分支(主、分期)的触发器。当它是主人时,我想将生产变量放入环境中,并且 npm run production 将获取这些变量(在构建时)并将其放入我的项目中。暂存时,将放置暂存变量。
  • 好吧,我们在谈论哪种变量?基于应用程序的变量?如果是这种情况,那么您应该将这些变量保存在应用的配置文件中,并针对不同的环境使用转换?
  • 我不想将这些变量放在 src 代码中,例如 prod.env 和 stage.env 。我不希望其他人在 src 代码中看到它。