首页 > 解决方案 > 为不同的部署改变环境变量(AzureDevOps/NodeJs)

问题描述

我正在尝试使用 azureDevOps 建立 CI/CD 管道。

这是我第一次尝试这样的事情;这个想法是让我的节点/express API 在我的机器(DEV env)上开发。只要我在 Azure Repos 上推送主分支,CI 管道就会启动。该管道目前执行以下操作:

这就是我现在所处的位置,我很想用我构建的应用程序创建一个 Docker 容器,然后在我的产品服务器上用它做一些事情。我的问题来了,我的 DEV 环境中有一个 .env 文件,并且该文件不是用 git 推送的。如何在构建过程中设置一个新的 .env 文件?有没有一种超级聪明的方法,或者我只是设置一个节点脚本,它将在构建时基于 .env.example 文件创建 .env 文件?

谢谢!

标签: node.jsgitazure-devopscontinuous-integrationenvironment-variables

解决方案


您可以使用安全文件轻松地将 .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 文件将在构建运行时可用。以上希望有帮助!


推荐阅读