花30分钟,用Jenkins部署码云上的SpringBoot项目

news2024/11/24 4:51:26

本文介绍 jenkins 如何从 gitee 上 clone 项目,然后使用 maven 打包并后台启动。

1.Jenkins 介绍

Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 (以上介绍来源于百度百科)

其实通俗来说,Jenkins 就是一个自动化部署项目的工具,帮我省去重复的运维工作。

2. 环境准备

本文需要如下几个工具:

  • JDK

  • Git

  • Maven

以上三种就不在这里介绍安装了,这里我贴出我的环境变量配置仅供参考:

  • Jenkins

我的 Jenkins 是使用如下方式安装:

 
  1. sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo

  2. sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key

  3. sudo yum install jenkins

启动

 
  1. service jenkins start

然后访问 http://${ip}/8080,可以看到 jenkins 那个小老头,根据自行配置安装插件,其中密码在这里

 
  1. vi /var/lib/jenkins/secrets/initialAdminPassword

以上都在网上有很多,我在博客中也写过,就不在这里废话太多了。

3.Jenkins 工具插件配置

3.1 插件配置

个人建议,Jenkins 第一次进入推荐安装的插件就默认安装就行,省的还需要后续自己安装,当然,如果自己安装的话需要 Maven 和 Git 插件。

3.2 工具配置

  • JDK

  • Git

  • Maven

这里就可以用到上面环境准备时需要的截图,这里我也摸索了很久才配置完成。

4. 配置项目

4.1 构建自由风格的项目

新建项目,选择构建自由风格的项目,给项目起个名字,然后点击 Ok。

4.2 配置参数化构建过程

这里我用到了几个参数,因为可能有时需要提前准备好参数在进行构建,如下图:

  • jar_path : 本意是准备项目打包后的 jar 位置,其实这里是 Jenkins 工作空间

  • spring_profile:这个是读取配置文件前缀,比如 dev,test,prod

  • jar_name:jar 包名称

  • project_name:项目名称

4.3 Git 配置

用 Git 进行将项目 Clone 下来,配置自己的用户密码,Repository URL 配置 git 地址(这里提供的地址是私密项目,项目没什么特别的,就是简单 SpringBoot 项目,不用尝试了,用自己项目就可以)

4.4 配置 Build

这里选择执行 Shell,内容如下:

 
  1. mvn clean install -Dmaven.test.skip=true

  2. echo $spring_profile $jar_path $jar_name

  3. cd /usr/local/shell/

  4. ./stop.sh $jar_name

  5. echo "Execute shell Finish"

  6. ./startup.sh $spring_profile $jar_path $jar_name $project_name

如图:

在上面执行的 Shell 里面还用到了两个 Shell,分别是 stop.sh,实质就是找到 jar 执行的 pid,然后 kill,具体内容如下:

 
  1. jar_name=${1}

  2. echo "Stopping" ${jar_name}

  3. pid=`ps -ef | grep ${jar_name} | grep -v grep | awk '{print $2}'`

  4. if [ -n "$pid" ]

  5. then

  6. echo "kill -9 的pid:" $pid

  7. kill -9 $pid

  8. fi

startup.sh 内容如下,具体可以根据情况修改:

 
  1. spring_profile=${1}

  2. jar_path=${2}

  3. jar_name=${3}

  4. project_name=${4}

  5. cd ${jar_path}/${project_name}/target/

  6. echo ${jar_path}/${project_name}/target/

  7. echo nohup java -jar ${jar_name} &

  8. BUILD_ID=dontKillMe nohup java -jar ${jar_name} --spring.profiles.active=${spring_profile} &

5 测试运行

5.1 运行

点击运行后,如图所示,刚刚预配置的参数都可以看到并可以修改,这里我们用默认配置好的就可以。

然后点击运行就可以,当时遇到了一个插曲,我的 Maven 是安装成功的,但是 Jenkins 内无法使用,报错 mvn:command not found,这里我解决的方式是将 mvn 命令也指向 / usr/bin/mvn,如下:

 
  1. ln -s /usr/local/apache-maven-3.5.4/bin/mvn /usr/bin/mvn

访问效果其实就是我的博客,如图所示:

6 总结

总体过程坑其实还是很多的,毕竟没有使用过,但是没有什么特别棘手的问题,总是出现不同的问题,有需要可以与我一起交流学习。、

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

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

相关文章

7月4号作业

实现底层实现三盏灯的控制 head.h #ifndef __HEAD_H__ #define __HEAD_H__#define PHY_LED1_MODER 0X50006000 #define PHY_LED1_ODR 0X50006014#define PHY_RCC 0X50000A28#define PHY_LED2_MODER 0X50007000 #define PHY_LED2_ODR 0X50007014#endif led.c #in…

2023年,第九届WWEC教育者大会隆重回归

2023年第九届WWEC教育者大会将于8月20日至22日在上海举行。本次大会也是时隔两年之后再度重启,是疫情恢复常态化后教育界的首次重要大会。 WWEC教育者大会由宋辉先生发起,嘉家有品主办,君学书院、雁传书文化传媒和有鹏来教育科技联合主办。本…

jdbcTemplate的queryForList报错:Incorrect column count: expected 1, actual 2

jdbcTemplate的queryForList方法有多种传参形式,我们常用的就是这种传class类,参数返回数据,结果报expected 1, actual 2,意思是预期只返回一列,但却返回了2列。这是不合理的,因为返回参数都是List&#xf…

PCL 法向量估计源码学习

一、思路&#xff1a; 二、源码 #ifndef PCL_FEATURES_IMPL_NORMAL_3D_H_ #define PCL_FEATURES_IMPL_NORMAL_3D_H_#include <pcl/features/normal_3d.h>/// template <typename PointInT, typename PointOutT> void pcl::NormalEstimation<PointInT, PointOutT…

【Matlab】智能优化算法_海洋捕食者算法MPA

【Matlab】智能优化算法_海洋捕食者算法MPA 1.背景介绍1.1 布朗运动1.2 莱维运动 2.数学模型2.1 MPA配方2.2 MPA优化场景2.3 涡流形成与FAD效应 3.文件结构4.伪代码5.详细代码及注释5.1 func_plot.m5.2 Get_Functions_details.m5.3 initialization.m5.4 levy.m5.5 main.m5.6 MP…

【H5】文件上传(ajax)

系列文章 【移动设备】iData 50P 技术规格 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/130604517 【H5】avalon前端数据双向绑定 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/131067187 【H5】安卓自动更新方案&a…

Python_装饰器

目录 简单装饰器 语法糖 *args、**kwargs处理有参数的函数 带参数的装饰器 类装饰器 不带参数的类装饰器 带参数的类装饰器 装饰器执行顺序 functools.wraps 讲 Python 装饰器前&#xff0c;我想先举个例子&#xff0c;虽有点污&#xff0c;但跟装饰器这个话题很贴切。…

select……for update 到底加的什么锁

先上结论 主键索引唯一索引普通索引普通字段等值查询行锁行锁行锁间隙锁&#xff0c;锁表范围查询间隙锁&#xff0c;锁范围行间隙锁&#xff0c;锁范围行间隙锁&#xff0c;锁范围行间隙锁&#xff0c;锁表 数据表准备 DROP TABLE IF EXISTS t_user_test; CREATE TABLE t_u…

【Web3】MetaMask钱包配置

目录 主网更换测试网 私钥如何登录钱包 主网更换测试网 私钥如何登录钱包

docker安装ES,IK分词器,Kibana

dockerhub上自己搜要拉的镜像版本 // 拉取es 6.8.0的镜像版本 docker pull elasticsearch:6.8.0// 运行es镜像 docker run -d -p 9300:9300 -p 9200:9200 --name elasticsearch elasticsearch:6.8.0运行报错了 ERROR: [1] bootstrap checks failed [1]: max virtual memory are…

Michael.W基于Foundry精读Openzeppelin第3期——Arrays.sol

Michael.W基于Foundry精读Openzeppelin第3期——Arrays.sol 0. 版本0.1 Arrays.sol 1. 补充&#xff1a;关于storage的定长数组和动态数组的layout2. 目标合约3. 代码精读3.1 unsafeAccess(address[] storage, uint256)3.2 unsafeAccess(bytes32[] storage, uint256)3.3 unsafe…

限时等待的互斥量

本文结束一种新的锁&#xff0c;称为 timed_mutex 代码如下&#xff1a; #include<iostream> #include<mutex> #include<thread> #include<string> #include<chrono>using namespace std;timed_mutex tmx;void fun1(int id, const string&a…

MySql入门操作

一.前节回顾 1.web项目环境配置 2.通用增删改&#xff0c;通用查询方法 3.前台&#xff0c;后台代码显示效果 所有你都理解了吗&#xff1f; 二.Mysql数据库介绍 1.什么是MySQL&#xff1f; MySQL是一种开源的关系型数据库管理系统。它是目前最流行和广泛使用的数据库之一&…

【Java|golang】2679. 矩阵中的和

给你一个下标从 0 开始的二维整数数组 nums 。一开始你的分数为 0 。你需要执行以下操作直到矩阵变为空&#xff1a; 矩阵中每一行选取最大的一个数&#xff0c;并删除它。如果一行中有多个最大的数&#xff0c;选择任意一个并删除。 在步骤 1 删除的所有数字中找到最大的一个…

NodeJS 后端返回Base64格式数据显示图片 ⑩⑨ (一篇就够了)

文章目录 ✨文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;请点三连一波&#xff0c;蟹蟹支持&#x1f618;前言Base64前端服务器总结 ✨文章有误请指正&#xff0c;如果觉得对你有用&#xff0c;请点三连一波&#xff0c;蟹蟹支持&#x1f618; ⡖⠒⠒⠒⠤⢄⠀⠀⠀ …

【Java语法小记】求字符串中某个字符的数量——IntStream流的使用

文章目录 引入需求代码原理解读s.chars()IntStream filter​(IntPredicate predicate)long count()补充&#xff1a;IntStream peek​(IntConsumer action) 流操作和管道 引入需求 从一段代码引入 return s.length() - (int) s.chars().filter(c -> c S).count(); 其中 (…

文心一言 VS 讯飞星火 VS chatgpt (54)-- 算法导论6.2 6题

文心一言 VS 讯飞星火 VS chatgpt &#xff08;53&#xff09;-- 算法导论6.2 5题 六、证明:对一个大小为 n的堆&#xff0c;MAX-HEAPIFY 的最坏情况运行时间为 Ω(Ign)。(提示对于n个结点的堆&#xff0c;可以通过对每个结点设定恰当的值&#xff0c;使得从根结点到叶结点路径…

2023年房地产投资退出途径研究报告

第一章 房地产投资概况 房地产&#xff08;Real Estate&#xff09;是一个涵盖了土地及其上的永久性建筑&#xff08;如建筑物和房屋&#xff09;和自然资源&#xff08;如矿产&#xff0c;水源&#xff0c;作物&#xff09;的经济学概念。它可以分为四类&#xff1a;住宅房地…

大数据面试题-场景题

1.手写Flink的UV 手写Flink的UV 2.Flink的分组TopN Flink的分组TopN 3.Spark的分组TopN 1&#xff09;方法1&#xff1a; &#xff08;1&#xff09;按照key对数据进行聚合&#xff08;groupByKey&#xff09; &#xff08;2&#xff09;将value转换为数组&#xff0c;利…

2023如何自学网络安全

自学网络安全可以按照以下步骤进行&#xff1a; 学习基础知识&#xff1a;开始之前&#xff0c;建议先学习计算机网络和操作系统的基础知识&#xff0c;了解网络通信的原理和常见的网络攻击方式。可以通过阅读相关的书籍、在线教程或参加网络安全相关的课程来学习。 学习网络安…