Jenkins
简介
Jenkins是一个开源的持续集成/持续交付(CI/CD)工具,旨在帮助开发团队通过自动化构建、测试和部署软件项目来提高产品质量和开发效率。
工作原理
Jenkins的工作原理主要基于事件驱动和插件架构。它通过监听代码仓库的变化或定期轮询触发构建任务,并根据事先定义的构建流程,从源代码获取最新的代码、编译构建应用程序、运行自动化测试、打包、部署和发布等一系列操作。Jenkins通过丰富的插件生态系统,可以与各种构建工具、测试工具、部署工具和版本控制系统进行集成,具有广泛的适用性和灵活性。
工作流程
Jenkins的常见工作流程包括:
- 触发器:触发构建任务的事件,如代码提交、定时触发等。
- 获取源代码:从版本控制系统中获取最新的代码。
- 编译构建:将源代码编译成可执行的应用程序或库。
- 测试:运行各种自动化测试(单元测试、集成测试、端到端测试等)以验证代码质量。
- 打包:将编译好的代码打包成可发布的软件包。
- 部署:将软件包部署到目标环境中。
- 发布:将部署完成的应用程序发布给用户或其他相关团队。
优缺点
Jenkins的优点包括:
- 灵活性:通过插件架构和丰富的插件生态系统,可以满足各种不同的需求和集成场景。
- 可扩展性:能够支持大规模的构建和部署,适应不断增长的项目和团队。
- 自动化:通过自动化构建、测试和部署等流程,减少了人工操作的工作量和错误率。
- 可视化界面:提供直观易用的图形界面,方便管理和监控构建任务和结果。
- 社区支持:作为开源项目,Jenkins拥有活跃的社区,能够提供丰富的文档和技术支持。
Jenkins的缺点包括:
- 学习成本较高:初学者需要花一些时间学习和掌握Jenkins的概念和工作原理。
- 配置复杂:复杂的配置过程和设置,可能需要一些技术背景和经验。
- 界面不够现代化:相对于一些新兴的CI/CD工具,Jenkins的用户界面可能显得相对老旧。
- 资源消耗较大:大规模的构建和部署可能需要较多的硬件资源和时间。
总体而言,Jenkins是一个强大而灵活的CI/CD工具,广泛应用于软件开发团队中,帮助提高开发效率和产品质量。
Jenkins部署
说明
Jenkins要部署在Tomcat上
在企业中,正确且合理的做法是Jenkins和项目要分开部署
tomcat多实例部署请阅读Tomcat主页配置&Tomcat多实例部署
环境
操作系统 | Tomcat版本 | Jenkins版本 |
---|---|---|
centos-8 | tomcat-9.0.79 | Jenkins 2.414.2 |
前期准备
//配置yum源,推荐使用阿里云源
[root@wanf ~]# rm -rf /etc/yum.repos.d/*
[root@wanf ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
[root@wanf ~]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@wanf ~]# yum clean all
18 files removed
[root@wanf ~]# yum makecache
//永久关闭防火墙和selinux
[root@wanf ~]# systemctl disable --now firewalld.service
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@wanf ~]# setenforce 0
[root@wanf ~]# sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
//重启主机
[root@wanf ~]# reboot
部署Tomcat
//安装Java环境
[root@wanf ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
[root@wanf ~]# java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
[root@wanf ~]#
//下载tomcat软件包
[root@wanf ~]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.79/bin/apache-tomcat-9.0.79.tar.gz
[root@wanf ~]# ls
anaconda-ks.cfg apache-tomcat-9.0.79.tar.gz
//解压部署,解压到哪个目录,该目录就是安装目录
[root@wanf ~]# tar -xf apache-tomcat-9.0.79.tar.gz -C /usr/local/
[root@wanf ~]# cd /usr/local/
[root@wanf local]# ls
apache-tomcat-9.0.79 etc include lib64 sbin src
bin games lib libexec share
//软链接
[root@wanf local]# ln -s apache-tomcat-9.0.79/ tomcat
[root@wanf local]# ls
apache-tomcat-9.0.79 etc include lib64 sbin src
bin games lib libexec share tomcat
[root@wanf local]#
//启动tomcat服务
[root@wanf local]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@wanf local]#
//8005和8080端口已经起来了
[root@wanf local]# ss -anlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 80 *:3306 *:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 511 *:80 *:*
LISTEN 0 128 [::]:22 [::]:*
[root@wanf local]#
部署Jenkins
Jenkins官网https://www.jenkins.io/download/
//安装Jenkins所需要的Java17
[root@wanf ~]# yum -y install java-17-openjdk java-17-openjdk-devel
//由于安装tomcat时安装的Java1.8,但是Jenkins需要Java17,所以切换一下Java版本
[root@wanf ~]# alternatives --config java
There are 2 programs which provide 'java'.
Selection Command
-----------------------------------------------
*+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/jre/bin/java)
2 java-17-openjdk.x86_64 (/usr/lib/jvm/java-17-openjdk-17.0.1.0.12-2.el8_5.x86_64/bin/java)
Enter to keep the current selection[+], or type selection number: 2 //选择2
[root@wanf ~]#
//下载Jenkins的.war包
[root@wanf ~]# yum -y install wget
[root@wanf ~]# wget https://get.jenkins.io/war-stable/2.414.2/jenkins.war
[root@wanf ~]# ls
anaconda-ks.cfg apache-tomcat-9.0.79.tar.gz jenkins.war
[root@wanf ~]# java -jar jenkins.war
//把Jenkins包cp到 /usr/local/tomcat/webapps/去
[root@wanf ~]# cp jenkins.war /usr/local/tomcat/webapps/
//重启tomca服务,就会自动解压Jenkins.war
[root@wanf ~]#/usr/local/tomcat/bin/shutdown.sh
[root@wanf ~]#/usr/local/tomcat/bin/startup.sh
[root@wanf ~]# cd /usr/local/tomcat/webapps/
[root@wanf webapps]# ls
docs examples host-manager jenkins jenkins.war manager ROOT
[root@wanf webapps]#
访问Jenkins页面
IP地址后接:8080/jenkins
[root@wanf ~]# cat /root/.jenkins/secrets/initialAdminPassword
1defbc8f72f6415087002bbfa705afb9 //这个就是密码
输入密码,点击继续,稍等片刻
选择安装推荐的插件
创建一个账户
创建Jenkins项目
在主机上安装git命令和maven打包工具
[root@wanf ~]# yum -y install git
[root@wanf ~]# yum -y install maven
重新编辑流水线脚本
下划
保存并应用
//流水线脚本如下
pipeline {
agent any
stages {
stage("pull code"){
steps {
git 'https://gitee.com/forgotten/tomcat-java-demo.git'
}
}
stage("make pkg"){
steps {
sh """
mvn clean package -Dmaven.test.skip=true
"""
}
}
stage("publish"){
steps {
sh """
cp /root/tomcat-java-demo/target/ly-simple-tomcat-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/
/usr/local/tomcat/bin/catalina.sh stop && /usr/local/tomcat/bin/catalina.sh start
"""
}
}
}
}
//查看刚刚构建的项目
[root@wanf ~]# cd /usr/local/tomcat/webapps/
[root@wanf webapps]# ls
docs ly-simple-tomcat-0.0.1-SNAPSHOT
examples ly-simple-tomcat-0.0.1-SNAPSHOT.war
host-manager manager
jenkins ROOT
jenkins.war
[root@wanf webapps]#
访问这个项目
可以成功访问