简介
Jenkins是一款开源的基于Java的持续集成工具。本文通过实现git push一键部署springboot项目的例子,带领大家初窥Jenkins。
三个概念
- 持续集成(Continuous integration),简称CI.在公司中,开发人员每天上班克隆一个自己的分支,下班前将分支进行合并,但是随着开发人员越来越多,代码也越来越多,每天下班之前要花很长时间进行人工合并代码,为了解决这样的情况,将合并的周期缩短,以前每天合并,改为每小时或者没半小时进行合并,随时随地的将代码进行合并,这种方法叫做持续集成
- 持续交付(Continuous delivery),简称CD.当开发上传自己的代码到gitlab,gitlab发消息通知jenkins,随后jenkins从仓库拉取代码,最后全自动部署到测试服务器进行相关测试,并将测试结果通知运维和开发,这种方法叫做持续交付
- 持续部署(Continuous deployment),简称CD.持续部署是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境,持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产进阶
部署jdk
- yum install java-1.8.0-openjdk* -y
- which java
//查询到的是java的执行路径,不是安装路径
- ls -lrt /usr/bin/java
- ls -lrt /etc/alternatives/java
//安装路径(/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64)
部署maven
- mkdir maven
- cd maven/
- wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
- tar -zxvf apache-maven-3.5.4-bin.tar.gz
- vim /etc/profile
- M2_HOME=/home/maven/apache-maven-3.5.4
- export PATH=${M2_HOME}/bin:${PATH}
- source /etc/profile
部署git
- yum install git -y
Jenkins
- cd /home
- mkdir jenkins
- cd jenkins/
- wget http://mirrors.jenkins.io/war/latest/jenkins.war
//读者也可以下载了传上去
- nohup java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war >log.out &
//在启动Jenkins的时候直接通过Java选项来关闭Jenkins杀掉所有衍生进程的这个功能,&为后台运行,不可省略
cat /root/.jenkins/secrets/initialAdminPassword
//粘贴进去
点击系统管理 ==>> 全局工具配置 ==>> JDK
==>> git
==>> 保存 回到主界面 ==>> 新建任务
==>> 配置构建的shell
source /etc/profile
pid=`ps -ef | grep java |awk '{print $10 $2} ' `
for path in ${pid[@]}
do
if [[ $path =~ "jenkins_demo-0.0.1-SNAPSHOT.jar" ]]
then
kill -9 ${path#*jenkins_demo-0.0.1-SNAPSHOT.jar}
fi
done
cd /root/.jenkins/workspace/jenkins_demo
mvn clean package
cd target/
nohup java -jar jenkins_demo-0.0.1-SNAPSHOT.jar --server.port=8018 >log.out &
shell脚本可以选择在linux里写好,例如写一个test.sh,chmod授权,放在/home下,这里直接写sh /home/test.sh,如果是tomcat+ssm那种,就把war用mv命令移到tomcat下,直接sh startup.sh,用shell脚本有极大的灵活性。
快速搭建springboot
配置Webhooks
Jenkins==>>系统管理 ==>> 系统设置
github
构建
git push一下,触发构建
总结
本文提供了一个快速入门的例子,后续会逐步更新。文章出现谬误之处,希望大家指出,互相交流。