gpt4 book ai didi

azure - 使用 Azure Devops Pipeline 的 Docker .NET(非核心)

转载 作者:行者123 更新时间:2023-12-03 02:43:09 25 4
gpt4 key购买 nike

我尝试使用 Azure Devops Pipeline 在 AWS ECR/ECS 中发布 docker 容器。那我该怎么办:

  1. 我创建了一个 asp.NET WebApi 项目(非核心)
  2. 我从 Visual Studio 2019 添加了 dockerfile(我没有更改默认文件)
  3. 我推送到了 azure devops 中的存储库
  4. 我创建了一个用于构建解决方案的构建管道
  5. 我向管道添加了 docker 构建操作
  6. 尝试将镜像推送到 AWS ECR

结果是,在解决方案构建之前一切正常,但是当我尝试构建 docker 时出现复制错误(这是日志):

Starting: build
================================================== ============================
Task: Docker
Description: Build or push Docker images, login or logout, or run a Docker command
Version: 2.162.0
Author: Microsoft Corporation
Help: https://learn.microsoft.com/azure/devops/pipelines/tasks/build/docker
================================================== ============================
"C: \ Program Files \ Docker \ docker.exe" build -fd: \ a \ 2 \ s \ xxx\ xxx\ Dockerfile --label com.azure.dev.image.system.teamfoundationcollectionuri = https: // dev. azure.com/yyy/ --label com.azure.dev.image.system.teamproject = InRule --label com.azure.dev.image.build.repository.name = xxx-backend --label com.azure.dev .image.build.sourceversion = 3580bfefbe0592212a1d9c76c6d30dd472e22748 --label com.azure.dev.image.build.repository.uri = https: //<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c9aeaeae89adacbfe7a8b3bcbbace7aaa6a4" rel="noreferrer noopener nofollow">[email protected]</a>/xxx/xxx/_git/xxx-backend .azure.dev.image.build.sourcebranchname = develop --label "com.azure.dev.image.build.definitionname = In WebApi Release Docker rule" --label com.azure.dev.image.build.buildnumber = 20200204.12 - -label com.azure.dev.image.build.builduri = vstfs: /// Build / Build / 11456 -t xxx d: \ a \ 2 \ s \ yyy\ yyy
Sending build context to Docker daemon 3.072kB

Step 1/13: FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
 ---> a5bc996f06b3
Step 2/13: ARG source
 ---> Running in f385f2f0cc47
Removing intermediate container f385f2f0cc47
 ---> 525c70129725
Step 3/13: WORKDIR / inetpub / wwwroot
 ---> Running in a8b464b080f2
Removing intermediate container a8b464b080f2
 ---> 534984f17fd7
Step 4/13: COPY $ {source: -obj / Docker / publish}.
COPY failed: CreateFile \\? \ C: \ ProgramData \ docker \ tmp \ docker-builder949209785 \ obj \ Docker \ publish: The system cannot find the path specified.
## [error] The process 'C: \ Program Files \ Docker \ docker.exe' failed with exit code 1
Finishing: build

我的管道 YAML 代码是:

pool:
  name: Azure Pipelines
  demands:
  - msbuild
  - visualstudio

steps:
- task: NuGetToolInstaller @ 0
  displayName: 'Use NuGet 4.4.1'
  inputs:
    versionSpec: 4.4.1

- task: NuGetCommand @ 2
  displayName: 'NuGet restore'
  inputs:
    restoreSolution: XXXSolution.sln

- task: VSBuild @ 1
  displayName: 'Build solution'
  inputs:
    solution: XXXSolution.sln
    msbuildArgs: '/ p: DeployOnBuild = true / p: WebPublishMethod = Package / p: PackageAsSingleFile = true / p: SkipInvalidConfigurations = true / p: PackageLocation = "$ (build.artifactstagingdirectory) \\"'
    platform: '$ (BuildPlatform)'
    configuration: '$ (BuildConfiguration)'

- task: PublishBuildArtifacts @ 1
  displayName: 'Publish Artifact'
  inputs:
    PathtoPublish: '$ (build.artifactstagingdirectory)'
    ArtifactName: '$ (Parameters.ArtifactName)'
  enabled: false
  condition: succeededOrFailed ()

- task: ExtractFiles @ 1
  displayName: 'Extract files'
  inputs:
    archiveFilePatterns: '$ (build.artifactstagingdirectory) /XXX.zip'
    destinationFolder: '$ (build.artifactstagingdirectory) / XXX / XXX / obj / Docker / publish'

- task: Docker @ 2
  displayName: build
  inputs:
    command: build
    Dockerfile: XXX / XXX / Dockerfile
    arguments: '-t XXX'

- task: CopyFiles @ 2
  displayName: 'Copy Files to: $ (build.artifactstagingdirectory) / obj / Docker / publish'
  inputs:
    SourceFolder: '$ (build.artifactstagingdirectory)'
    TargetFolder: '$ (build.artifactstagingdirectory) / obj / Docker / publish'
  enabled: false

- task: AmazonWebServices.aws-vsts-tools.ECRPushImage.ECRPushImage@1
  displayName: 'Push Image:'
  inputs:
    awsCredentials: awsCredentials
    regionName: 'eu-west-1'
    sourceImageName: XXX
    repositoryName: XXX

- task: PublishSymbols @ 2
  displayName: 'Publish symbols path'
  inputs:
    SearchPattern: '** \ bin \ ** \ *. Pdb'
    PublishSymbols: false
  enabled: false
  continueOnError: true

谁能帮我理解错误出在哪里?

最佳答案

我认为你的任务“Docker@2”和“CopyFiles@2”是颠倒的。

如果您查看 docker 日志,您可以看到 Docker 期望在\obj\Docker\publish 文件夹中找到发布输出,但您只需将它们复制到 Docker@2 之后。

关于azure - 使用 Azure Devops Pipeline 的 Docker .NET(非核心),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60109584/

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