【问题标题】:varying environment variables to different deploys (AzureDevOps/NodeJs)为不同的部署改变环境变量(AzureDevOps/NodeJs)
【发布时间】:2020-02-21 10:35:03
【问题描述】:

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

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

  • 安装节点 v12.x
  • 安装 npm 模块
  • 运行名为 test:ci 的 npm 命令
  • 在 Artifacts 中发布测试覆盖率和测试结果
  • 运行一个名为 compile 的 npm 命令来编译我在 build/ 文件夹中的 typescript 代码

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

谢谢!

【问题讨论】:

    标签: node.js git azure-devops continuous-integration environment-variables


    【解决方案1】:

    您可以使用Secure files 轻松地将 .env 文件包含在您的构建管道中。您可以参考以下步骤。

    1,将您的 .env 文件作为安全文件上传到 azure devops。

    在您的项目中,转到 Pipelines 下的 Library --> 点击 Secure files --> 点击 + Secure file strong> 将 .env 文件上传到 azure devops。

    点击3dots并选择编辑,启用授权在所有管道中使用

    2,在 azure devops 管道中使用 .env 文件。你需要使用Download Secure File task

    下载 .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 文件将在构建运行时可用。 希望以上有所帮助!

    【讨论】:

      猜你喜欢
      • 2022-10-23
      • 2018-05-21
      • 1970-01-01
      • 2019-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-11
      • 2017-06-25
      相关资源
      最近更新 更多