【发布时间】:2017-08-04 09:00:59
【问题描述】:
我想将一些工作转换为新的 Jenkins 2.0 声明式管道。目前他们是 3 个不同的工作:
- CI --> 每 5 分钟轮询一次 SCM(仅限 master),构建并运行测试。
- 夜间 --> 每晚运行(构建、测试、集成测试和部署在夜间服务器上)
- Sprintly --> 这是一个参数化作业,每周四使用手动创建的标签运行。 (在 sprintly 服务器上构建、测试、集成测试和部署)
为此,我在春季有一个使用 maven 的小项目,这将是我开始的最佳示例(构建简单、容易且快速)。
目前我已经有一个用于 CI 构建的 Multibranch 管道,但我想将 Nightly 和 Sprintly 构建集成到这项工作中。
- 每晚:在要部署的主分支上运行 Cron 作业 在夜间服务器中。
- Sprintly:基于我在主分支中生成的 Sprintly_tag 构建以部署在 Sprintly 服务器中。
目前我有这个 JenkinsFile
pipeline {
agent {
label 'master'
}
tools {
maven "Apache Maven 3.3.9"
jdk "Java JDK 1.8 U102"
}
triggers {
cron ('H(06-08) 01 * * *')
pollSCM('H/5 * * * *')
}
stages {
stage('Build') {
steps {
sh 'mvn -f de.foo.project.client/ clean package'
}
post {
always {
junit allowEmptyResults: true, testResults: '**/target/surefire-reports/*.xml'
archiveArtifacts allowEmptyArchive: true, artifacts: '**/target/*.war'
}
}
}
stage('Deploy') {
sh 'echo "Deploy only master"'
}
}
当有东西被拉到 Git 时它运行每个分支,并且在晚上 1 点左右运行(但仍然运行所有分支)。
有什么想法或提示吗?不需要进行部署的代码我只想知道如何过滤/拆分位于同一个 JenkinsFile 中的分支
非常感谢大家!
编辑: 我也可以使用,但它会在晚上运行所有分支(我可以为 Cron 作业制作这个过滤器吗?)
stage('DeployBranch') {
when { branch 'story/RTS-525-task/RTS-962'}
steps {
sh 'echo "helloDeploy in the branch"'
}
}
stage('DeployMaster') {
when { branch 'master'}
steps {
sh 'echo "helloDeploy in the master"'
}
}
【问题讨论】:
标签: git jenkins nightly-build