gpt4 book ai didi

azure-devops - Azure pipeline - 解压缩 artefact,将一个目录复制到 Azure blob store YAML 文件中

转载 作者:行者123 更新时间:2023-12-05 03:47:35 27 4
gpt4 key购买 nike

我被 Azure 管道卡住了。

我有一个现有的节点 SPA 项目,需要为每个环境(测试和生产)构建。我可以做到这一点,但在推送到 PROD 时需要手动执行步骤。我正在使用带有批准和检查的 Azure Dev-op 管道环境来强制执行此操作。

问题是使用“部署作业”从上一步中获取人工制品我找不到正确的目录。到目前为止,这是我的 YAML 文件:

variables:
# Agent VM image name
vmImageName: 'ubuntu-latest'

trigger:
- master

# Don't run against PRs
pr: none

stages:
- stage: Development
displayName: Devlopment stage
jobs:
- job: install
displayName: Install and test
pool:
vmImage: $(vmImageName)

steps:
- task: NodeTool@0
inputs:
versionSpec: '12.x'
displayName: 'Install Node.js'

- script: |
npm install
displayName: Install node modules

- script: |
npm run build
displayName: 'Build it'
# Build creates a ./dist folder. The contents will need to be copied to blob store

- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(Build.BinariesDirectory)'
includeRootFolder: true
archiveType: 'zip'
archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
replaceExistingArchive: true
verbose: true

- deployment: ToDev
environment: development
dependsOn: install
strategy:
runOnce:
deploy:
steps:
- task: DownloadPipelineArtifact@2
inputs:
buildType: 'current'
targetPath: '$(Pipeline.Workspace)'
- task: ExtractFiles@1
inputs:
archiveFilePatterns: '**/*.zip'
cleanDestinationFolder: true
destinationFolder: './cpDist/'

# Somehow within a deploy job retrieve the .zip artefact, unzip, copy the ./dist folder into the blob store

- task: AzureCLI@2
inputs:
azureSubscription: MYTEST-Development
scriptLocation: "inlineScript"
scriptType: "bash"
inlineScript: |
az storage blob upload-batch -d \$web --account-name davey -s dist --connection-string 'DefaultEndpointsProtocol=https;AccountName=davey;AccountKey=xxxxxxx.yyyyyyyyy.zzzzzzzzzz;EndpointSuffix=core.windows.net'
displayName: "Copy build files to Development blob storage davey"

- script: |
pwd
ls
cd cpDist/
pwd
ls -al
displayName: 'list'

- bash: echo "Done"

最佳答案

如果您对文件夹路径感到困惑,您可以添加一些调试步骤来检查已知系统变量的位置,以了解使用 powershell 脚本发生了什么,如下所示:

- task: PowerShell@2
displayName: 'Degug parameters'
inputs:
targetType: Inline
script: |
Write-Host "$(Build.ArtifactStagingDirectory)"
Write-Host "$(System.DefaultWorkingDirectory)"
Write-Host "$(System.ArtifactsDirectory)"
Write-Host "$(Pipeline.Workspace)"
Write-Host "$(System.ArtifactsDirectory)"

你应该简单地 publish the build generated artifactsdrop 文件夹。

请查看官方文档 -- Artifact selection ,其中解释说您可以通过以下任务定义将工件下载到的路径:

steps:
- download: none
- task: DownloadPipelineArtifact@2
displayName: 'Download Build Artifacts'
inputs:
patterns: '**/*.zip'
path: '$(Build.ArtifactStagingDirectory)'

请注意,下载会自动发生到 $(Pipeline.Workspace),因此如果您不希望部署下载文件两次,则需要在步骤中指定“下载:无”。

关于azure-devops - Azure pipeline - 解压缩 artefact,将一个目录复制到 Azure blob store YAML 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64836552/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com