ayd*_*gdu 7 jenkins jenkins-pipeline
我有一个maven,java项目,我正在使用git.我想在tomcat服务器上使用jenkins进行build + test + deploy(.war文件)(在同一设备上)
我当前的问题是关于通过将更改推送到git存储库主机来触发构建.然而它确实与詹金斯自由泳项目合作.在那里,我可以设置我的git存储库,因此它检测到任何更改并运行构建.
但据我所知,使用"管道"进行研究应该更好地运行build + test + deploy.所以我创建了一个管道,还写了一个jenkinsfile.
pipeline {
agent any
stages {
stage('Compile Stage') {
steps {
withMaven(maven: 'maven_3_5_1'){
bat 'mvn clean compile'
}
}
}
stage('Testing Stage') {
steps {
withMaven(maven: 'maven_3_5_1'){
bat 'mvn test'
}
}
}
stage('Deployment Stage (WAR)') {
steps {
withMaven(maven: 'maven_3_5_1'){
bat 'mvn deploy'
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
目前的问题是,在管道项目中,我找不到设置git存储库的选项.目前,当我推动变革时,jenkins不跟踪git的任何变化.
我要做什么,所以jenkins在git中检测到更改时运行构建(就像在自由式项目中一样)?
我非常感谢你.
Jenkinsfile)Jenkinsfile您应该将管道定义放入存储库内名为的文件中。
这样做的一个很大的优点是您的管道也是版本化的。使用Multibranch Project,您可以将 Jenkins 指向您的 Git 存储库,它会自动发现包含此类的所有分支Jenkinsfile(并为每个分支创建一个作业)。您可以在文档中找到更多信息。
如果您不希望不同分支的作业,您还可以配置作业以从 SCM 获取管道定义:
指定后,您可以将作业配置为定期轮询 SCM 更改:
如果您确实不想将管道放入存储库(我不推荐这样做),那么您可以使用以下步骤checkout来获取代码:
pipeline {
agent any
stages {
stage('Compile Stage') {
steps {
checkout('https://git.example.com/repo.git')
withMaven(maven: 'maven_3_5_1') {
bat 'mvn clean compile'
}
}
}
// ...
Run Code Online (Sandbox Code Playgroud)
更多结帐选项(例如其他分支)可以在步骤文档中找到。
最后,将作业更改为定期构建:
现在我正在努力(在编辑帖子时):这可能每次都会构建项目(示例中为 5 分钟)。我不确定是否currentBuild.changeSets包含使用 明确签出的更改checkout。如果是,那么您可以检查它是否包含更改,并在这种情况下中止构建。一切都不是很好...
| 归档时间: |
|
| 查看次数: |
5605 次 |
| 最近记录: |