【问题标题】:Is there a way to provide environment variables to a VSTS CI npm task?有没有办法为 VSTS CI npm 任务提供环境变量?
【发布时间】:2018-03-30 17:26:35
【问题描述】:

本质上,我需要一种为我的应用程序注入环境变量的方法,因为我不想将 .env 文件检查到我的存储库中。我希望运行类似API_URL=api.example.com npm run build 的东西,但看起来你不能在任务命令之前添加东西。

有没有办法做到这一点,或者有更好的方法来为托管在 Azure 中的节点应用程序创建环境变量?

【问题讨论】:

    标签: node.js npm azure-devops azure-pipelines


    【解决方案1】:

    您可以将一些构建变量添加到构建定义中,然后在某个构建步骤中引用这些变量。例如,为您的 API_URL 添加具有相同名称和值的构建变量。如果您出于任何原因(密码等)需要对变量保密,只需单击值字段旁边的锁定图标即可。

    然后在您的构建中添加一个新的 cmd 任务并将其移动到顶部以在开始构建之前设置您的环境变量。引用构建变量的方式是这样的……

    set API_URL=$(Build.API_URL)
    

    在 UI 中,它将如下所示:

    我在测试版本中添加了两个 cmd 任务,只是为了表明它正在工作。第一个用于设置环境变量,然后我使用第二个转储所有环境变量,以便我可以看到它们。您可以在构建日志中看到它有效。

    如果您想使用命令行以外的方式引用构建变量,您可以找到引用构建变量here 的不同方式的示例。还有一些关于如何在该页面上使用秘密变量的示例。

    编辑:

    由于您担心它在您的节点应用程序中不可用,因此我在控制台中快速对其进行了测试,以表明它肯定会起作用。

    【讨论】:

    • 这适用于将其添加到构建环境中,但我需要从节点应用程序中通过process.env.API_URL 访问此环境变量。
    • 是的,只要节点是您正在使用的构建代理的功能,它就应该工作。应该是这样,因为他们可以选择 npm 任务。
    • 我在我的帖子中添加了我在本地机器上测试它的屏幕截图。它表明它会起作用。
    • 您实际上不需要通过命令行重新设置它们。如果它们被设置为构建变量(而不是秘密),那么它们应该显示在 process.env
    • @Ian,是的,这是真的。我这样做只是为了展示一种可能的解决方案。如果您将它们设置为上述 phillyslick 评论的构建变量,它们将为每个执行的构建设置。
    【解决方案2】:

    使用 yaml 配置,您可以切换到脚本任务,然后执行以下操作:

    - script: 'npm run'
      workingDirectory: 'src'
      displayName: 'npm run'
      env:
        { API_URL: 'api.example.com' }
    

    【讨论】:

      【解决方案3】:

      tehbeardedone 的答案非常适合构建机器,并且在 Azure 应用服务中运行您的应用时,答案类似,我认为这是您真正需要的。如果您需要在您的应用启动之前或之后(构建后)访问这些 .env 文件。

      1. 我们去Azure portal
      2. 导航到您的应用服务。
      3. 点击“设置”标题下的“配置”。

      对于您在应用生产运行期间需要的每个变量,您需要:

      1. 点击“新建应用设置”
      2. 将变量的名称(与您的.env 中显示的完全相同)粘贴到“名称”字段中。
      3. 同样,将变量的值粘贴到下一个字段中。
      4. 选中“部署槽设置”复选框。尽管这个领域很模糊,但它是必要的。当我不这样做时,应用在运行启动命令后无权访问此变量。

      重新启动您的应用。如果部署顺利,那么您的应用应该可以访问以上述方式添加的变量。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-19
        • 2017-09-05
        • 2021-06-10
        • 2021-03-24
        • 1970-01-01
        • 1970-01-01
        • 2019-08-14
        相关资源
        最近更新 更多