DevOps / Jenkins

Jenkins部署与实战指南:从安装到应用

浅时光博客 · 2月8日 · 2020年 14.5w 次已读

一、Jenkins 介绍

Jenkins是一个开源的自动化服务器,用于实现持续集成和持续交付(CI/CD)流程。它提供了丰富的功能和插件生态系统,可帮助开发团队自动化构建、测试和部署软件。

Jenkins的主要特点包括:

  • 自动化构建:Jenkins可以从源代码管理工具(如Git或SVN)中获取代码,并触发自动化构建过程。它支持各种构建工具(如Maven、Gradle和Ant),可以编译、打包和生成软件。
  • 持续集成:Jenkins支持持续集成,可以根据预定的时间表或版本控制系统的事件触发构建过程。这有助于及时发现和解决集成问题,并提高团队的协作效率。
  • 测试和质量控制:Jenkins可以与各种测试框架和工具集成,例如JUnitSeleniumJMeter。它能够运行测试套件、收集测试结果,并提供报告和趋势图表,帮助团队评估和监控软件质量。
  • 部署和交付:Jenkins可以与云平台、容器技术(如Docker和Kubernetes)以及原文链接:https://dqzboy.com配置管理工具(如Ansible和Chef)等集成,实现自动化部署和交付。这使得软件发布过程更加可靠、可重复和可管理。
  • 可扩展性和插件生态:Jenkins具有强大的插件生态系统,提供了各种功能扩展和集成选项。用户可以根据自己的需求选择并安装适合的插件,从而定制和扩展Jenkins的功能。

Jenkins可以帮助开发团队实现持续集成和持续交付,加快软件开发周期,提高软件质量,并提供丰富的工具和可视化界面来管理和监控整个软件交付流程。

Jenkins官网:jenkins.io

二、Jenkins 部署

2.1、环境准备

2.1.1:主机名更改

[root@localhost ~]# hostnamectl set-hostname jenkins

2.1.2:防火墙配置

# 查看放开的端口
[root@jenkins ~]# firewall-cmd --zone=public --list-ports

# 放开端口
[root@jenkins ~]# firewall-cmd --permanent --zone=public --add-port=8080/tcp

# 使其规则生效
[root@jenkins ~]# firewall-cmd --reload

2.1.3文章来源(Source):浅时光博客:关闭SELINUX

[root@jenkins ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
[root@jenkins ~]# setenforce 0

[root@jenkins ~]# getenforce 
Permissive
[root@jenkins ~]# sestatus
SELinux status:                 disabled

2.1.4:设置epel源、安装基本操作命令

[root@gitlab ~]# yum -y install wget
[root@gitlab ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@gitlab ~]# yum install -y net-tools vim lrzsz tree screen lsof tcpdump ntpdate

2.1.5:时间同步

[root@gitlab ~]# cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime 
[root@gitlab ~]# echo "*/5 * * * *  ntpdate time1.aliyun.com &> /dev/null && hwclock -w" >> /var/spool/cron/root
[root@gitlab ~]# systemctl  restart crond

2.2:下载软件

2.2.1:下载JDK

2.2.2:下载Jenkins

强烈推荐采用War包安装方式,并使用Tomcat 9版本启动。务必确保Tomcat版本正确,以保障顺利安装与启动。

2.3:安装部署

2.3.1:安装JDK

  • YUM安装的是系统默认openjdk,我这里采用安装oracle jdk,不使用openjdk
  • 注意:目前Jenkins不支持最新版本的jdk,jenkins官方建议安装的JDK版本为11版本,并且Jenkins将在2022年9月1日不支持JDK8版本
[root@jenkins ~]# cd /opt/soft
[root@jenkins soft]# rpm -ivh jdk-8u231-linux-x64.rpm

注意:Jenkins 宣布:从 2022 年 6 月 28 日发布的 Jenkins 2.357 和即将发布的 9 月 LTS 版本开始,Jenkins 最低需要 Java 11。相关链接:Jenkins requires Java 11 or newer

2.3.2:jenkins安装

  • 采用tomcat运行jenkins,为了解决jenkins用户权限的问题
#创建普通用户
[root@jenkins ~]# useradd deploy
#下载安装Tomcat
[root@jenkins ~]# tar -xf apache-tomcat-9.0.27.tar.gz -C /usr/local/
[root@jenkins ~]# cd /usr/local/
[root@jenkins local]# mv apache-tomcat-9.0.27 tomcat

#编辑systemd服务脚本
[root@jenkins ~]# vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=tomcat                  # 服务的描述
After=network.target                # 在网络服务启动后再启动该服务

[Service]
User=deploy                          # 指定运行该服务的用户
Group=deploy                         # 指定运行该服务的用户组
Type=forking                         # 以 fork 方式运行,启动脚本会在后台运行

ExecStart=/usr/local/tomcat/bin/startup.sh      # 启动服务时执行的命令
ExecStop=/usr/local/tomcat/bin/shutdown.sh      # 停止服务时执行的命令

PrivateTmp=true                      # 在独立的命名空间中运行服务,提高安全性

[Install]
WantedBy=multi-user.target           # 将该服务添加到 multi-user.target(即多用户模式下启动)
#删除webapps下默认的文件,将jenkins的war包放入webapps目录下,更改Tomcat默认访问路径
[root@jenkins ~]# mv jenkins.war /usr/local/tomcat/webapps/
[root@jenkins ~]# vim /usr/local/tomcat/conf/server.xml
<Context path="" docBase="jenkins" debug="0" reloadable="true" />
#修改Jenkins的默认工作主目录(配置文件,job等都会存储在该路径下)
[root@jenkins ~]# cd /usr/local/tomcat/bin/
[root@jenkins bin]# vim catalina.sh
export JENKINS_HOME="/opt/jenkins"
#更改tomcat目录的权限
[root@jenkins ~]# chown -R deploy:deploy /usr/local/tomcat
#创建Jenkins的工作目录
[root@jenkins ~]# mkdir /opt/jenkins/workspace
[root@jenkins ~]# chown -R deploy:deploy /opt/jenkins

#启动tomcat
[root@jenkins ~]# systemctl daemon-reload
[root@jenkins ~]# systemctl start tomcat
[root@jenkins ~]# systemctl enable tomcat
[root@jenkins ~]# lsof -i:8080

三、Jenkins 配置

3.1:访问页面

Tomcat 默认的 Web 端口是 8080;http://服务器的IP地址:8080

3.2:拷贝密码

请根据您所访问页面上的信息,获取Jenkins默认秘钥。以下图片是相关步骤的指引。

[root@jenkins ~]# cat /opt/code/workspace/secrets/initialAdminPassword
  • 安装推荐的插件即可

3.3:登入Jenkins

四、Jenkins Job

4.1:Jenkins Job介绍

  • 代表也给任务或者项目
  • 可配置与可执行
  • 执行后的记录称之为Build
  • 日志监控与记录
  • 所有文件集中保存

4.2:Freestyle Job与Pippeline Job区别

4.2.1: Freestyle Job(自由风格任务)

  • Freestyle Job是Jenkins最基本和最早期的任务类型。它提供了简单直观的用户界面,允许用户通过图形化界面来配置构建过程。
  • 用户可以根据需要选择构建环境、配置源代码管理工具、设置构建触发条件,并指定构建步骤和后续操作。
  • Freestyle Job适合于相对简单的构建流程和集成需求,对于不需要复杂逻辑的项目,使用Freestyle Job会更加方便。

4.2.2: Pippeline Job(流水线任务)

  • Pipeline Job引入了基于脚本的构建定义,使用Jenkinsfile文件来描述整个构建流程。
  • 它采用了Declarative PipelineScripted Pipeline两种语法,允许开发人员以代码的形式编写复杂的构建逻辑,包括条件判断、循环、并行处理等。
  • Pipeline Job提供了更高级的构建控制和可重用性,能够实现更复杂的持续交付流程,并且与版本控制系统集成紧密。
  • 它支持Pipeline插件提供的丰富功能,如模板化构建、参数化构建、可视化报告等。

最大区别:Freestyle Job适用于简单的构建需求,通过图形界面进行配置。而Pipeline Job则更适合复杂的构建过程和持续集成/交付流水线,使用脚本编写构建逻辑,并提供更高级的控制和可扩展性。根据项目的要求和团队的实际情况,选择适合的任务类型来管理Jenkins中的构建过程。

五、Jenkins 插件

我将在下面的演示中仅展示插件安装的步骤。确切需要安装哪些插件取决于您的作业(Job)的功能需求

  • 可在 Jenkins 官网下载对应的插件
在Jenkins页面上安装插件

六、Jnekins 视图

我们可以根据不同环境或项目的需求,创建相应的视图,以便更好地管理和区分它们

七、Jenkins自动更新脚本

这个脚本可以帮助你完成以下任务:

  1. 在线检测最新的Jenkins LTS版本。
  2. 停止现有的旧版本Jenkins,然后备份。
  3. 下载最新版本的Jenkins,并进行哈希校验。
  4. 完成校验后,替换并启动新版本的Jenkins。
wget https://raw.githubusercontent.com/dqzboy/ShellProject/main/Linux%E8%BD%AF%E4%BB%B6%E6%9C%8D%E5%8A%A1/UpJenkins.sh

bash UpJenkins.sh

本文作者:浅时光博客
原文链接:https://www.dqzboy.com/434.html
版权声明:知识共享署名-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议进行许可,转载时请以>超链接形式标明文章原始出处和作者信息
免责声明:本站内容仅供个人学习与研究,严禁用于商业或非法目的。请在下载后24小时内删除相应内容。继续浏览或下载即表明您接受上述条件,任何后果由用户自行承担。

24 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!

  1. MK广东·深圳2023-8-9 · 10:11

    大佬,根据你的部署jenkins,怎么修改访问端口呢,我改server.xml里的端口,通过systemcd服务启动,端口起不来,通过/usr/local/tomcal/bin/startup.sh 端口又可以启动,systemd服务怎么优化

    • 浅时光博客2023-8-9 · 11:34

      起不来的报错信息是什么?

      • MK广东·深圳2023-8-9 · 11:36

        tomcat服务能起来,是修改后的端口没启动

        • 浅时光博客2023-8-9 · 11:46

          日志里面肯定有报错的,看下日志

          • MK广东·深圳2023-8-9 · 12:36

            SEVERE[main]org.apache.catalina.core.StandardContext.listenerStart配置类[jenkins.JenkinsHttpSessionListener]的应用程序侦听器时出错,提示这个错误,改完端口启动

            • 浅时光博客2023-8-9 · 13:04

              Java版本是啥?安装JDK11

              • MK广东·深圳2023-8-9 · 13:39

                jdk是11,tomcat是10的版本

                • 浅时光博客2023-8-9 · 16:37

                  Tomcat使用 9版本,10版本有依赖不兼容

                  • MK广东·深圳2023-8-9 · 16:46

                    还是大佬牛逼,更换tomcat版本就ok了

  2. MK广东·深圳2023-8-8 · 20:36

    jenkins主要目录,里面的目录都没有,/etc/sysconfig/jenkins,这些,

  3. MK广东·深圳2023-3-1 · 11:12

    你回复我的邮件,能优化下不,你回复我一条消息,我一共收到四封邮件

  4. MK广东·深圳2023-3-1 · 10:08

    文章中,创建Jenkins工作目录,写错了吧,你写的是:mkdir /opt/code/workspace

  5. MK广东·深圳2023-3-1 · 9:25

    又来学习了

  6. 哈利路亚江苏·南京2021-7-16 · 16:34

    图片看不清

  7. 花粥未知2020-11-22 · 17:50

    给博主点赞,写的不错

  8. 111未知2020-11-20 · 14:48

    就是那种点击一点图片会放大,我看见别的网站有

    • 浅时光博客2020-11-20 · 14:50

      我这个目前不支持,后面抽时间我加个

  9. 111未知2020-11-20 · 14:43

    图片点击不能放大,看不清

    • 浅时光博客2020-11-20 · 14:44

      这个是wp自动压缩了,抽时间我重新上传下

  10. nicely未知2020-8-13 · 23:23

    不错不错