持续集成 Jenkins 2.7 pipeline 功能使用介绍

思寒_seveniruby · 2016年06月01日 · 最后由 卜伟强 回复于 2017年09月28日 · 3064 次阅读

安装

现在的 jenkins 版本 +pipeline 插件

pipeline

这是 jenkins2.0 的核心特性. 也是最适合持续交付的 feature.
与以往的通过 Web 交互来配置流程不同, Jenkins 也走向了正规的工程化交付方式即使用配置文件. 这本身也印证了行业的经验everything is code
这样就再也不用每个项目都手工配置或者搞各种恶心的项目模板了.

jenkins 的 pipeline 主要是通过一个配置文件或者 job 里面的 pipeline 配置来设定每个 job 的步骤.
pipeline 定义了几乎所有要用到的流程, 比如执行 shell, 存档, 生成测试报告, 发布报告等.

持续交付 as code

https://jenkins.io/doc/book/pipeline-as-code/

node(linux){
  git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'
  def mvnHome = tool 'M3'
  env.PATH = "${mvnHome}/bin:${env.PATH}"
  sh 'mvn -B clean verify'
}

举一个 sonar 的例子

node {
    stage "auth"
    sshagent(['xxxx-xxxx-xxx-xxxx-xxxx']){ 
       stage 'Checkout'
       git url: 'git@git.tonghuashun.com:tonghuashun/tonghuashun-income.git'
    }
   stage 'Build'
   sh "mvn clean install -Dmaven.test.skip=true"
   stage "Sonar"
   sh "mvn sonar:sonar"

}

建议是在每个项目里面让研发放一个 Jenkinsfile, jenkins 的其他插件可以自动读取这些配置批量导入已有的项目.

pipeline-syntax

这是一个 Jenkinsfile 的命令查询工具. 辅助新手编写持续交付的配置指令. 非常好用.

分析测试结果

node {
   git url: 'https://github.com/joe_user/simple-maven-project-with-tests.git'
   def mvnHome = tool 'M3'
   sh "${mvnHome}/bin/mvn -B -Dmaven.test.failure.ignore verify"
   step([$class: 'ArtifactArchiver', artifacts: '**/target/*.jar', fingerprint: true])
   step([$class: 'JUnitResultArchiver', testResults: '**/target/surefire-reports/TEST-*.xml'])
 }
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 6 条回复 时间 点赞

这是一个和 web 配置并行的配置方式?相较于 web 上配置有什么优势呢

这个配置脚本是 Jenkins 自己的 DSL 么?

用起,比 Buildpipeline 好一些

#1 楼 @daveze 如果类比的话, 可以理解为 是从 Maven -> Gradle 的改进. Jenkinsfile 本身是个 groovy 脚本. 跟 gradle 很像. 这样就可以做便捷的做各种判断和循环处理了. 有了统一的 Jenkinsfile 以后批量的导入项目到 Jenkins 也方便了.

有个地方不懂,比如分之更新时才进行构建。这个应该怎么弄了

AppetizerIO 在 Jenkins 中接入 Appetizer 质量监控 中提及了此贴 07月11日 22:54
jon 回复

分支更新触发构建需要在源码工具上添加钩子,比如 gitlab 里可以添加 webhook 来触发 jenkins job

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册