Jenkins安装、配置、自动化构建前(nodejs)后端(maven)项目

文章目录

      • 0、Jenkins卸载安装
      • 1、Jenkins配置
      • 2、后台启动脚本startup.sh
      • 3、后台关闭脚本stop.sh
      • 4、实时数据启动脚本startup.sh
      • 5、实时数据关闭脚本stop.sh
      • 6、jenkins制定完任务后,点击立即构建,控制台报错(...无法生成父级目录)
      • 7、Jenkins执行shell脚本权限不够
      • 8、构建好的jar包位置(可配置:vim /etc/sysconfig/jenkins)
      • 9、target-display-front配置执行脚本
      • 10、maven项目:Build -> Goals and options
      • 11、target-display-server配置执行脚本
      • 12、send-socket配置执行脚本

0、Jenkins卸载安装

  • 【Jenkins卸载】

    # rpm卸载rpm -e jenkins
    # 检查是否卸载成功rpm -ql jenkins
    # 彻底删除残留文件find / -iname jenkins | xargs -n 1000 rm -rf
    
  • 【jenkins安装(rpm):(先看7)】

    1、下载rpm地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/?C=M&O=Ajenkins-2.401.3-1.1.noarch.rpm
    2、cd /usr/local/jenkins 并输入rz命令上传rpm文件
    3、安装:rpm -ivh jenkins-........noarch.rpm   【查看安装是否成功:rpm -ql jenkins】
    4、修改配置:vim /etc/sysconfig/jenkinsJENKINS_PORT="8777"
    5、配置jenkins的java路径:whereis javavim /etc/init.d/jenkins下拉到candidates字段,粘贴java的安装路径,:wq保存退出刷新配置:systemctl daemon-reload
    6、启动:systemctl start jenkins【报错了】:systemctl status jenkins.service  查看错误解决:不使用systemctl的方式操作Jenkins, 直接用Jenkins自带的服务启动 (使用 systemctl 最终也是执行的这个命令)切换到 Jenkins 脚本目录 cd /etc/init.d, 执行以下命令# 启动./jenkins start# 停止./jenkins stop# 状态./jenkins status【又报错了】-Jenkins版本过高了,不支持java 8Starting Jenkins Running with Java 8 from /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64/jre, which is older 	                         than the minimum required version (Java 11).Supported Java versions are: [11, 17]See https://jenkins.io/redirect/java-support/ for more information.7、尝试下载老版本Jenkins:https://jenkins.io/redirect/java-support/“从 628 日发布的 Jenkins 2.357 和即将发布的 9 月 LTS 版本开始,Jenkins 最低需要 Java 11”下载2.357以下的Jenkins版本:jenkins-2.346.3-1.1.noarch.rpm重复上面五个步骤8、无法启动:jenkins通过systemctl start jenkins.service启动服务,端口不是配置文件里自定义的端口vim /lib/systemd/system/jenkins.service# 修改端口号Environment="JENKINS_PORT=8777"
    9、启动成功
    

1、Jenkins配置

  • linux服务器需要配置maven环境、nodejs环境、npm环境,下载对应的包并安装

  • Jenkins安装插件:manage jenkins --> plugins

    搜索maven、nodejs

  • 全局工具配置:manage Jenkins --> Global Tool Configuration

    配置jdk:/usr/local/jdk1.8.0_181

    配置maven:/usr/local/soft/apache-maven-3.5.4

2、后台启动脚本startup.sh

#!/bin/bash
#定义启动的jar包或者war包程序
application_name=targetdisplay-admin.jar
#定义外部配置文件,若不使用外部配置文件则将nohup开头的两行命令注释互换,即打开下方被注释的nohup启动命令并注释当前nohup启动命令
#config_path=application.yml
#定义日志文件
DIR="/usr/local/soft/target_display_server"
application_port=18080
log_name=log.txt
echo Starting application ${application_name}... 
#nohup java -jar ${application_name} -Dspring.config.location=${config_path} > ${log_name} 2>&1 &
nohup java -jar ${DIR}/${application_name} --server.port=${application_port} > ${DIR}/${log_name} 2>&1 &
#nohup java -jar ${DIR}/${application_name} --server.port=${application_port} > /dev/null 2>&1 &
#tail -f ${DIR}/${log_name}
# (hack) sleep 1 minute,让项目跑起来 
# sleep 20

3、后台关闭脚本stop.sh

#!/bin/bash
#定义关闭的jar包或者war包程序
application_name=targetdisplay-admin.jar
PID=$(ps -ef | grep /usr/local/soft/target_display_server/${application_name} | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
thenecho ${application_name} is already stopped
elseecho ${application_name} has killed,pid is $PIDkill $PID
fi

4、实时数据启动脚本startup.sh

#!/bin/bash
application_name=sendSocket.jar
DIR="/usr/local/soft/sendsocket"
application_port=18998
log_name=log.txt
echo Starting application ${application_name}... 
#nohup java -jar ${application_name} -Dspring.config.location=${config_path} > ${log_name} 2>&1 &
nohup java -jar ${DIR}/${application_name} --server.port=${application_port} > ${DIR}/${log_name} 2>&1 &
#nohup java -jar ${DIR}/${application_name} --server.port=${application_port} > /dev/null 2>&1 &
#tail -f ${DIR}/${log_name}
# (hack) sleep 1 minute,让项目跑起来 
# sleep 20

5、实时数据关闭脚本stop.sh

#!/bin/bash
application_name=sendSocket.jar
PID=$(ps -ef | grep /usr/local/soft/sendsocket/${application_name} | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
thenecho ${application_name} is already stopped
elseecho ${application_name} has killed,pid is $PIDkill $PID
fi

6、jenkins制定完任务后,点击立即构建,控制台报错(…无法生成父级目录)

原因是:
jenkins 使用的 jenkins 用户和组,而  /data/maven/repository 的用户和组是 root。
解决方案:改变repository的用户组为Jenkins即可
chown -R jenkins:jenkins /data/maven/repository

7、Jenkins执行shell脚本权限不够

vim /usr/lib/systemd/system/jenkins.service
修改:
User=root
Group=rootsystemctl daemon-reload
systemctl restart jenkins

8、构建好的jar包位置(可配置:vim /etc/sysconfig/jenkins)

/var/lib/jenkins/workspace/target-display-server/targetdisplay-admin/target/targetdisplay-admin.jar

9、target-display-front配置执行脚本

# remove dist
rm -rf /var/lib/jenkins/workspace/target-display-front/dist/*
npm install
npm run build
cd /var/lib/jenkins/workspace/target-display-front/dist
cp -rf ./index.html ./static /usr/local/soft/target_display_front

10、maven项目:Build -> Goals and options

clean package -Dmaven.test.skip=true
# maven 打包命令:
# mvn compile:编译
# mvn clean:清除target
# mvn package:项目编译、单元测试、打包
# mvn install:项目编译、单元测试、打包、将打好的包部署到本地仓库(在有多个项目互相依赖的情况下经常使用)
# mvn deploy:项目编译、单元测试、打包、将打好的包部署到本地仓库、将打好的包部署到远程仓库
# mvn [ package | install | deploy ] -DskipTests:不执行测试用例,但编译测试用例到对应的target下
# mvn [ package | install | deploy ] -Dmaven.test.skip:不执行测试用例,也不编译测试用例

11、target-display-server配置执行脚本

# stop jar
sh /usr/local/soft/target_display_server/stop.sh
# copy
cp -f /var/lib/jenkins/workspace/target-display-server/targetdisplay-admin/target/targetdisplay-admin.jar /usr/local/soft/target_display_server
# Jenkins默认会在Build结束后Kill掉所有的衍生进程
BUILD_ID=dontKillMe
# start jar
sh /usr/local/soft/target_display_server/startup.sh

12、send-socket配置执行脚本

# stop jar
sh /usr/local/soft/sendsocket/stop.sh
# copy
cp -f /var/lib/jenkins/workspace/send-socket/target/sendSocket.jar  /usr/local/soft/sendsocket
# Jenkins默认会在Build结束后Kill掉所有的衍生进程
BUILD_ID=dontKillMe
# start jar
sh /usr/local/soft/sendsocket/startup.sh

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/19833.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uC-OS2 V2.93 STM32L476 移植:系统启动篇

前言 前两篇已经 通过 STM32CubeMX 搭建了 NUCLEO-L476RG 的 STM32L476RG 的 裸机工程,下载了 uC-OS2 V2.93 的源码,并把 uC-OS2 的源文件加入 Keil MDK5 工程 本篇适配 uC-OS2 的 系统定时器(Systick)与 PendSV_Handler&#xf…

python elasticsearch update by query

创建索引以及添加数据 PUT test {"mappings": {"properties": {"test":{"type": "nested"}} }}GET test/_mappingPUT test/_doc/1 {"test":{"name":"ellis","age":100} }elastics…

leetcode 763. 划分字母区间

2023.8.3 本题的关键是要确保同一字母需要在同一片段中,而这就需要关注到每个字母最后一次出现的位置。 思路:用一个哈希表保存每个字母(26个)最后一次出现的位置。然后从头遍历,不断更新最右边界,直到当前…

Java电子招投标采购系统源码-适合于招标代理、政府采购、企业采购、等业务的企业 tbms

​ 功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查…

[数据分析与可视化] Python绘制数据地图4-MovingPandas入门指北

MovingPandas是一个基于Python和GeoPandas的开源地理时空数据处理库,用于处理移动物体的轨迹数据。它提供了一组强大的工具,可以轻松地加载、分析和可视化移动物体的轨迹。通过使用MovingPandas,用户可以轻松地处理和分析移动对象数据&#x…

[JAVA基础]自动拆装箱NPE问题

1.自动拆装箱场景 自动装箱 当把字面量转换成包装类的时候会自动装箱 比如: Integer a 1; Integer b 1; 自动拆箱 当你对包装类的对象进行运算(如加法、减法等)时,Java会自动进行拆箱操作。拆箱是将包装类型的对象转换为相应的基…

登月再进一步:Apollo自动驾驶的里程碑

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★前端炫酷代码分享 ★ ★ uniapp-从构建到提升★ ★ 从0到英雄,vue成神之路★ ★ 解决算法,一个专栏就够了★ ★ 架…

数据结构 | 递归

目录 一、何谓递归 1.1 计算一列数之和 1.2 递归三原则 1.3 将整数转换成任意进制的字符串 二、栈帧:实现递归 三、递归可视化 四、谢尔平斯基三角形 五、复杂的递归问题 六、动态规划 一、何谓递归 递归是解决问题的一种办法,它将问题不断地分…

Google Colab 部署 Stable Diffusion Webui

1. 下载 vae 访问: https://huggingface.co/stabilityai/sd-vae-ft-mse-original/blob/main/vae-ft-mse-840000-ema-pruned.ckpt 根据下图的红圈部分,点击下载。 将其上传至GoogleDrive根目录 点击新建后,然后点击上传文件。 2. 访问 colab 首先第一步…

npm配置最新淘宝镜像

目录 1、设置淘宝镜像2、查看源 1、设置淘宝镜像 默认的官方镜像:https://registry.npmjs.org,切换国内淘宝镜像,访问下载更快。 npm config set registry https://registry.npmmirror.com/其他,如pnpm: pnpm confi…

数据结构——单链表

无头单向非循环链表的建立 前言——什么链表链表形象图链表分类 一、Single_linked_list.h头文件的建立二、Single_linked_list.c功能函数的定义Single_linked_list_test.c主函数的定义四、代码运行测试五、Single_linked_list完整代码演示:总结 前言——什么链表 链…

一条自由游动的鲸鱼

先看效果&#xff1a; 再看代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>鲸鱼</title><style>#canvas-container {width: 100%;height: 100vh;overflow: hidden;}&l…

HTML之表单标签

目录 表单标签 Form表单 定义&#xff1a; 基本语法结构&#xff1a; form属性&#xff1a; enctyoe属性 fieldeset标签 fieldeset属性 legend标签 label标签 优势 label属性 input标签 input属性 input标签中的type属性 text text输入框有以下配套属性 searc bu…

太魔幻了!计算机就业哀鸿遍野,而高考生疯狂涌向计算机专业

在张雪峰推荐的几大专业里&#xff0c;计算机专业是其中之一。近几年&#xff0c;计算机专业报考热度不减&#xff0c;但就业前景却令人堪忧&#xff0c;互联网裁员接二连三&#xff0c;许多码农找不到工作。 一位网友感叹&#xff1a;一边是计算机就业哀鸿遍野&#xff0c;一…

IDEA中怎么使用git下载项目到本地,通过URL克隆项目(gitee\github)

点击 新建>来自版本控制的项目 点击后会弹出这样一个窗口 通过URL拉取项目代码 打开你要下载的项目仓库 克隆>复制 gitee github也是一样的 返回IDEA 将刚刚复制的URL粘贴进去选择合适的位置点击克隆 下载完成

Mac电脑目录

System&#xff08;系统&#xff09;Applications&#xff08;应用程序&#xff09;应用程序目录&#xff0c;默认所有的GUI应用程序都安装在这里User&#xff08;用户&#xff09;存放用户的个人资料和配置。每个用户有自己的单独目录Library&#xff08;资料库&#xff09;系…

Android的Handler消息通信详解

目录 背景 1. Handler基本使用 2. Handler的Looper源码分析 3. Handler的Message以及消息池、MessageQueue 4. Handler的Native实现 4.1 MessageQueue 4.2 Native结构体和类 4.2.1 Message结构体 4.2.2 消息处理类 4.2.3 回调类 4.2.5 ALooper类 5. 总结&…

基于fpga_EP4CE6F17C8_秒表计数器

文章目录 前言实验手册一、实验目的二、实验原理1&#xff0e;理论原理2&#xff0e;硬件原理 三、系统架构设计四、模块说明1&#xff0e;模块端口信号列表dig_driver(数码管驱动模块)key(按键消抖模块)top(顶层模块) 2&#xff0e;状态转移图3&#xff0e;时序图五、仿真波形…

目标检测与跟踪 (2)- YOLO V8配置与测试

系列文章目录 第一章 目标检测与跟踪 &#xff08;1&#xff09;- 机器人视觉与YOLO V8 目标检测与跟踪 &#xff08;1&#xff09;- 机器人视觉与YOLO V8_Techblog of HaoWANG的博客-CSDN博客3D物体实时检测、三维目标识别、6D位姿估计一直是机器人视觉领域的核心研究课题&a…

国际阿里云实名账号CDN加速和OSS传输加速有什么区别?

详细信息 阿里云对象存储OSS以海量、安全、低成本、高可靠等特点已经成为用户存储静态资源和文件的首要选择&#xff0c;实际使用中面向全球各地用户访问OSS资源时&#xff0c;访问速度会受到客户端网络、OSS的下行带宽、Bucket地域、访问链路长等限制出现访问慢的情况。以下主…