我试图将Team City中的这三个构建步骤复制到Azure DevOps。我想知道要在YAML文件中添加/更改哪些内容,以完成Team City中的构建步骤。我正在从Azure DevOps提供我的Team City步骤和YAML文件。
我尝试添加多个任务,但这似乎不起作用。
Team City建立步骤:
Step 1: Validate
Runner type: Maven (Runs Maven builds)
Execute: If all previous steps finished successfully
POM file path: pom.xml
Goals: clean validate
Maven used: not specified
Additional Maven command line parameters: none specified
User settings provided by default
Maven metadata disabled: false
Use own local artifact repository: false
Build only modules affected by changes (incremental building): false
JDK home path: not specified
Build working directory: not specified
JVM command line parameters: not specified
Docker Settings
Docker Image: unset
Java code coverage: disabled
Step 2:
Runner type: Maven (Runs Maven builds)
Execute: If all previous steps finished successfully
POM file path: pom.xml
Goals: package
Maven used: not specified
Additional Maven command line parameters: -Dapp.environment=test
User settings provided by default
Maven metadata disabled: false
Use own local artifact repository: false
Build only modules affected by changes (incremental building): false
JDK home path: D:\Programs\Java\jdk1.8.0_151
Build working directory: not specified
JVM command line parameters: not specified
Docker Settings
Docker Image: unset
Java code coverage: disabled
Step 3: SSH Upload to TEST 1
Runner type: SSH Upload (Deploys files/directories via SSH)
Execute: If all previous steps finished successfully
Target host: "host IP":/opt/apache/tomcat/webapps/
Target port: default
Username: *****
Transport: SFTP
Source: target/*.war
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: 'clean validate'
答案 0 :(得分:0)
Team City迈向Azure DevOps YAML
AFAIK,Maven task使用默认生命周期,该生命周期包括以下阶段:
- 验证-验证项目正确并且所有必要的信息均可用
- 编译-编译项目的源代码
- 测试-使用合适的单元测试框架测试已编译的源代码。这些测试不要求打包代码或
部署- 程序包-获取编译后的代码,并将其打包为可分发格式(例如JAR)。
- 验证-对集成测试的结果进行任何检查,以确保符合质量标准
- 安装-将软件包安装到本地存储库中,以作为本地其他项目中的依赖项
- 部署-在构建环境中完成,将最终程序包复制到远程存储库,以便与其他开发人员和项目共享。
这些生命周期阶段按顺序执行,以完成默认生命周期。给定上面的生命周期阶段,这意味着当使用默认生命周期时,Maven将首先验证项目,然后尝试编译源代码,针对测试运行源代码,打包二进制文件(例如jar),针对该源运行集成测试软件包,验证集成测试,将经过验证的软件包安装到本地存储库,然后将已安装的软件包部署到远程存储库。
因此,在使用任务Maven任务时,我们不需要一个个地指定每个阶段。
对于您而言,我们只需要在Goal(s)
选项中指定包,而无需指定clean validate
。 Maven任务将执行生命周期validate-> compile-> test-> package:
结果:
您还可以在“测试”标签下查看测试结果:
如果我们在clean validate
选项中仅指定Goal(s)
,则该任务仅执行此干净验证,而我们在“测试”标签中看不到测试结果:
此外,如果要部署程序包,可以在Goal(s)
选项中指定部署,也可以使用Copy Files Over SSH任务/ FTP Upload任务来部署此任务。 / p>
如果该任务不适合您,请查看文档Get started with Maven packages in Azure DevOps Services and TFS以获得一些详细信息。
希望这会有所帮助。