Jenkins部署与应用
Jenkins
简介
Jenkins是一个开源的持续集成/持续交付(CI/CD)工具,旨在帮助开发团队通过自动化构建、测试和部署软件项目来提高产品质量和开发效率。
工作原理
Jenkins的工作原理主要基于事件驱动和插件架构。它通过监听代码仓库的变化或定期轮询触发构建任务,并根据事先定义的构建流程,从源代码获取最新的代码、编译构建应用程序、运行自动化测试、打包、部署和发布等一系列操作。Jenkins通过丰富的插件生态系统,可以与各种构建工具、测试工具、部署工具和版本控制系统进行集成,具有广泛的适用性和灵活性。
工作流程
Jenkins的常见工作流程包括:
触发器:触发构建任务的事件,如代码提交、定时触发等。
获取源代码:从版本控制系统中获取最新的代码。
编译构建:将源代码编译成可执行的应用程序或库。
测试:运行各种自动化测试(单元测试、集成测试、端到端测试等)以验证代码质量。
打包:将编译好的代码打包成可发布的软件包。
部署:将软件包部署到目标环境中。
发布:将部署完成的应用程序发布给用户或其他相关团队。
优点
Jenkins的优点包括:
灵活性:通过插件架构和丰富的插件生态系统,可以满足各种不同的需求和集成场景。
可扩展性:能够支持大规模的构建和部署,适应不断增长的项目和团队。
自动化:通过自动化构建、测试和部署等流程,减少了人工操作的工作量和错误率。
可视化界面:提供直观易用的图形界面,方便管理和监控构建任务和结果。
社区支持:作为开源项目,Jenkins拥有活跃的社区,能够提供丰富的文档和技术支持。
Jenkins部署
环境说明
系统版本 | ip |
---|---|
centos8 | 192.168.136.139 |
# 配置阿里云yum源
[root@localhost ~]# rm -rf /etc/yum.repos.d/*
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2495 100 2495 0 0 9450 0 --:--:-- --:--:-- --:--:-- 9450
[root@localhost ~]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@localhost ~]# yum clean all
0 files removed
[root@localhost ~]# yum makecache
CentOS-8.5.2111 - Base - mirrors.aliyun.com 2.1 MB/s | 4.6 MB 00:02
CentOS-8.5.2111 - Extras - mirrors.aliyun.com 54 kB/s | 10 kB 00:00
CentOS-8.5.2111 - AppStream - mirrors.aliyun.com 1.4 MB/s | 8.4 MB 00:05
Metadata cache created.
# 关闭防火墙和selinux
[root@localhost ~]# 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@localhost ~]# setenforce 0
[root@localhost ~]# sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 重启
[root@localhost ~]# reboot
部署Tomcat
# 安装Java环境
[root@localhost ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
# 查看安装版本
[root@localhost ~]# 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)
# 下载tomcat软件包
[root@localhost ~]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.79/bin/apache-tomcat-9.0.79.tar.gz
# 解压部署,解压到那个路径
[root@localhost ~]# tar xf apache-tomcat-9.0.79.tar.gz -C /usr/local
[root@localhost ~]# ls /usr/local/
apache-tomcat-9.0.79 bin etc games include lib lib64 libexec sbin share src
# 创建软链接
[root@localhost local]# ln -s apache-tomcat-9.0.79/ tomcat
[root@localhost local]# ll
.....省略
drwxr-xr-x. 2 root root 6 Jun 22 2021 sbin
drwxr-xr-x. 5 root root 49 Jul 27 09:35 share
drwxr-xr-x. 2 root root 6 Jun 22 2021 src
lrwxrwxrwx 1 root root 21 Oct 16 20:44 tomcat -> apache-tomcat-9.0.79/
# 启动tomcat服务
[root@localhost 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@localhost local]# ss -antl
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 100 *:8080 *:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
[root@localhost local]#
部署Jenkins
Jenkins官网https://www.jenkins.io/download/
# 安装Jenkins的版本Java17
[root@localhost ~]# yum -y install java-17-openjdk java-17-openjdk-devel
# 由于安装tomcat时安装的Java1.8,但是Jenkins需要Java17,所以切换一下Java版本
[root@localhost ~]# 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
# 下载Jenkins的.war包
[root@localhost ~]# wget https://get.jenkins.io/war-stable/2.414.2/jenkins.war
[root@localhost ~]# ls
anaconda-ks.cfg apache-tomcat-9.0.79.tar.gz jenkins.war
[root@localhost ~]# java -jar jenkins.war
......结果省略
# 把Jenkins包移到 /usr/local/tomcat/webapps/去
[root@localhost ~]# cp jenkins.war /usr/local/tomcat/webapps/
# 重启tomca服务,就会自动解压Jenkins.war
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh
[root@localhost ~]# cd /usr/local/tomcat/webapps/
[root@localhost webapps]# ls
docs examples host-manager jenkins jenkins.war manager ROOT
[root@localhost webapps]#
去页面访问并且配置
[root@localhost ~]# cat /root/.jenkins/secrets/initialAdminPassword
d30166c38e7f4d81a57555be87222fba
选择安装推荐的插件
插件一个账户
创建Jenkins项目
在主机上安装git命令和maven打包工具
[root@localhost ~]# yum -y install git
[root@localhost ~]# 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 """
cd /root/tomcat-java-demo/
mvn clean package
"""
}
}
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
"""
}
}
}
}
# 在虚拟机中查看是否被pull下来了
[root@localhost ~]# cd /usr/local/tomcat/webapps/
[root@localhost webapps]# ll
total 105288
drwxr-x--- 16 root root 4096 Oct 16 20:42 docs
drwxr-x--- 7 root root 99 Oct 16 20:42 examples
drwxr-x--- 6 root root 79 Oct 16 20:42 host-manager
drwxr-x--- 10 root root 4096 Oct 16 20:54 jenkins
-rw-r--r-- 1 root root 89532729 Oct 16 20:54 jenkins.war
drwxr-x--- 4 root root 37 Oct 17 06:50 ly-simple-tomcat-0.0.1-SNAPSHOT
-rw-r----- 1 root root 18265403 Oct 17 06:35 ly-simple-tomcat-0.0.1-SNAPSHOT.war
drwxr-x--- 6 root root 114 Oct 16 20:42 manager
drwxr-x--- 3 root root 4096 Oct 16 20:42 ROOT
[root@localhost webapps]#
访问这个项目
报错在下载和打包这块,可以去手动部署,看看问题出在哪里
手动部署
[root@localhost ~]# git clone 'https://gitee.com/forgotten/tomcat-java-demo.git'
Cloning into 'tomcat-java-demo'...
remote: Enumerating objects: 558, done.
remote: Total 558 (delta 0), reused 0 (delta 0), pack-reused 558
Receiving objects: 100% (558/558), 5.08 MiB | 1001.00 KiB/s, done.
Resolving deltas: 100% (217/217), done.
[root@localhost ~]# git clone 'https://gitee.com/forgotten/tomcat-java-demo.git'
Cloning into 'tomcat-java-demo'...
remote: Enumerating objects: 558, done.
remote: Total 558 (delta 0), reused 0 (delta 0), pack-reused 558
Receiving objects: 100% (558/558), 5.08 MiB | 1001.00 KiB/s, done.
Resolving deltas: 100% (217/217), done.
[root@localhost target]# pwd
/root/tomcat-java-demo/
#注意,打包一定要在这个目录里面
[root@localhost tomcat-java-demo]# mvn clean package
[root@localhost tomcat-java-demo]# cd target/
[root@localhost target]# ll
total 17840
drwxr-xr-x 5 root root 95 Oct 16 23:24 classes
drwxr-xr-x 3 root root 25 Oct 16 23:24 generated-sources
drwxr-xr-x 4 root root 37 Oct 16 23:24 ly-simple-tomcat-0.0.1-SNAPSHOT
-rw-r--r-- 1 root root 18265403 Oct 16 23:24 ly-simple-tomcat-0.0.1-SNAPSHOT.war
drwxr-xr-x 2 root root 28 Oct 16 23:24 maven-archiver
drwxr-xr-x 3 root root 35 Oct 16 23:24 maven-status