超详细将IDEA项目推送到gitee上,jenkins的安装与使用,并且使用jenkins拉取到gitee本地仓库上的项目
Jenkins概念
Jenkins是一款强大的自动化构建工具,广泛应用于软件开发和测试领域。它能够帮助团队在软件开发过程中实现自动化,从而提高生产效率和质量。下面我们将详细介绍Jenkins的用途。
1. 自动化构建
Jenkins能够自动从版本控制系统(如Git、SVN)中获取最新的代码,并根据预定义的构建脚本(如Maven、Gradle、Ant等)执行构建过程。这不仅减少了手动构建带来的错误和重复劳动,还确保了每次构建都基于最新的代码库。
2. 持续集成
持续集成(CI)是一种软件开发实践,它要求开发团队定期将代码合并到共享的主分支中,并自动运行构建和测试流程。Jenkins通过提供强大的插件系统和灵活的配置选项,使得实施持续集成变得简单而高效。每当有新的代码提交时,Jenkins都会自动触发构建和测试,从而快速发现和修复问题。
3. 自动化测试
Jenkins不仅限于构建过程,它还能集成各种测试工具(如JUnit、Selenium、JMeter等),自动执行单元测试、集成测试和性能测试等。这种自动化的测试流程确保了软件的质量,并帮助开发团队在问题影响到用户之前发现并修复它们。
4. 持续部署
持续部署(CD)是持续集成的延伸,它自动将通过所有测试的构建版本部署到生产环境或预生产环境。Jenkins通过与部署工具(如Docker、Kubernetes、Ansible等)的集成,支持自动化的部署流程,使得软件交付更加迅速和可靠。
5. 监控和报告
Jenkins提供了丰富的监控和报告功能,允许开发团队跟踪构建和测试的状态,以及查看构建历史和测试结果。这些功能帮助团队更好地理解项目的健康状况,并做出数据驱动的决策。
什么是敏捷开发
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开
发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试, 具备可视、
可集成和可运行使用 的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行
的小项目,并分别完成,在此过程中软件一直处于可使用状态。
什么是持续集成(CI)
因为开发部门同时维护多个版本,多个版本的发布,测试需要大量人力,所以要有一个专业
的持续集成工具来管理持续重复的工作。
// 1. 甲方提出要求
// 可行性分析
// 需求 -> 开发 -> 测试
// bug 禅道
// bug 等级 高
Jenkins和 Hudson
- Jenkins 是一个持续集成(CI)工具。它可以持续编译,运行你的代码;运行单元测试(UT)
或集成测试;将运行结果发送至邮件,或展示成报告。 - Jenkins 起源于 Hudson。Hudson 在商业软件的路上继续前行,而 Jenkins 则作为开源软
件,从 hudson 分支出来。 因此现在的 jenkins 和 hudson 非常类似,但是随着二者各自的发
展,已经有了一些不同。
部署方式对比
JavaEE 项目部署方式对比
手动部署
git ->checkout-> war -> 部署
自动化部署
"自动化"的具体体现:向版本库提交新的代码后,应用服务器上自动部署,用户或测试人员
使用的马上就是最新的应用程序。
搭建上述持续集成环境可以把整个构建、部署过程自动化,很大程度上减轻工作量。 对于程
序员的日常开发来说不会造成任何额外负担------自己把代码提交上去之后,服务器上运行的马
上就是最新版本------一切都发生在无形中。
下载jenkins
https://www.jenkins.io/download/
https://get.jenkins.io/war-stable/2.222.4/
下载好war包后准备环境
准备环境
jdk
安装jdk
将jdk压缩包放在服务器上
解压jdk
tar -zxvf tar包名
解压之后配置jdk的环境变量
进入/etc/profile文件中
注意路径要改为自己的
export JAVA_HOME=/opt/jdk/jdk-17.0.12
export PATH=$JAVA_HOME/bin:$PATH
配置完之后让环境生效
source /etc/profile
查看jdk版本
java -version
看到17说明配置成功
tomcat
也是下载好之后直接拖入到服务器上,然后解压
tar -zxvf tar包名
解压好之后
配置环境变量,进入etc/profile
export CATALINA_HOME=/opt/jdk/tomcat5
export PATH=$PATH:$CATALINA_HOME/bin
注意自己的tomcat路径
将我们下载好的jenkins.war包放在tomcat内部里
进入tomcat
进入webapps
将war包拖入里面
启动tomcat,进入tomcat的bin里面,启动startup.sh
访问本地ip+tomcat默认端口号8080+jenkins
http://192.168.227.99:8080/jenkins
可以看到我们成功的进去了
404
但是有时候访问路径是404,怎么进都进不去,这个时候就就可能是你的jdk版本或者tomcat的版本有问题,jdk最好是17,tomcat9或10也都可以,再就是看自己的环境变量配置错误没有,如果还是进不去可以下载一个依赖
yum -y fontconfig
还是进不去可以查看tomcat的日志
在这里可以找到报错原因
继续
这个时候进入它所指的文件夹去找这个文件
Cat /root/.jenkins/secrets/initialAdminPassword
将密码放到jenkins上并继续
左边是自动推荐下载,右边是我们自己下载的,所以我们选择自己下载
点击选择插件来安装,所有的勾都去掉,所有的插件全部不选
创建用户,密码,确认密码
访问的路径,注意是自己的ip
完毕
将项目上传到git上
先创建一个gitee账号
创建好账号后创建一个本地仓库
点击右上角加号
创建成功之后打开我们idea
第一种上传方式:
打开左上角
找到git
下载git文件:
无脑下一步安装,记得配置环境变量
下载好之后再打开左上角一步一步配置,然后点击那个test看是否成功
找到项目上的vcs
这里要配置成git
点击ok之后,右上角上面会出现箭头
点击项目右键
这里要填上我们的git上面的本地仓库路径
打开git进入我们刚才创建的仓库里面,点击克隆
复制路径
ok之后我们项目左边会出现commit
commit之后点击右上角的箭头
push上传
可能会上传失败,网卡的多试几次,上传后查看自己的本地仓库看里面有没有刚上传的文件
第二种上传方式:
下载插件
下载插件
不要忘了apply
插件下好并引用之后,可以看到多了一个Gitee,进去后新添加一个账户,就是在git上的账户,apply
点击上面的Git
创建仓库
打开git看是否会上传
可以看到上传成功
这两种上传方式都可以将项目上传到git上面
配置虚拟机
安装git
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
下载好的包放入文件夹中并解压好tar包
tar -zxvf 包名
进入git目录编译并安装
cd git-2.19.0
make prefix=/usr/java/git all
make prefix=/usr/java/git install
配置环境变量
Vim /etc/profle
export GIT_HOME=/usr/java/git
export PATH=$GIT_HOME/bin:$PATH
让环境变量生效 查看git版本
安装完毕
安装maven
也是将包放进文件夹并解压
配置环境变量
export MAVEN_HOME=/opt/jdk/apache-maven-3.8.8
export PATH=$MAVEN_HOME/bin:$PATH
让配置生效
source /etc/profile
进入文件
进入conf
进入settings.xml文件
修改配置
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
下载插件
mvn help:system
使用jenkins
安全配置
配置全局工具
配置git和Maven
jdk
配置maven
安装git的插件
配置git
找到git的路径
whereis git
/usr/java/git/bin/git
安装maven插件
创建任务
BUILD_ID=DONTKILLME
echo "部署的目录和项目名称"
sh /usr/java/test/build.sh
echo "success"
创建目录
mkdir test
创建脚本文件
touch build.sh
#! /bin/bash
echo "部署的目录和项目名称"
DIR="/usr/java/project"
projectName="demo"
echo "待部署的应用服务器"
server_ips="192.168.221.37"
#所有的参数列表
for server_ip in ${server_ips[@]}
do
echo "进行备份操作"
mkdir -p $DIR/backup/${projectName}
if [ -f "$DIR/${projectName}/${projectName}.jar" ];then
mv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jar
fi
echo "拷贝jar包到目标服务器的目录下"
cp ${WORKSPACE}/target/*.jar $DIR/${projectName}/${projectName}.jar
echo "目标服务器:$DIR/${projectName}/${projectName}.jar"
echo "连接进行发布操作"
#mv /usr/java/test/demo.jar $DIR/backup/${projectName}/${projectName}.jar
echo "开始关闭jar"
l=`ps -ef|grep demo.jar|grep -v grep|awk '{print $2}'`
for i in $l
do
kill -9 $i
done
sleep 5s
echo "启动jar"
nohup java -jar $DIR/${projectName}/${projectName}.jar --server.port=9999 > release_out.log 2>&1 &start_ok=false
done
完毕
启动任务
查看项目状态是否报错
完成
因为脚本里直接启动了项目,所以如果成功后,可以上浏览器输入项目的路径和端口号访问是否成功