基本上,我需要一种方法为我的应用注入环境变量,因为我不想将.env文件检入我的仓库。我希望运行类似API_URL=api.example.com npm run build
的东西,但看起来你不能在任务命令之前添加前提。
有没有办法做到这一点,还是有更好的方法为Azure中托管的节点应用创建环境变量?
答案 0 :(得分:10)
您可以将一些构建变量添加到构建定义中,然后在构建步骤中引用它们。例如,为您的API_URL
添加具有相同名称和值的构建变量。如果您因任何原因(密码等)需要变量保密,只需单击值字段旁边的锁定图标。
然后在构建中添加一个新的cmd任务并将其移动到顶部以设置环境变量。引用构建变量的方式就像这样......
set API_URL=$(Build.API_URL)
在UI中它将如下所示:
我在测试版本中添加了两个cmd任务,以表明它正在运行。第一个用于设置环境变量,然后我使用第二个转储所有环境变量,以便我可以看到它们。您可以在构建日志中看到它有效。
如果要使用命令行之外的其他内容引用构建变量,可以找到引用构建变量here的不同方法的示例。还有一些如何在该页面上使用秘密变量的示例。
编辑:
由于您对节点应用程序中无法使用它有一些担忧,我在控制台中进行了快速测试,以证明它一定能正常工作。
答案 1 :(得分:0)
tehbeardedone的答案对于构建机器非常有用,对于在Azure应用程序服务中运行您的应用程序时,答案也是相似的,我认为这是您真正需要的。这是为了在您启动应用程序之前(构建后)需要访问这些.env
文件的情况。
对于在应用程序的生产运行期间所需的每个变量,您需要:
.env
中显示的一样)粘贴到“名称”字段中。重新启动您的应用。如果部署得当,则您的应用应该可以按上述指定的方式访问变量add。
答案 2 :(得分:0)
使用yaml配置,您可以切换到脚本任务,然后执行以下操作:
- script: 'npm run'
workingDirectory: 'src'
displayName: 'npm run'
env:
{ API_URL: 'api.example.com' }