建网站需要多少钱和什么条件,微网站开发素材,删除wordpress媒体库多余,邢台网络公司做网站背景#xff1a;
实现设想#xff1a; 要创建自动化发布#xff0c;需要准备一台测试服务器提前安装好java运行所需的环境#xff0c;JDK版本最好和Windows开发机器上的版本一致#xff0c;在Jenkins上配置将构建好的jar上传到测试服务器上#xff0c;测试服务器自动启动…背景
实现设想 要创建自动化发布需要准备一台测试服务器提前安装好java运行所需的环境JDK版本最好和Windows开发机器上的版本一致在Jenkins上配置将构建好的jar上传到测试服务器上测试服务器自动启动构建好的jar这些步骤只需要在Jenkins完成相关的配置即可。 一、环境准备
1、在测试机器上安装java运行环境
#解压
tar -zxvf OpenJDK17U-jdk_x64_linux_hotspot_17.0.8.1_1.tar.gz#配置环境变量
vim /etc/bashrc
#在文件末尾追加
JAVA_HOME/opt/devops/java
export PATH${JAVA_HOME}/bin:${PATH}2、创建测试用户
#创建用户用于代码测试指定家目录为/opt/devops/test
useradd -m test -d /opt/devops/test#设置test用户密码等会Jenkins的SSH认证需要用到
passwd test 二、将IDEA代码提交到GitLab并在Jenkins上创建maven项目
步骤一将IDEA上的代码提交到GitLab上
参考
CI/CD—IDEA上提交代码到GitLab-CSDN博客 步骤二配置Maven连接GitLab并构建jar
参考:
CI/CD—Jenkins配置MavenGitLab自动构建jar包-CSDN博客 二、Jenkins上进行操作
1、在Jenkins上安装Publish Over SSH插件用于SSH认证 选择如下图示点击安装即可 2、 配置Publish Over SSH插件连接测试机器
2.1、选择系统管理 -- 系统配置 2.2、填写连接测试机器的信息 3、Post Steps设置
3.1、点击之前的构建的项目 3.2、选择Send files or execute commands over SSH选项 3.3、配置将Jenkins上生成的jar上传到测试服务器上的相关选项 如下正则匹配匹配Jenkins构建生成家目录下target目录下的jar包 4、执行构建测试查看Jenkins下发的原理方便后续的配置 4.1、执行构建 4.2、观察传到测试服务器上jar包的目录结构 可以看到数据传上去之后还带有HelloWorld/target前缀我们想要的结构就是将jar直接传到测试服务器家目录下不带有HelloWorld/target目录如需要实现按照如下操作进行。 5、实现指定家目录、去掉Jenkins前缀、自动启动jar包的步骤
5.1、在Remove prefix中填写需要去掉的目录前缀
5.2、在Remote directory中填写Source files中配置的内容传输到家目录的具体哪个目录下
在Remote directory中填写java表示将**/target/*.jar包传到/opt/devops/test/java目录下 6、Exec command配置测试服务器上执行的命令
#启动jar因为jar包的版本会变所以使用通配符进行匹配java -jar /opt/devops/test/java/*.jar /opt/devops/test/java/logs/java.log 7、测试服务器上查看Jenkins自动化发布的结果
7.1、查看前缀是否已经去掉 7.2、查看jar是否传送到/opt/devops/test/java目录下 7.3、查看命令行是否已经执行 7.4、对前端内容进行访问测试
在浏览器上输入http://192.168.72.132:8989/hello对前端进行验证 三、Jenkins调用测试服务器上的脚本执行复杂的任务
背景 对jar进行构建前测试机器上可能还运行着之前程序的进程或者有一些需要其他交互的场景所以在进行构建之前应该要先将这些运行的进程等运行处理再进行构建部署操作这样就确保了测试环境的稳定在进行构建时也减少了因为环境问题导致自动发布失败等问题。 1、测试服务器上编写java服务启动脚本
#!/bin/bash
TIME$(date %Y-%m-%d %H:%M:%S)
JAVA_PATH/opt/devops/test/java
JAVA_LOG${JAVA_PATH}/logs/java.logJavaStart ()
{echo Java Starting:${TIME}${JAVA_LOG}PID_NUM$(ps -ef|grep ${JAVA_PATH}/*.jar|grep java|grep -v grep|awk {print $2}|wc -l)if [ ${PID_NUM} -gt 0 ];thenPID$(ps -ef|grep ${JAVA_PATH}/*.jar|grep java|grep -v grep|awk {print $2})echo [WARING] 已经存在JAVA进程$PID退出本次操作!!echo
[WARING] 已经存在JAVA进程:$PID退出本次操作!!${JAVA_LOG}exitelsejava -jar ${JAVA_PATH}/*.jar ${JAVA_LOG} 2${JAVA_LOG} sleep 3PID_NUM$(ps -ef|grep ${JAVA_PATH}/*.jar|grep java|grep -v grep|awk {print $2})if [ ${PID_NUM} -eq 0 ];thenecho [ERROR] JAVA Fail To Start!!!echo
[ERROR] JAVA Fail To Start!!!${JAVA_LOG}elsePID$(ps -ef|grep ${JAVA_PATH}/*.jar|grep java|grep -v grep|awk {print $2})echo [INFO] JAVA-PID:${PID} Successfully Runing!!!echo [INFO] JAVA-PID:${PID} Successfully Runing!!! ${JAVA_LOG}fifi
}
JavaStart 情况一程序已经运行执行此脚本会退出不再执启动命令并将输出结果打印到日志中 情况二java启动命令已经执行但是服务进程不存在启动失败 情况三Java服务正常启动 2、测试服务器上编写java服务停止脚本
#!/bin/bash
TIME$(date %Y-%m-%d %H:%M:%S)
JAVA_PATH/opt/devops/test/java
JAVA_LOG${JAVA_PATH}/logs/java.logMain ()
{PID_NUM$(ps -ef|grep ${JAVA_PATH}/*.jar|grep java|grep -v grep|wc -l)if [ ${PID_NUM} -gt 0 ];thenPID_NUM$(ps -ef|grep ${JAVA_PATH}/*.jar|grep java|grep -v grep|awk {print $2})kill -9 ${PID_NUM}echo [INFO] JAVA-PID:${PID_NUM} Java Has Been Stopped!!!if [ $? -eq 0 ];thenecho
Java Has Been Stopped:${TIME}${JAVA_LOG}fifi
}
Main 3、在Pre Steps中添加服务停止脚本 4、在Post Steps里也添加执行启动脚本的命令 5、测试结果 自动发布连接超时解决方法
Publish over SSH超时机制
连接超时可能是因为脚本或者文件在传送 过程中运行超时