【问题标题】:Azure DevOps Maven Docker build - can't locate target folderAzure DevOps Maven Docker 构建 - 找不到目标文件夹
【发布时间】:2019-05-05 00:53:14
【问题描述】:

我是 Azure Devops 的新手,在构建我的第一个管道时遇到了一些困难。到目前为止,我的三个步骤都可以正常工作:

  1. Maven 从 POM 构建,成功打包我的 war 文件
  2. 复制文件到$(system.defaultworkingdirectory),从目标文件夹复制我想要的文件
  3. 将工件成功发布到私有 Azure 包存储库

我的第四步运行一个 DevOps Docker 任务 来构建一个 Docker 映像以用于部署 Web 应用程序。这是一个挑战,因为我的 dockerfile COPY 命令失败了。我找不到目标文件夹,即第 3 步刚刚用于构建 war 文件的文件夹!为了找到目标文件夹,我将此命令添加到我的 dockerfile:

运行 ls -R -la /

它似乎已经转储了整个文件系统,并且在列表中找不到目标文件夹。

关于在哪里可以找到我的目标文件有什么想法吗?

我非常接近按照我想要的方式完成这项工作。如果我注释掉 COPY 命令,它会构建一个基本上是空的图像,我的第五步成功地将它推送到我的私有 Docker 存储库。当然,如果没有网络应用程序,图像将毫无用处。

我们将不胜感激您提供的任何帮助。

【问题讨论】:

    标签: docker azure-devops maven-3


    【解决方案1】:

    经过大量试验和错误,我想出了以下 azure-pipelines.yml 文件:

    trigger:
    - master
    
    jobs:
    - job: build
      pool:
        vmImage: 'Ubuntu-16.04'
      steps:
      - script: |
          echo Starting the build
          env
          java -version
          ./mvnw clean package -Dmaven.test.failure.ignore=true -e -U
          ls -la *
        displayName: 'Build with Maven'
      - task: Docker@0
        displayName: 'Build an image'
        inputs:
          azureSubscription: 'Visual Studio Enterprise (******)'
          azureContainerRegistry: '{"loginServer":"testingcontainerregistry******.azurecr.io", "id" : "/subscriptions/******/resourceGroups/******/providers/Microsoft.ContainerRegistry/registries/testingContainerRegistry******"}'
          action: 'Build an image'
      - task: Docker@0
        displayName: 'Push an image'
        inputs:
          azureSubscription: 'Visual Studio Enterprise (******)'
          azureContainerRegistry: '{"loginServer":"testingcontainerregistry******.azurecr.io", "id" : "/subscriptions/******/resourceGroups/******/providers/Microsoft.ContainerRegistry/registries/testingContainerRegistry******"}'
          action: 'Push an image'
    - job: test
      dependsOn: build
      condition: succeeded()
      pool:
        vmImage: 'Ubuntu-16.04'
      steps:
      - script: |
          echo Performing tests
          env
          ls -la
        displayName: 'Running integration tests'
    

    测试作业还没有做任何有用的事情,但是您可以看到 Maven 构建和 Docker 构建和推送是由同一个作业完成的。

    基本上我和你一样在同一个问题上苦苦挣扎。我创建了一个 GitHub 票证,让他们意识到从当前文档中很难理解基本概念的事实:https://github.com/MicrosoftDocs/vsts-docs/issues/2851

    【讨论】:

      猜你喜欢
      • 2022-07-22
      • 2021-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-24
      • 2020-04-06
      • 1970-01-01
      • 2022-01-04
      相关资源
      最近更新 更多