有没有办法为VSTS CI npm任务提供环境变量?

时间:2018-03-30 17:26:36

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

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

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

3 个答案:

答案 0 :(得分:10)

您可以将一些构建变量添加到构建定义中,然后在构建步骤中引用它们。例如,为您的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

答案 1 :(得分:0)

tehbeardedone的答案对于构建机器非常有用,对于在Azure应用程序服务中运行您的应用程序时,答案也是相似的,我认为这是您真正需要的。这是为了在您启动应用程序之前(构建后)需要访问这些.env文件的情况。

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

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

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

重新启动您的应用。如果部署得当,则您的应用应该可以按上述指定的方式访问变量add。

答案 2 :(得分:0)

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

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