gpt4 book ai didi

azure-pipelines - 作业在上一个作业完成之前开始

转载 作者:行者123 更新时间:2023-12-02 19:48:04 24 4
gpt4 key购买 nike

我有一个包含两个作业的 Azure Pipelines 阶段(作业:发布部署:部署)。

有时,作业部署:部署会在作业:发布完成之前开始运行。

我收到错误,然后需要等待job:Publish完成并重新运行deployment:Deploy

当我重新运行部署:部署时,一切顺利......

问题
为什么 deployment: Deployjob: Publish 完成之前启动?

这是该阶段的 YML 代码:

- stage: Production
dependsOn: Staging
jobs:
- job: Publish
pool:
vmImage: 'Ubuntu 16.04'
steps:
- task: UseDotNet@2
displayName: Setup
inputs:
packageType: sdk
version: 3.0.x
- task: DotNetCoreCLI@2
displayName: Publish
inputs:
command: publish
publishWebProjects: false
projects: 'src/**/*.csproj'
arguments: '--configuration production --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: true
- task: PublishPipelineArtifact@0
displayName: Export
inputs:
artifactName: Production
targetPath: '$(Build.ArtifactStagingDirectory)'
- deployment: Deploy
pool:
vmImage: Ubuntu-16.04
environment: production
strategy:
runOnce:
deploy:
steps:
- task: DownloadPipelineArtifact@1
displayName: Import
inputs:
artifactName: Production
- task: AzureRmWebAppDeployment@3
displayName: Api
inputs:
package: '$(Build.ArtifactStagingDirectory)/Api.zip'
removeAdditionalFilesFlag: true
azureSubscription: '$(azure.subscription)'
appType: 'Web App on Linux'
webAppName: 'app-api'

最佳答案

因为当您使用的语法不包含作业依赖性时,此时,它就是 build in parallel (no dependencies) 的语法。 .

如果不指定依赖且实际组织情况允许parallelism ,这些作业将并行运行。

BUT,如果org本身不满足并行条件,用户也不会指定作业顺序(依赖)。现在服务器将随机运行作业。因为没有依赖关系的作业对于服务器来说是两个独立的作业。

注意:这只发生在 YAML 架构中,经典编辑器具有默认执行顺序。


要解决您遇到的麻烦,只需在您的 deployment: Deploy 作业中添加 dependsOn: Publish 即可:

  - deployment: Deploy
dependsOn: Publish
pool:
vmImage: Ubuntu-16.04
environment: production

现在,部署:部署只会在作业:发布完成后运行。

关于azure-pipelines - 作业在上一个作业完成之前开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58881158/

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