我正在为使用Jest测试API和集成的Node应用程序设置Azure管道。源代码位于Azure DevOps上,代码部署在Azure Portal中。当我运行测试时,由于远程存储库从未检查.env文件,所以管道失败了。尽管环境变量在Azure Portal中通过配置存活在运行时中,但管道实际上无法访问它。
有哪些方法可以访问或创建新位置来存储环境变量,以便我的测试可以在虚拟机中运行?
目前我的解决方案(我不知道是否正确)是创建一个变量组,并重新定义所有环境变量,使得管道也可以读取这些变量,如下面的描述:https://damienaicheh.github.io/azure/devops/2019/09/04/how-to-use-variables-inside-your-azure-devops-builds-en.html
我的问题是:
- 这个方法正确吗?这里存储的变量与构建无关,也不是运行命令的输入,而是需要在源代码中使用的所有环境变量,以便在虚拟机中进行测试(例如:base_url、apiKeys等)。
- 如果这个方法正确,我怎样才能避免在管道中重新编写和重新分配所有的值呢?我可以引用整个变量组,让源代码能够解释吗?我希望避免像这样。
- env
- API_KEY: $(apiKey)
- MAPS_KEY: $(mapsKey)
- CLIENT_KEY: $(clientKey)
- CLIENT_SECRET: $(clientSecret)
-
-
- and so on...
// looking for something like this
-env: myVariableGroup
任何指向更好解决方案的帖子或文章?我考虑使用密钥保管库,但我认为这与逐个导入密钥本质相同。
***
。Azure DevOps 不允许您将秘密信息放入日志中。虽然有一种方法可以欺骗系统,但您不应该这样做。我扩展了我的示例以向您展示如何映射秘密信息。我添加了一个示例,您可以根据自己的组织和项目进行一些更改并运行它来查看效果。 - Krzysztof Madej