Azure Pipeline 将安全文件复制到构建文件夹中

CT1*_*.IT 4 azure-devops azure-pipelines vite

我有一个 vite/svelte 项目,它使用.env文件进行环境设置。我还有一个 Azure Pipeline,其中包含一个安全文件,.env.staging该文件位于关联存储库的 .gitignore 列表中。我想下载这个安全文件,将其复制到我的构建目录,然后在运行时读取其内容vite build --mode staging(好吧,npm run build:staging其中包括 vite build...)

当从我的机器本地运行时npm run build:staging按预期工作并读取.env.staging文件,但是,在管道中使用时它似乎被忽略,我做错了什么吗?

这是我的 YML:

trigger:
  - main

pool:
  vmImage: 'ubuntu-latest'

steps:

  - task: DownloadSecureFile@1
    name: "dotenvStaging"
    inputs:
      secureFile: '.env.staging'
    displayName: "Download .env.staging"

  - task: NodeTool@0
    inputs:
      versionSpec: 14.15.4
    displayName: "Install Node.JS"

  - task: CopyFiles@2
    inputs:
      contents: "$(Agent.TempDirectory)/.env.staging"
      targetFolder: "$(Agent.BuildDirectory)"
    displayName: "Import .env.staging"

  - script: npm install
    displayName: "npm install"

  - script: npm run build:staging
    displayName: "npm run build:staging"

  - task: ArchiveFiles@2
    inputs:
      rootFolderOrFile: 'dist'
      archiveType: 'zip'
      archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
      #replaceExistingArchive: true
      #verbose: # Optional
      #quiet: # Optional
    displayName: "Create archive"

  - task: PublishBuildArtifacts@1
    inputs:
      PathtoPublish: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
      ArtifactName: 'drop'
      publishLocation: 'Container'
    displayName: "Publish archive"
Run Code Online (Sandbox Code Playgroud)

我不确定是否CopyFiles@2正在做我期望的事情,因为它只是匹配content复制任何匹配文件的参数,如果我写错了,它可能是 0...

另一方面,我也尝试使用$(dotenvStaging.secureFilePath)作为内容参数,但它似乎也没有做任何事情。

CT1*_*.IT 8

当然,我一发布就发现,我需要更新 CopyFiles 部分以指定 sourceFolder,显然它不喜欢我的内容的绝对文件路径。

  - task: CopyFiles@2
    inputs:
      sourceFolder: "$(Agent.TempDirectory)"
      contents: ".env.staging"
      targetFolder: "$(Agent.BuildDirectory)"
    displayName: "Import .env.staging"
Run Code Online (Sandbox Code Playgroud)