gpt4 book ai didi

Jenkins Pipeline Build Trigger with git pull,如何?

转载 作者:行者123 更新时间:2023-12-04 12:51:34 25 4
gpt4 key购买 nike

我有一个 maven,java 项目,我正在使用 git。
我想在 tomcat 服务器(在同一设备上)上使用 jenkins 进行构建 + 测试 + 部署(.war 文件)

我当前的问题是关于通过将更改推送到 git 存储库 master 来触发构建。但是它确实适用于 Jenkins 自由泳项目。在那里我可以设置我的 git 存储库,因此它检测到任何更改并运行构建。

但是就我可以使用“管道”进行研究而言,最好使用构建 + 测试 + 部署来运行该过程。所以我创建了一个管道,还写了一个 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'
}
}
}
}
}

当前的问题是,在管道项目中,我找不到设置 git 存储库的选项。当前,当我推送更改时,jenkins 不会跟踪 git 中的任何更改。

我必须做什么,所以当在 git 中检测到更改时 jenkins 运行构建(就像在自由式项目中一样)?

我预先非常感谢你。

最佳答案

存储库内部的定义 ( Jenkinsfile )

您应该将管道定义放入名为 Jenkinsfile 的文件中。在您的存储库中。

这具有很大的优势,即您的管道也是版本化的。使用 Multibranch 项目,您可以将 Jenkins 指向您的 Git 存储库,它会自动发现包含此类 Jenkinsfile 的所有分支。 (并为他们每个人创造一份工作)。您可以在 documentation 中找到更多信息.

如果您不想要不同分支的作业,您还可以配置作业以从 SCM 获取管道定义:

enter image description here

指定后,您可以将作业配置为定期轮询 SCM 更改:

enter image description here

工作中的定义

如果您真的不想将管道放入存储库(我不推荐这样做),那么您可以使用 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 中找到.

最后,定期更改要构建的作业:

enter image description here

现在到了我挣扎的时候(在编辑帖子时):这可能每次都会构建项目(示例中为 5 分钟)。我不确定,如果 currentBuild.changeSets包含使用 checkout 显式 check out 的更改.如果是,那么您可以检查它是否包含更改并在这种情况下中止构建。一切都不是很好...

关于Jenkins Pipeline Build Trigger with git pull,如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47739996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com