每次手动打包部署到深夜,你是否也曾仰望星空思考:为啥不让Jenkins这个贴心小助手来干活?
01 什么是Jenkins管道?
简单来说,Jenkins就是一个用Java编写的开源持续集成(CI)和持续交付(CD)工具。而Pipeline(流水线)则是Jenkins 2.0的精髓,它基于Groovy语言实现的一种DSL(领域特定语言)。
Pipeline顾名思义,就是让软件从代码到部署的整个过程像流水线一样自动、流畅地执行。它将原本独立运行于单个或多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。
想象一下,你刚刚把代码推送到Git仓库,Jenkins就像被按下了启动按钮,立刻开始工作:拉取最新代码、解决依赖关系、运行测试、打包部署,一气呵成。而你,只需要悠闲地品着咖啡,等待构建结果的通知。
Jenkins Pipeline发展历程:从Jenkins 1.x的支持Pipeline(通过页面手动配置流水线)到Jenkins 2.x的pipeline as code(通过代码来配置流水线)。
为什么要使用Pipeline?
Pipeline不是Jenkins中执行自动化任务的唯一方式,那么为什么要选择它呢?
- 代码化:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑、审查和迭代其CD流程。
- 可持续性:Jenkins重启或者中断后都不会影响Pipeline Job。
- 可停顿:Pipeline可以选择停止并等待人工输入或批准,然后再继续运行。
- 多功能性:Pipeline支持现实世界的复杂CD需求,包括fork/join子进程,循环和并行执行工作的能力。
- 可扩展性:Pipeline插件支持其DSL的自定义扩展以及与其他插件集成的多个选项。
一句话总结:Pipeline实现持续集成与部署、节省产品发布时间、优化部署策略、节省人力成本,以及自动化脚本复用等等。
02 声明式 vs 脚本式:如何选择?
Jenkins管道有两种语法:声明式Pipeline和脚本化Pipeline。最初创建Jenkins Pipeline时,Groovy语言被选为基础,因此最早只有脚本化流水线。
后来为了降低使用门槛,Jenkins在2.5版本引入了声明式Pipeline。
声明式Pipeline
声明式Pipeline提供了一种更简单、更自以为是的语法,非常适合初学者。
它的特点是具有固定的结构,使用更严格的语法,使代码更易于阅读和维护。
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Build'
}
}
stage('Test') {
steps {
echo 'Test'
}
}
stage('Deploy') {
steps {
echo 'Deploy'
}
}
}
}
脚本化Pipeline
脚本化Pipeline是一种更传统的将Jenkins流水线编写为代码的方式,它使用传统的基于Groovy的语法。
它提供的限制非常少,因此灵活性极高,成为高级用户和要求更复杂的用户的理想选择。
node {
stage('Build') {
echo 'Build'
}
stage('Test') {
echo 'Test'
}
stage('Deploy') {
echo 'Deploy'
}
}
如何选择?
对于新手,强烈建议从声明式Pipeline开始。它更易于学习和使用,而且在实际项目中,声明式Pipeline已经能满足大多数需求。
当你遇到更复杂的需求时,也可以在声明式Pipeline中嵌入脚本化代码。
03 Pipeline基础语法详解
让我们深入了解声明式Pipeline的核心组成部分

最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



