如何在 Azure devops 管道 yml 中解析 "unexpected value 'stages' azure pipelines"

How to resolve "unexpected value 'stages' azure pipelines" in Azure devops pipeline yml

我是 Azure devops 的新手。作为 poc 的一部分,我正在尝试构建一个基于 java 的 docker 图像。

所以我有以下管道 yaml 文件

# Maven
# Build your Java project and run tests with Apache Maven.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/java

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: Maven@3
  inputs:
    mavenPomFile: 'pom.xml'
    mavenOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: '1.8'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    testResultsFiles: '**/surefire-reports/TEST-*.xml'
    goals: 'package'

resources:
- repo: self

variables:
  tag: '$(Build.BuildId)'

stages:
- stage: Build
  displayName: Build image
  jobs:  
  - job: Build
    displayName: Build
    pool:
      vmImage: 'ubuntu-latest'
    steps:
    - task: Docker@2
      displayName: Build an image
      inputs:
        command: build
        dockerfile: '$(Build.SourcesDirectory)/Dockerfile'
        tags: |
          $(tag)

预计

如我所料,此管道需要创建一个 java 应用程序(jar 文件),然后它应该使用此 jar

创建一个 docker 图像

实际:

我低于错误

unexpected value 'stages' azure pipelines

我没看懂问题...

如果有人可以提供帮助,我们将不胜感激..?

谢谢

请在你的第一个任务之前把这个移到工作中- task: Docker@2

steps:
- task: Maven@3
  inputs:
    mavenPomFile: 'pom.xml'
    mavenOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: '1.8'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    testResultsFiles: '**/surefire-reports/TEST-*.xml'
    goals: 'package'

这只是语法问题。如果您使用步骤,则不能在根级别使用阶段。 Here 你可以检查语法。

如果你想单独创建 jar stage/job,你必须将其明确定义为另一个阶段或作业。但是,您需要以这种方式发布然后下载您的 jar pipeline artifact.

如果你只做一份工作,你可以使用:

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

variables:
  tag: '$(Build.BuildId)'

steps:
- task: Maven@3
  inputs:
    mavenPomFile: 'pom.xml'
    mavenOptions: '-Xmx3072m'
    javaHomeOption: 'JDKVersion'
    jdkVersionOption: '1.8'
    jdkArchitectureOption: 'x64'
    publishJUnitResults: true
    testResultsFiles: '**/surefire-reports/TEST-*.xml'
    goals: 'package'
- task: Docker@2
  displayName: Build an image
  inputs:
    command: build
    dockerfile: '$(Build.SourcesDirectory)/Dockerfile'
    tags: |
      $(tag)