node.js - 为不同的部署改变环境变量(AzureDevOps/NodeJs)
问题描述
我正在尝试使用 azureDevOps 建立 CI/CD 管道。
这是我第一次尝试这样的事情;这个想法是让我的节点/express API 在我的机器(DEV env)上开发。只要我在 Azure Repos 上推送主分支,CI 管道就会启动。该管道目前执行以下操作:
- 安装节点 v12.x
- 安装 npm 模块
- 运行一个名为 test:ci 的 npm 命令
- 在 Artifacts 中发布测试覆盖率和测试结果
- 运行一个名为 compile 的 npm 命令,在 build/ 文件夹中编译我的打字稿代码
这就是我现在所处的位置,我很想用我构建的应用程序创建一个 Docker 容器,然后在我的产品服务器上用它做一些事情。我的问题来了,我的 DEV 环境中有一个 .env 文件,并且该文件不是用 git 推送的。如何在构建过程中设置一个新的 .env 文件?有没有一种超级聪明的方法,或者我只是设置一个节点脚本,它将在构建时基于 .env.example 文件创建 .env 文件?
谢谢!
解决方案
您可以使用安全文件轻松地将 .env 文件包含在构建管道中。您可以参考以下步骤。
1,将您的 .env 文件作为安全文件上传到 azure devops。
在您的项目中,转到Pipelines下的Library --> 单击Secure files --> 单击+ Secure file以将 .env 文件上传到 azure devops。
单击3dots并选择Edit , Enble Authorize 以在所有管道中使用
2、在 azure devops 管道中使用 .env 文件。您需要使用下载安全文件任务
下载 .env 文件后,您可以使用在任务上设置的名称值(或经典编辑器中的“引用名称”)来引用代理计算机上 .env 文件的路径。例如,如果任务被命名为 myEnvFile,它的路径可以在管道中被引用为$(myEnvFile.secureFilePath)
(它被下载到 $(Agent.TempDirectory))。
- task: DownloadSecureFile@1
name: myEnvFile
displayName: 'Download .env file'
inputs:
secureFile: '.env'
3、您可以添加复制文件任务,将下载的.env文件复制到您的源代码文件夹(例如。$(Build.SourcesDirectory)
)
- task: CopyFiles@2
inputs:
SourceFolder: $(Agent.TempDirectory)
Contents: '**\.env'
TargetFolder: $(Build.SourcesDirectory)
然后 .env 文件将在构建运行时可用。以上希望有帮助!
推荐阅读
- c++ - 为什么这些交叉引用的类在拆分为不同的文件时不会编译?
- c - C中有缺陷的二分搜索
- python - 无法访问 Lambda 中 GhostScript 生成的文件
- webcam - Hololens 模拟器中的网络摄像头支持
- mysql - SpringMvc + Cloud SQL (MySQL) 集成
- rust - rustc -L 命令找不到板条箱
- vhdl - 这些代码有什么区别吗?
- c++ - 初始化多通道 OpenCV Mat
- laravel - 如何将 v-model 传递给另一个 v-model
- python-3.x - Hackerrank 列出问题 ~ 标准测试用例有效,但其他测试用例无效