首页 > 其他分享 >学习-18

学习-18

时间:2023-04-27 21:34:18浏览次数:35  
标签:18 APP jar 学习 ssh jenkins 服务器 root

1.jenkins自动拉取git仓库的代码

(1)安装gitee插件到jenkins

image

(2)修改任务项

image

gitee默认不允许内网触发。----必须要配置内网穿透

image

修改gitee远程仓库

image

image

测试:

修改idea中的代码并提交到gitee上,会自动触发jenkins---拉取--编译---打包

2. 完成自动化部署

思考: 我们的项目和jenkins是不是都在一台服务器上。 因为jenkins它所在的服务器非常耗费资源,因为jenkins本身要集成很多软件。如果这时项目也部署到当作jenkins所在的服务器,势必会导致项目在后期运行时由于资源不够,而导致无法运行。 所以我们的项目需要单独再一个服务器运行。

思考: jenkins打包好的项目jar在自己所在的服务器,而项目运行需要在其他服务器。需要把jenkins上打包好的jar复制到其他服务器。cp只能在本机进行复制。 scp 远程复制。

scp springboot-03-0.0.1-SNAPSHOT.jar [email protected]:/

scp:远程复制的命令
demo111: 被复制的文件
root@远程的ip:/远程的目录

image

我们再远程复制时需要输入另一台服务器129的密码. 由于后期需要jenkins软件帮你完成远程的复制功能。所以我们需要设置129这台服务免密操作。

2.2 设置免密操作

(1)再129生成密钥-

ssh-keygen -t rsa --一直回车

image

(2)接下来需要将公钥导入到认证文件中

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

(3)如果希望ssh公钥生效需满足至少下面两个条件:

  • .ssh目录的权限必须是700 r4 w2 x1
  • .ssh/authorized_keys文件权限必须是600

给对应文件授权

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

authorized_keys文件拷贝到另一台应用服务器的root用户.ssh目录下

# 在应用服务器(192.168.100.129)上用root用户创建/root/.ssh文件夹  mkdir -p /root/.ssh

# 在jenkins服务器(192.168.100.128)上将pub公钥文件拷贝到应用服务器的.ssh目录下

scp -p ~/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys

测试:

从128复制文件到129发现无需输入密码。

2.3 如何自动把jenkins服务器的jar复制到应用服务器上。

#!/bin/bash

echo "部署的目录和项目名称"
DIR="/data/app"
projectName="my-boot"

echo "待部署的应用服务器,可多台"
server_ips="192.168.100.129"
for server_ip in ${server_ips[@]}
do

echo "ssh连接进行备份操作"
ssh -Tq -oStrictHostKeyChecking=no root@${server_ip} <<EOF
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} <<EOF
mv /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jar

EOF

done

echo "success"

image

把上面的shell脚本粘贴到下面

image

129启动jar项目

创建一个启动脚本

(1)编写项目的启动脚本

touch start.sh
vi start.sh 
把下面的内容放入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

image

关闭脚本

touch stop.sh
vi stop.sh
把下面的内容放入stop.sh中

#!/bin/bash

APP_ID=my-boot
ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh

修改权限.

修改jenkins的权限

image

jenkins完成自动化拉取---编译---打包----部署----

标签:18,APP,jar,学习,ssh,jenkins,服务器,root
From: https://www.cnblogs.com/av404/p/17360271.html

相关文章

  • 【题解】P3185 [HNOI2007]分裂游戏
    P3185[HNOI2007]分裂游戏题目描述聪聪和睿睿最近迷上了一款叫做分裂的游戏。该游戏的规则是:共有\(n\)个瓶子,标号为\(0,1,\ldots,n-1\),第\(i\)个瓶子中装有\(p_i\)颗巧克力豆,两个人轮流取豆子,每一轮每人选择\(3\)个瓶子,标号为\(i,j,k\),并要保证\(i\ltj,j......
  • 学习-17
    1.什么是Jenkins?Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行(持续集成)2.为什么要使用jenkins3.如何安装jenkins3.1下载jenkins的安装包https://get.jenkins.io/war-stable/2......
  • c++打卡练习(18)
    猜牌术魔术师利用一副牌中的13张黑桃,预先将它们排好后迭在一起,并使牌面朝下。然后他对观众说:我不看牌,只要数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们就看,魔术师将最上面的那张牌数为1,把它翻过来正好是黑桃A,他将黑桃A放在桌子上,然后按顺序从上到下数手中的余牌,第二次......
  • 学习Linux,你提上日程了吗?
    近些年来,Linux系统也是越来越受欢迎了,如果你说你没有听说过Linux系统,那就有些low了。Windows大家应该都是知道的,其实Linux也是和windows类似的一种操作系统,只是和windows系统有不同之处,它们各自有自己的特点和优缺点。Linux比较亮的点之一是它是免费的,不需要花费钱去获取,这点还是......
  • 【题解】P4363 [九省联考 2018] 一双木棋 chess
    原题链接题目描述菲菲和牛牛在一块\(n\)行\(m\)列的棋盘上下棋,菲菲执黑棋先手,牛牛执白棋后手。棋局开始时,棋盘上没有任何棋子,两人轮流在格子上落子,直到填满棋盘时结束。落子的规则是:一个格子可以落子当且仅当这个格子内没有棋子且这个格子的左侧及上方的所有格子内都有棋......
  • 【汇编学习】指令对标志寄存器的影响总结
    转载自百度网盘指令类型助记符(带*为特权指令)对标志寄存器的影响备注说明举例ZFCFPFSFOFAFDFIFTF数据传送类数据传送MOV不影响标志位 MoveMOVr/m32,imm32MOV* Moveto/fromControlReg......
  • CDQ分治学习笔记
    CDQ分治学习笔记目录CDQ分治学习笔记前言CDQ分治思想例题1、翻转对分析codeP3810三维偏序(陌上花开)输入格式输出格式样例#1样例输入#1样例输出#1提示分析code前言之前在gdkoi讲解是有人用\(CDQ\)分治A了day1T3。好像分治FFT要用到,而且其他人都学过了,所以蒟蒻再次恶补一手......
  • 0/1分数规划学习笔记
    #0/1分数规划学习笔记——bysunzz3183------------##介绍$0/1$分数规划是指,给定整数$a_1,a_2,\cdots,a_n,b_1,b_2,\cdots,b_n$,求一组解$x_i,x_i\in\left\{0,1\right\}$,使下面的式子最大化:$$\frac{\sum_{i=1}^{n}a_i\timesx_i}{\sum_{i=1}^{n}b_i\timesx_i......
  • qt知识学习
    今天我系统了解了一些qt知识:Qt是一个跨平台的C++图形用户界面应用程序开发框架,具有易于使用、功能强大、高效稳定等特点。信号与槽:Qt中的信号和槽机制是实现程序响应事件的关键技术,可以将GUI设计和逻辑分离开来。Qt对象模型:Qt使用了一种特殊的C++对象模型,这种模型......
  • Python学习笔记
    第二章变量和简单数据类型2.1字符串2.1.1使用方法修改字符串的大小写str.title():以首字母大写显示每个单词str.upper():字符串全部改成大写str.lower():字符串全部改成小写2.1.2删除空白str.rstrip():删除字符串末尾的空白str.lstrip():删除字符串开头的空白str.strip():......