我有一个maven,java项目,我正在使用git。 我想在tomcat服务器上使用jenkins进行build + test + deploy(.war文件)(在同一设备上)
我当前的问题是关于通过将更改推送到git存储库主机来触发构建。然而它确实与詹金斯自由泳项目合作。在那里,我可以设置我的git存储库,因此它检测到任何更改并运行构建。
但是,就我可以使用“管道”进行研究而言,应该更好地使用build + test + deploy运行该过程。所以我创建了一个管道,还写了一个jenkins文件。
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'
}
}
}
}
}
目前的问题是,在管道项目中,我找不到设置git存储库的选项。目前,当我推动更改时,jenkins不会跟踪git的任何变化。
我要做什么,所以jenkins在git中检测到更改时运行构建(就像在自由式项目中一样)?
我非常感谢你。
答案 0 :(得分:1)
Jenkinsfile
)您应该将管道定义放入存储库中名为Jenkinsfile
的文件中。
这具有很大的优势,即您的管道也是版本化的。使用 Multibranch Project ,您可以将Jenkins指向您的Git仓库,它将自动发现包含此类Jenkinsfile
的所有分支(并为每个分支创建一个作业)。您可以在documentation。
如果您不希望不同分支的作业,您还可以配置作业以从SCM获取管道定义:
使用该指定,您可以将作业配置为定期轮询SCM更改:
如果您真的不想将管道放入存储库(我不建议这样做),那么您可以使用checkout
step来获取代码:
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'
}
}
}
// ...
可以在step documentation中找到更多结帐选项(例如其他分支)。
最后,定期更改要构建的作业:
现在,我正在挣扎(编辑帖子时):这可能每次构建项目(在示例中为5分钟)。我不确定,如果currentBuild.changeSets
包含使用checkout
明确签出的更改。如果是,那么您可以检查,如果它包含更改,并在这种情况下中止构建。一切都不太好......