Skip to content
SRE运维进阶之路SRE运维进阶之路
github icon
  • Jenkins

    • Jenkins 学习笔记
      • 1 Jenkins 简介

        • 1.1 DevOps、CI、CD都是什么鬼?
          • 1.2 Jenkins简介
            • 简单介绍
              • 发展历史
                • 特点
                  • 应用场景
                  • 三种构建方式
                    • 参考链接
                  • 2 安装 Jenkins

                    • 2.1 yum 安装 jenkins
                      • 2.2 war 包安装 jenkins
                        • 2.3 使用 ansible 安装 jenkins
                          • 2.4 使用docker安装jenkins
                          • 3 使用 Jenkins

                            • 3.1 Jenkins用户权限管理
                              • 3.2 访问 API
                              • 4 流水线核心语法

                                • 4.1 开始编写Jenkinsfile
                                  • 4.2 Jenkins流水线语法
                                    • 4.3 Groovy 简明教程
                                      • 4.4 Jenkins共享库应用
                                        • 4.5 共享库之钉钉消息推送
                                          • 4.6 流水线开发工具
                                            • 4.7 pipeline 生产配置实例
                                              • 4.8 在 VS Code 中校验 Jenkinsfile
                                              • 5 流水线集成篇

                                                • 5.1 构建发布工具集成
                                                  • 5.2 用户认证系统集成
                                                  • 6 管理 jenkins

                                                    • 6.1 Jenkins 关闭和重启的实现方式
                                                    • 7 日常维护

                                                      • 7.1 Jenkins Job迁移
                                                      • 8 Jenkins 常见问题
                                                      • Ansible

                                                        • Ansible 学习笔记
                                                          • 1 初识Ansible
                                                            • 2 Ansible Inventory配置详解
                                                              • 3 Ansible Ad-hoc命令集

                                                                • 3.1 Ansible Ad-hoc 常用命令集
                                                                  • 3.2 Ansible lineinfile模块详解
                                                                  • 4 Ansible Playbook

                                                                    • 4.1 Playbook的结构及handler用法
                                                                      • 4.2 Playbook循环语句
                                                                        • 4.3 Playbook条件语句
                                                                          • 4.4 Playbook高级用法
                                                                            • 4.5 Playbook之tags
                                                                              • 4.6 巧用Roles
                                                                                • 4.7 Jinja2 模板
                                                                                  • 4.8 yaml语法
                                                                                  • 5 Ansible变量

                                                                                    • 5.1 自定义变量
                                                                                      • 5.2 Fact变量
                                                                                        • 5.3 魔法变量
                                                                                          • 5.4 使用lookup生成变量
                                                                                            • 5.5 使用vault配置加密
                                                                                            • 6 Ansible使用优化
                                                                                              • 7 常见问题
                                                                                                • 8 综合项目

                                                                                                  • 使用 ansible 快速安装 k8s 机器

                                                                                                1.2 Jenkins简介

                                                                                                author iconClaycalendar icon2020年1月16日category icon
                                                                                                • 自动化工具
                                                                                                tag icon
                                                                                                • Jenkins
                                                                                                timer icon大约 4 分钟

                                                                                                此页内容
                                                                                                • 简单介绍
                                                                                                • 发展历史
                                                                                                • 特点
                                                                                                  • 应用场景
                                                                                                • 三种构建方式
                                                                                                • 参考链接

                                                                                                # 1.2 Jenkins简介

                                                                                                # 简单介绍

                                                                                                Jenkinsopen in new window前身是Hudson,Jenkins是一款开源 CI&CD 软件,基于Java开发,用于自动化各种任务,包括构建、测试和部署软件。 Jenkins 支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。

                                                                                                Jenkins 项目产生两个发行线, 长期支持版本 (LTS) 和每周更新版本, 两个版本都以 .war 文件, 原生包, 安装程序, 和 Docker 容器的形式分发。

                                                                                                官网:https://jenkins.io/

                                                                                                代码仓库:https://github.com/jenkinsci/jenkins

                                                                                                # 发展历史

                                                                                                • Jenkins的前身是Hudson,采用JAVA编写的持续集成开源工具。
                                                                                                • Hudson由Sun公司在2004年启动,第一个版本于2005年在java.net发布。
                                                                                                • 2007年开始Hudson逐渐取代CruiseControl和其他的开源构建工具的江湖地位。
                                                                                                • 在2008年的JavaOne大会上在开发者解决方案中获得杜克选择大奖(Duke’s Choice Award)。
                                                                                                • 在2010年11月期间,因为Oracle对Sun的收购带来了Hudson的所有权问题。主要的项目贡献者和Oracle之间, 尽管达成了很多协议,但有个关键问题就是商标名称“Hudson”。
                                                                                                • 甲骨文在2010年12月声明拥有该名称并申请商标的权利。因此,2011年1月11日,有人要求投票将项目名称从“Hudson”改为“Jenkins”。
                                                                                                • 2011年1月29日,该建议得到社区投票的批准,创建了Jenkins项目。
                                                                                                • 2011年2月1日,甲骨文表示,他们打算继续开发Hudson,并认为Jenkins只是一个分支,而不是重命名。因此,Jenkins和Hudson继续作为两个独立的项目,每个都认为对方是自己的分支。
                                                                                                • 到2013年12月,GitHub上的Jenkins拥有567个项目成员和约1,100个公共仓库,与此相对的Hudson有32个项目成员和17个公共仓库。到现在两者的差异更多,应该说Jenkins已经全面超越了Hudson。此外,大家可能是出于讨厌Oracle的情绪,作为Java开发者天然地应该支持和使用Jenkins。

                                                                                                # 特点

                                                                                                img

                                                                                                img

                                                                                                • 易于安装,只要把jenkins.war部署到servlet容器,不需要数据库支持
                                                                                                • 易于配置,所有配置都是通过其提供的web界面实现
                                                                                                • 集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知
                                                                                                • 生成JUnit/TestNG测试报告
                                                                                                • 分布式构建支持Jenkins能够让多台计算机一起构建/测试
                                                                                                • 支持多种扩展插件,你可以开发适合自己团队使用的工具
                                                                                                • 支持pipeline流水线,可以用代码描述配置过程,方便使用

                                                                                                # 应用场景

                                                                                                • 集成svn/git客户端实现源代码下载检出
                                                                                                • 集成maven/ant/gradle/npm等构建工具实现源码编译打包单元测试
                                                                                                • 集成sonarqube对源代码进行质量检查(坏味道、复杂度、新增bug等)
                                                                                                • 集成SaltStack/Ansible实现自动化部署发布
                                                                                                • 集成Jmeter/Soar/Kubernetes/…..
                                                                                                • 可以自定义插件或者脚本通过jenkins传参运行
                                                                                                • 可以说Jenkins比较灵活插件资源丰富,日常运维工作都可以自动化

                                                                                                # 三种构建方式

                                                                                                • jenkins 触发式构建:用于开发环境部署,开发人员push代码或者合并代码到gitlab项目的master分支,jenkins就部署代码到对应服务器。

                                                                                                • jenkins 参数化构建:用于测试环境预上线环境部署,开发push代码或者合并代码到gitlab项目的master分支之后,并不会部署代码,而是需要登录到jenkins的web界面,点击构建按钮,传入对应的参数(比如参数需要构建的tag,需要部署的分支)然后才会部署。

                                                                                                • jenkins 定时构建:用于APP自动打包,定时构建是在参数化构建的基础上添加的,开发人员可以登录jenkins手动传入tag进行打包,如果不手动打包,那么jenkins就每天凌晨从gitlab拉取最新的APP代码打包。

                                                                                                # 参考链接

                                                                                                jenkins 简介与应用 | 泽阳open in new window

                                                                                                jenkins 简介 | willseecloud | 看云open in new window

                                                                                                jenkins pipeline基础语法与示例 | MR_Hanjcopen in new window

                                                                                                edit icon编辑此页open in new window
                                                                                                上次编辑于: 2022/4/27 15:33:00
                                                                                                贡献者: clay-wangzhi
                                                                                                上一页
                                                                                                1.1 DevOps、CI、CD都是什么鬼?
                                                                                                备案号:冀ICP备2021007336号
                                                                                                Copyright © 2023 Clay