nohup java -jar /usr/local/jenkins.war --httpPort=8777 --httpsPort=8778 > /usr/local/jenkins.log 2>&1 &
nohup java -jar /usr/local/jenkins.war --httpPort=8777 --httpsPort=8778 > /usr/local/jenkins.log 2>&1 &
nohup:如果虚拟机休眠时不关闭jenkins
>: 启动时生成的日志放入
&: 后台运行
访问后首先进入此界面,等待他准备完成。
输入密码后如果出现一直停在加载页面,就参考此文章,更换镜像源。
创建用户,如果选择使用admin继续,那下次登录密码还是日志里的
【1】解压jdk软件
[2]vi /etc/profile
export JAVA_HOME=JDK的安装路径
export PATH=$PATH:$JAVA_HOME/bin
[3] source /etc/profile
在jenkins所在的服务器上安装git软件
yum install -y git查看是否安装git
git --version
位置和jdk一致
我实在虚拟机上安装的,所以先把安装包传入虚拟机
解压
tar -zxvf apache-maven-3.8.6-bin.tar.gz
解压完毕
重命名(此步骤可以不执行)
配置环境变量
刷新配置文件
测试mvn
找到解压文件下的conf目录下的settings.xml文件
配置本地仓库
配置远程下载路径
保存退出
配置jenkins上的maven
安装maven插件
安装getee,用来远程拉取,这里已经装过了 ,所以搜不到
测试
手动拉取测试
这里下拉时出错了原因
pom包里这一句他不识别,删掉
还是报错,发现
再次拉取
这里用的是getee仓库,需要下载getee仓库依赖,前面已经下载过了。
修改项目配置
选中此框
到穿透软件配置
到getee配置
成功
我们上传代码到getee后jenkins会自动拉取
在jenkins所在的机器上生成公钥
命令:
ssh-keygen -t rsa
将公钥导入到认证文件中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
ssh公钥生效至少满足两个条件
.ssh目录权限必须是700
.ssh/authorized_keys文件权限必须是600
给对应的文件授权
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
把公钥复制到另一台机器上
scp -p ~/.ssh/id_rsa.pub root@192.168.92.242:/root/.ssh/authorized_keys
测试:
ssh 地址
配置jenkins脚本
- #!/bin/bash
-
- echo "部署的目录和项目名称"
- DIR="/data/app"
- projectName="my-boot"
-
- echo "待部署的应用服务器,可多台"
- server_ips="192.168.92.242"
- for server_ip in ${server_ips[@]}
- do
-
- echo "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
- EOF
-
- echo "拷贝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 pipefail
-
- APP_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
修改权限
创建关闭脚本
vi stop.sh
- #!/bin/bash
-
- APP_ID=my-boot
- ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh
两个脚本的运行还需要手动运行
配置脚本自动执行
在jenkins中配置
sh $DIR/${projectName}/stop.sh
sh $DIR/${projectName}/start.sh
先关闭,在开启
上传到gitee上测试代码,他自动拉取,自动部署。