Azure Pipeline 将安全文件复制到构建文件夹中
Azure Pipeline Copy Secure file into build folder
我有一个 vite/svelte 项目,它使用 .env
文件进行环境设置。我还有一个 Azure Pipeline,其中包含一个安全文件 .env.staging
,它位于相关存储库的 .gitignore 列表中。我想下载这个安全文件,将它复制到我的构建目录,然后在我 运行 vite build --mode staging
时读取它的内容(好吧,npm run build:staging
其中包括 vite 构建...)
当 运行 从我的机器 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"
我不确定 CopyFiles@2
是否在做我期望的事情,因为它只是匹配 content
参数来复制任何匹配的文件,如果我正在写它,它可能是 0错了...
另请注意,我也尝试使用 $(dotenvStaging.secureFilePath)
作为内容参数,但它似乎也没有做任何事情。
自然地,我一发布就明白了,我需要更新 CopyFiles 部分以指定 sourceFolder,显然它不喜欢我的内容的绝对文件路径。
- task: CopyFiles@2
inputs:
sourceFolder: "$(Agent.TempDirectory)"
contents: ".env.staging"
targetFolder: "$(Agent.BuildDirectory)"
displayName: "Import .env.staging"
我有一个 vite/svelte 项目,它使用 .env
文件进行环境设置。我还有一个 Azure Pipeline,其中包含一个安全文件 .env.staging
,它位于相关存储库的 .gitignore 列表中。我想下载这个安全文件,将它复制到我的构建目录,然后在我 运行 vite build --mode staging
时读取它的内容(好吧,npm run build:staging
其中包括 vite 构建...)
当 运行 从我的机器 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"
我不确定 CopyFiles@2
是否在做我期望的事情,因为它只是匹配 content
参数来复制任何匹配的文件,如果我正在写它,它可能是 0错了...
另请注意,我也尝试使用 $(dotenvStaging.secureFilePath)
作为内容参数,但它似乎也没有做任何事情。
自然地,我一发布就明白了,我需要更新 CopyFiles 部分以指定 sourceFolder,显然它不喜欢我的内容的绝对文件路径。
- task: CopyFiles@2
inputs:
sourceFolder: "$(Agent.TempDirectory)"
contents: ".env.staging"
targetFolder: "$(Agent.BuildDirectory)"
displayName: "Import .env.staging"