目录
1.什么是jenkins
2.为什么使用jenkins
3.安装jenkins
3.1.准备条件
3.1.1.安装jdk下载jdk,上传至linux并解压
3.1.2.配置环境变量
3.1.3.使配置环境变量生效
3.1.4.检测java环境信息
3.2.打开虚拟机
3.3.将把jenkins的war放入虚拟机中
3.4.运行jenkins
3.5.访问浏览器
3.6.查看密码
3.7.输入密码进入
3.8.安装成功之后
4.修改密码
4.1.点击用户列表
4.2. 点击admin
4.3.点击设置
4.4.修改密码
4.5.修改密码之后,重新登录
4.6.登录成功之后
5.jenkins集成jdk
5.1.安装jdk
5.1.1.查看有没有安装jdk
5.1.2.安装jdk
5.2. 点击控制面板
5.3.点击设置
5.4.点击全局配置
5.5.点击新增jdk
5.6.点击保存
6.集成git
6.1.在jenkins所在的服务器上安装git软件
6.2.查看是否安装成功git
6.3. 点击设置
6.4.点击全局配置
6.5.配置
6.6保存
6.7.测试jenkins会不会从gitee拉取代码
6.7.1.打开git
6.7.2.在git中新建一个仓库
6.7.3.修改一下文件的内容并提交
6.7.4.新建item
6.7.5.报错
6.7.6.添加
6.7.7.添加成功之后
6.7.8.build
6.7.9.build完成之后
6.7.10.点击控制台输出
7.Maven集成
7.1.将winds下的maven拉取到Linux上
7.2.解压maven
7.3.配置环境变量
7.4.使环境变量生效
7.5.查看安装情况
7.6.修改maven的镜像
7.6.1.进入maven里面
7.6.2.进入到conf里
7.6.3.进入到settings.xml
7.6.4.修改镜像
7.6.5.修改本地仓库的地址
7.7.登录到jenkins
7.8.点击设置和全局配置
7.9.配置maven
7.10.安装maven插件
7.10.1.点击设置和插件7.
7.10.2搜索maven插件,然后选中,直接安装
7.11.测试maven
7.11.1.在gitee上新建一个仓库
7.11.2.idea中创建一个maven工程
7.11.3.将maven项目上传到gitee上
7.11.4.Jenkins拉去项目
8.jenkins自动拉取gitee远程仓库的代码
8.1.jenkins中安装gitee插件
8.2.修改任务项目的设置
8.3.内网穿透
8.4.在Jenkins上点击保存, 在gitee上点击添加
8.5.测试
9.需要把jenkins打包好的项目复制到测试服务器
9.1.前提
9.1.1.克隆一下虚拟机,修改一下ip
9.1.2.链接,看一下javac的命令管用吗?
9.2.找到我们要复制的jar包
9.3.将我们jar包复制到另一台虚拟机上
9.4.测试一下有没有复制成功
9.5.在当前的虚拟机登录另一台虚拟机
9.6.退出登录
10.如何设置免密
10.1.在jenkins所在的服务器上输入如下命令
10.2.接下来需要将公钥导入到认证文件中
10.3.给对应文件授权
10.3.1.如果希望ssh公钥生效需满足至少下面两个条件
10.3.2.给对应文件授权
10.4.将当前虚拟机的公钥复制到另一台虚拟机上
10.4.1.在另一台虚拟机上创建一个文件放入公钥
10.4.2.在当前虚拟机上输入命令
10.4.3.登录另一台虚拟机
11.使用脚本在jenkins 完成jar的复制
11.1.测试
11.1.1.随便修改一下idea项目
11.1.2.上传的远程仓库
11.1.3.查看jenkins
12. 编写启动脚本
12.1.创建脚本
12.2.修改权限
12.3.执行
13.编写关闭脚本
13.1.创建关闭的脚本
13.2.修改权限
13.3.关闭
13.4.查看一下是否真的关闭
14.让jenkins自己启动和关闭
14.1.测试
14.1.1.修改idea里面的代码(省略)
14.1.2.提交到远程仓库(省略)
14.1.3.查看jenkins有没有打包编译
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
注意:jenkins本身没有编译打包的功能,集成maven完成编译和打包, jenkins本身不会拉取gitee远程仓库的代码,集成git从远程仓库拉取代码, git本身也不会运行jar,需要集成jdk来运行jar
配置/etc/profile的内容
############JDK
export JAVA_HOME=/usr/local/jdk1.8.0_161
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile
javac
nohup java -jar /usr/local/jenkins.war --httpPort=8777 --httpsPort=8778 > /usr/local/jenkins.log 2>&1 &
-- nohup:如果虚拟机休眠时不关闭jenkins
-- >: 启动时生成的日志放入
-- &: 后台运行
http:自己的ip地址:8777
使用tail/cat 命令查看启动日志,日志中会输出jenkins密码
自己运行,比较慢,稍等一会
cat /etc/profile
在jenkins所在的服务上安装jdk并配置环境变量。
【1】解压jdk软件
[2]vi /etc/profile
export JAVA_HOME=JDK的安装路径
export PATH=$PATH:$JAVA_HOME/bin
[3] source /etc/profile
yum install -y git
git --version
错误的原因,因为你的仓库是私有的,需要你的账号和密码
tar -zxvf 要解压的名称
vi /etc/profile
source /etc/profile
mvn -versio
cd maven3.8.6/
cd conf/
vi settings.xml
找到自己Windows下的maven的镜像,将Linux里面的镜像删除,将Windows下的maven镜像复制到Linux里
注意:下载失败要重新下载,直到安装maven
如果gitee上的maven项目内容发生改变,则会拉取并进行编译 打包了
(1).先将项目设置成本地项目
(2)上传到远程仓库 (步骤省略)
(1)新建任务
(2)点击一下
我们能可以看到成功了
测试后在Jenkins上,你会看见她自动打包了
在企业中jenkins所在的服务器和我们项目运行时的服务器应该不是同一台机器,jenkins编译打包好的软件在jenkins所在的服务器
修改IP在以前的笔记中
scp 文件名 root@远程ip:/远程的目录
去另一台虚拟机上去看一下有没有
ssh 另一台虚拟机的IP
远程登录其他服务器时,需要手动的输入密码,能否设置免密登录
exit
ssh-keygen -t rsa---敲回车
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
.ssh
目录的权限必须是700 r4 w2 x1
.ssh/authorized_keys
文件权限必须是600
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
mkdir ~/.ssh
scp -p ~/.ssh/id_rsa.pub root@另一台虚拟机的ip:路径
scp -p ~/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
ssh 另一台虚拟机的ip
#!/bin/bash
echo "部署的目录和项目名称"---输出的话
DIR="/data/app" ---把jar包放到那个目录下
projectName="my-boot" jar包工程名字echo "待部署的应用服务器,可多台用@分割"
server_ips="192.168.74.154" --准备部署到那个服务器的IP
for server_ip in ${server_ips[@]}
doecho "ssh连接进行备份操作"
ssh -Tq -oStrictHostKeyChecking=no root@${server_ip} <mkdir -p $DIR/backup/${projectName} --创建一个备份目录
mkdir -p $DIR/${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
EOFecho "拷贝jar包到目标服务器的tmp目录"
scp -q -oStrictHostKeyChecking=no ${WORKSPACE}/target/*.jar root@${server_ip}:/tmp/${projectName}.jar --远程复制echo "ssh远程连接进行发布操作"
ssh -q -oStrictHostKeyChecking=no root@${server_ip} <mv /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jar EOF
done
echo "success"
vi start.sh
#!/bin/bash
set -e #任何命令出错就退出
set -o pipefailAPP_ID=my-boot
APP_DIR="/data/app"nohup java -jar ${APP_DIR}/${APP_ID}/${APP_ID}.jar > release_out.log &
start_ok=false
if [[ $? = 0 ]];then
sleep 3
tail -n 10 release_out.log
sleep 5
tail -n 50 release_out.log
fi
aaa=`grep "Started" release_out.log | awk '{print $1}'`
if [[ -n "${aaa}" ]];then
echo "Application started ok"
exit 0
else
echo "Application started error"
exit 1
fi
chmod 777 start.sh
./start.sh
vi stop.sh
#!/bin/bash
APP_ID=my-boot
ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh
chmod 777 stop.s
./stop.sh
ps -ef|grep my-boot.jar
两个脚本的运行还需要手动运行
sh $DIR/${projectName}/stop.sh
sh $DIR/${projectName}/start.sh