Ho在Azure的Yaml Pipeline中读取在一个阶段下载到下一个结果阶段的工件



如果你在下面看到我的Yaml,我有$(Build.SourcesDirectory(,它有我正在下载并复制到Azure Blob中的工件。在下一阶段中,我想使用$(Build.SourcesDirectory(内容,但如果在下一个阶段调用$(Build.sourcesDirectary(,我将一无所获。为什么会发生这种情况?我该如何解决??

- task: PublishPipelineArtifact@1
displayName: 'Publish PS'
inputs:
targetPath: $(Build.ArtifactStagingDirectory)flow_ps
artifactName: 'Flow_Tools_PS'
- task: DownloadPipelineArtifact@2
displayName: Download Flow CodeGen
inputs:
artifact: 'Flow_Tools_PS'
path: '$(Build.SourcesDirectory)/Flow_Tools_PS'
- task: AzureFileCopy@2
displayName: 'Publish Flow_Tools_PS to Blob'
inputs:
SourcePath: '$(Build.SourcesDirectory)/Flow_Tools_PS'
azureSubscription: 'Azure CICD'
Destination: AzureBlob
storage: '$(BlobStorageAccount)'
ContainerName: '$(BlobContainer)'
BlobPrefix: '$(BlobPrefix)/$(DeploymentVersion)/Flow_Tools_PS'
AdditionalArgumentsForBlobCopy: '/V /S'
outputStorageUri: BlobUri
outputStorageContainerSasToken: BlobSASToken

- stage: PublishFlowNotebooks
dependsOn: Flow
jobs:
- job: DevOpsScripts
pool:
vmImage: 'windows-latest'
environment: 'Flow'
steps:
- checkout: DevOpsScripts
- powershell: |
Get-ChildItem $(Build.SourcesDirectory) -Recurse
name: DebugCheckout
displayName: Debug script checkout
- task: DownloadPipelineArtifact@2
inputs:            
buildVersionToDownload: 'latest'
targetPath: '$(Pipeline.Workspace)'
- task: PowerShell@2
displayName: 'PowerShell Script'
inputs:
targetType: filePath
filePath: '$(System.DefaultWorkingDirectory)/ReleaseNoteScripts/UploadWithReleaseNotes.ps1'

如果你想在作业之间共享一些目录,你应该发布该目录的内容:

steps:
- publish: $(Build.SourcesDirectory)
artifact: Flow

然后在下一个作业中下载这个工件:

steps:
- download: current
artifact: Flow

注意

默认情况下,文件会下载到$(Pipeline.Workspace(/。如果没有指定工件名称,则会为每个下载的工件创建一个子目录。

您可以在此处阅读有关此的更多信息。

如果你想签出多个存储库,这是可能的

resources:
repositories:
- repository: MyGitHubRepo # The name used to reference this repository in the checkout step
type: github
endpoint: MyGitHubServiceConnection
name: MyGitHubOrgOrUser/MyGitHubRepo
- repository: MyBitbucketRepo
type: bitbucket
endpoint: MyBitbucketServiceConnection
name: MyBitbucketOrgOrUser/MyBitbucketRepo
- repository: MyAzureReposGitRepository # In a different organization
endpoint: MyAzureReposGitServiceConnection
type: git
name: OtherProject/MyAzureReposGitRepo
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
steps:
- checkout: self
- checkout: MyGitHubRepo
- checkout: MyBitbucketRepo
- checkout: MyAzureReposGitRepository
- script: dir $(Build.SourcesDirectory)

最新更新