代码之家  ›  专栏  ›  技术社区  ›  Reece Long

是否有方法为VSTS CI npm任务提供环境变量?

  •  9
  • Reece Long  · 技术社区  · 7 年前

    本质上,我需要一种为我的应用程序注入环境变量的方法,因为我不想检查。env文件到我的repo中。我希望能像 API_URL=api.example.com npm run build ,但看起来您不能在task命令之前预先处理事情。

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

    3 回复  |  直到 7 年前
        1
  •  24
  •   tehbeardedone    7 年前

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

    enter image description here

    然后向构建中添加一个新的cmd任务,并将其移到顶部,以便在开始构建之前设置环境变量。引用构建变量的方式如下。。。

    set API_URL=$(Build.API_URL)
    

    在UI中,它将如下所示:

    enter image description here

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

    enter image description here

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

    编辑:

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

    enter image description here

        2
  •  0
  •   Eugene Kulabuhov    4 年前

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

    - script: 'npm run'
      workingDirectory: 'src'
      displayName: 'npm run'
      env:
        { API_URL: 'api.example.com' }
    
        3
  •  -1
  •   BrotherDonkey    6 年前

    tehbeardedone 的答案对于构建机器来说是非常好的,而在Azure应用程序服务中运行应用程序时的答案也是类似的,我认为这才是您真正需要的。如果您需要访问这些 .env 应用程序启动之前或之后的文件(生成后)。

    1. Azure portal 我们走吧。
    2. 导航到你的应用程序服务。
    3. 单击“设置”标题下的“配置”。

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

    1. 单击“新建应用程序设置”
    2. 粘贴变量的名称(与 。环境 )进入“名称”字段。
    3. 同样,将变量的值粘贴到下一个字段中。
    4. 选中“部署插槽设置”复选框。这个领域如此模糊,这是必要的。当我没有这样做时,应用程序在运行start命令后无法访问此变量。

    重新启动应用程序。如果部署顺利,那么应用程序应该能够以上面指定的方式访问变量add。