我正在尝试在azure devops中使用模板,因为它是一个使用gradle和weblogic构建项目的模板,但在此之前我需要在前面创建构建并将其移动到后面,问题是当我添加阶段时它会抛出错误 Unexpected property extends 这不是因为版本,因为没有步骤它可以正常工作
有一个正确的选项可以做到这一点,而不需要更改模板?,我已经尝试了很多东西,但不起作用,这是我的代码
trigger:
- none
parameters:
- name: deliveryTrain
type: object
default:
continuousIntegration:
build:
- with: gradle
configure:
javaVersion: '1.8'
gradleExtraOptionsLabo: 'clean build'
workingDirectory: 'Gerencia_Tecnologia/salud-mensajeria_dinamica-back'
artifact:
with: 'artifactory'
configure:
artifactName: 'dinamica.md.ear'
continuousDelivery:
deployment:
- environment: 'labo'
platform:
with: 'weblogic'
configure:
serviceConnection: 'lab-Salud-wl-12.2.1.4'
continuousTesting:
- environment: 'labo'
cases:
- type: performance
with: 'jmeter'
configure:
repo:
name: 'Gerencia_Tecnologia/salud-mensajeria_dinamica-back-ml'
branch: 'feature/hu_comun_1707'
performanceTestFiles: 'jmeter/test/test.jmx'
performanceTestPercentilTest: '99'
performanceTestResultFiles: 'jmeter/test/result.jtl'
stages:
- stage: MensajeriaDinamica-Front-build
displayName: 'MensajeriaDinamica-Front-build'
jobs:
- job: BuildFrontEnd
displayName: 'Build and Copy Front Artifact'
pool:
name: 'linux-generic'
steps:
- checkout: 'salud-mensajeria_dinamica-fr'
- task: UseNode@1
inputs:
version: '12.16.1'
- script: |
npm install @angular/[email protected] &&
npm install &&
ng build --aot --output-hashing=all --prod &&
cp -r dist/. $(Build.ArtifactStagingDirectory)
displayName: 'Built and Copied Front Artifact'
- job: CopyArtifacts
displayName: 'Move Front Artifact to Back-End Repository'
pool:
name: 'linux-generic'
steps:
- checkout: 'salud-mensajeria-dinamica-back'
- script: |
rm -r $(Build.SourcesDirectory)/WAR_MensajeriaDinamica/WebContent/resultadosapp/*
- task: CopyFiles@2
inputs:
SourceFolder: '$(Build.ArtifactStagingDirectory)'
Contents: '**'
TargetFolder: '$(Build.SourcesDirectory)/WAR_MensajeriaDinamica/WebContent/resultadosapp/'
displayName: 'Moved Front Artifact to Back-End Repository'
resources:
repositories:
- repository: salud-mensajeria_dinamica-back
type: git
name: 'Gerencia_Tecnologia/salud-mensajeria_dinamica-back-ml'
ref: 'feature/hu_comun_1707'
- repository: salud-mensajeria-dinamica-front
type: git
name: 'Gerencia_Tecnologia/salud-mensajeria_dinamica-fr'
ref: 'feature/hu-comun-tablas'
- repository: templates
type: git
name: 'Gerencia_Tecnologia/ti-templates_pipelines-conf'
ref: 'master'
extends:
template: 'templates/gradle-weblogic.yaml@templates'
parameters:
deliveryTrain: ${{ parameters.deliveryTrain }}
根据您的 YAML 示例,我可以重现相同的问题。
恐怕在 YAML Pipeline 中无法同时定义 extends 和 stage 字段。
为了满足您的需求,您可以更改为使用 - template 字段来使用 YAML 模板并同时定义阶段。
例如:
模板文件:
parameters:
- name: deliveryTrain
type: object
default:
continuousIntegration:
build:
- with: gradle
configure:
javaVersion: '1.8'
gradleExtraOptionsLabo: 'clean build'
workingDirectory: 'Gerencia_Tecnologia/salud-mensajeria_dinamica-back'
artifact:
with: 'artifactory'
configure:
artifactName: 'dinamica.md.ear'
continuousDelivery:
deployment:
- environment: 'labo'
platform:
with: 'weblogic'
configure:
serviceConnection: 'lab-Salud-wl-12.2.1.4'
continuousTesting:
- environment: 'labo'
cases:
- type: performance
with: 'jmeter'
configure:
repo:
name: 'Gerencia_Tecnologia/salud-mensajeria_dinamica-back-ml'
branch: 'feature/hu_comun_1707'
performanceTestFiles: 'jmeter/test/test.jmx'
performanceTestPercentilTest: '99'
performanceTestResultFiles: 'jmeter/test/result.jtl'
stages:
- stage: MensajeriaDinamica-Front-build
displayName: 'MensajeriaDinamica-Front-build'
jobs:
- job: BuildFrontEnd
displayName: 'Build and Copy Front Artifact'
pool:
name: 'linux-generic'
steps:
- checkout: 'salud-mensajeria_dinamica-fr'
- task: UseNode@1
inputs:
version: '12.16.1'
- script: |
npm install @angular/[email protected] &&
npm install &&
ng build --aot --output-hashing=all --prod &&
cp -r dist/. $(Build.ArtifactStagingDirectory)
displayName: 'Built and Copied Front Artifact'
- job: CopyArtifacts
displayName: 'Move Front Artifact to Back-End Repository'
pool:
name: 'linux-generic'
steps:
- checkout: 'salud-mensajeria-dinamica-back'
- script: |
rm -r $(Build.SourcesDirectory)/WAR_MensajeriaDinamica/WebContent/resultadosapp/*
- task: CopyFiles@2
inputs:
SourceFolder: '$(Build.ArtifactStagingDirectory)'
Contents: '**'
TargetFolder: '$(Build.SourcesDirectory)/WAR_MensajeriaDinamica/WebContent/resultadosapp/'
displayName: 'Moved Front Artifact to Back-End Repository'
主要 YAML:
resources:
repositories:
- repository: salud-mensajeria_dinamica-back
type: git
name: 'Gerencia_Tecnologia/salud-mensajeria_dinamica-back-ml'
ref: 'feature/hu_comun_1707'
- repository: salud-mensajeria-dinamica-front
type: git
name: 'Gerencia_Tecnologia/salud-mensajeria_dinamica-fr'
ref: 'feature/hu-comun-tablas'
- repository: templates
type: git
name: 'Gerencia_Tecnologia/ti-templates_pipelines-conf'
ref: 'master'
stages:
- stage: test
jobs:
- job:
steps:
- xxx
- template: 'templates/gradle-weblogic.yaml@templates'
parameters:
deliveryTrain: ${{ parameters.deliveryTrain }}
注意: 在这种情况下,您需要删除模板字段中的 trigger:none 并将其添加到主 YAML。
更详细的信息可以参考文档:模板使用参考