Jenkins自动化部署一个Maven项目

news2024/12/24 2:27:45

Jenkins自动化部署

提示:本教程基于CentOS Linux 7系统下进行

Jenkins的安装

1. 下载安装jdk11

官网下载地址:https://www.oracle.com/cn/java/technologies/javase/jdk11-archive-downloads.html

本文档教程选择的是jdk-11.0.20_linux-x64_bin.tar.gz

解压jdk-11.0.20_linux-x64_bin.tar.gz命令为:

tar -zxvf jdk-11.0.20_linux-x64_bin.tar.gz

image-20231114235650898

2. 下载Jenkins的war包

官网下载地址:https://mirrors.tuna.tsinghua.edu.cn/jenkins/war-stable/2.414.3/jenkins.war

image-20231114235425525

3. 准备Jenkins启动脚本

编写一个Jenkins的启动脚本,简化之后每次启动都要敲命令;

将Jenkins的访问端口设置为3001;(可以根据自己需求设置端口)

创建startup.sh脚本

vim /usr/local/tools/jenkins/startup.sh

startup.sh脚本

#!/bin/bash

nohup /usr/local/tools/jdk-11.0.20/bin/java -jar /usr/local/tools/jenkins/jenkins.war --httpPort=3001 >/dev/null 2>&1 &

使脚本具有执行权限

chmod +x /usr/local/tools/jenkins/startup.sh

image-20231114235448895

4. 启动Jenkins

执行如下命令即可

./startup.sh

初次启动Jenkins,系统会要求使用其自动生成的密码进行解锁,初始密码在**/root/.jenkins/secrets/initialAdminPassword**文件中,启动时的日志里也有打印出来;

5. 访问并解锁Jenkins

访问http://IP:3001,等待解锁Jenkins页面出现,就是Unlock Jenkins页面,在Administrator password下的输入框输入你的启动Jenkins时获取的临时密码即可

Jenkins的基础配置与插件安装

1. 基础插件安装

Dashboard–>系统管理(Manage Jenkins)–>插件管理(Plugins)–>Avaliable Plugins

安装基础插件SSH server、Publish Over SSH、NodeJS Plugin、Maven Integration plugin、Git plugin、Git client plugin;

下载插件后会提示要重启,自动重启后就会生效

image-20231115130641871

2. 配置项目运行所需的Jdk8环境

  • 官网下载地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html

    本项目运行选择的是jdk-8u301-linux-x64.tar.gz

    可与之前Jenkins运行所需的jdk11放一起

    解压命令为

    tar -zxvf jdk-8u301-linux-x64.tar.gz
    

    image-20231116221031658

  • Jenkins配置JDK

    Dashboard–>系统管理(Manage Jenkins)–>全局工具配置(Tools)–>JDK安装

    新增JDK,JAVA_HOME配置jdk8的路径

    在这里插入图片描述

3. 配置Jenkins自动拉取代码所需的Git工具

  • Jenkins所在服务器上安装Git

    安装命令sudo yum install -y git

    查看git版本命令 git --version

    安装git的可执行文件默认路径为/usr/bin/git

    image-20231116221531154

  • Jenkins上配置Git

    Dashboard–>系统管理(Manage Jenkins)–>全局工具配置(Tools)–>Git installations

    image-20231116130332404

4. Maven安装

Dashboard–>系统管理(Manage Jenkins)–>全局工具配置(Tools)–>Git installations

选择自己需要的maven版本即可,勾选自动安装

image-20231116130332404

5. 配置Publish over SSH

  • 生成SSH密钥

    在Jenkins所在的服务器上生成ssh密钥,注意是Jenkins所在的服务器,命令如下:

    ssh-keygen -t rsa -P ''
    

    然后一路回车键,接受默认文件位置和文件名,为了方便也不使用密码短语

    # 整个交互过程
    [root@VM-20-12-centos tools]# ssh-keygen -t rsa -P ''
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): 
    Created directory '/root/.ssh'.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:RpNQDtJe92E5qovCrKhoO4CiN4Jn0Y3LT6SPbTKFg4E
    The key's randomart image is:
    +---[RSA 4096]----+
    |    ..o..    .   |
    |     ..+... =    |
    | .   . .=. + o   |
    |E .   .. .. .    |
    |.  + +. S.       |
    |+ o =oo..        |
    |=  =.+.. .       |
    |=+= O=o .        |
    |**+o.*+          |
    +----[SHA256]-----+
    [root@VM-20-12-centos tools]# 
    

    image-20231116224821420

  • 上传公钥

    将生成的SSH密钥对里的公钥文件上传到jar包服务所需要运行的服务器,后面需要Jenkins自动将编译好的jar包上传到这台服务器上。

    cd ~
    ls .ssh/
    ssh-copy-id -i .ssh/id_rsa.pub 服务器IP地址
    

    整个命令的作用是将本地计算机的公钥文件复制到远程主机上的authorized_keys文件中,从而实现无密码登录;

  • 验证是否可以无密码登录远程

    ssh root@服务器IP地址
    
  • 在Jenkins上配置Publish over SSH

    Dashboard–>系统管理(Manage Jenkins)–>系统配置(System)–>Publish over SSH

    image-20231116230215841

环境准备完毕!

自动部署Maven项目

1. 创建一个Maven任务

image-20231116230533898
img

2. 配置General

丢弃旧的构建核心意思就是将旧的jar包扔掉,如果有打算回滚服务到很多个版本之前,这里的“保持构建的最大个数”就得设置大一点。一般也就保留3~5个。

image-20231116230939928

3. 源码管理配置

image-20231116231707880

添加git访问凭据,例:

image-20231116231903666

4. 构建触发器配置

构建触发器:就是什么时候触发自动部署这个操作;

一般只用定时构建和轮询PCM;

定时构建:根据设置的日程表(类似于Cron),去定时自动拉取代码、编译打包、上传服务器、运行;

轮询PCM:如果git仓库代码有变动,就自动拉取代码、编译打包、上传服务器、运行;

因为是测试,所以此处用的是默认配置;

image-20231116232636949

5. 构建环境配置

选择我们在之前在Dashboard-->系统管理(Manage Jenkins)-->全局工具配置(Tools)-->JDK安装里配置JDK8即可;

image-20231116232914694

6. 编译打包配置

image-20231116233215698

7. 服务上传运行配置

jar包运行脚本

source /etc/profile 
cd /data/mall/test
ps -ef|grep test-0.0.1-SNAPSHOT.jar|grep -v grep|awk '{print $2}'|xargs kill -s 9   
BUILD_ID=dontKillMe 
nohup java -jar test-0.0.1-SNAPSHOT.jar > nohup.out 2>&1 &

image-20231116234125636

test项目的目录结构

image-20231116234354732

8. 配置完成,立即构建

image-20231117002230933

9. 查看验证

前往jar包运行的服务器进行测试验证

image-20231117002509345

验证自动部署成功!

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

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

相关文章

赋能汽车企业数智化转型,鼎捷软件受邀出席“中国工业软件大会”

由中国国际智能产业博览会组委会、工业和信息化部、重庆市人民政府主办的“第三届中国工业软件大会”在重庆盛大召开。工业软件主管部委及政府部门、产业上下游企业代表和业内大咖、科教领域专家学者等800余位嘉宾代表齐聚,为加快制造业数字化转型和高质量发展建言献…

基于SpringBoot的SSMP整合案例(在Linux中发布项目的注意事项与具体步骤步骤)

前言与注意 这几天在Linux中上线之前的小项目时,遇到了很多的问题,Linux镜像的选择,jdk, mysql在linux中的下载,使用finallshell连接linux,使用tomcat连接linux中的数据库........ 在下面的注意事项中我会将…

人生阶段总结

--回顾一下我迷茫、努力、不开心又失败的阶段人生自我介绍一下,我是一个智力平平,记忆力差,适合自学的长睡眠者。 大专之前 国内的应试教育基本上不适合我,厌恶补课厌恶机械式听课刷题,所有的优势学科都是自学&#xf…

Sql Server 2017主从配置之:事务日志传送

使用事务日志传送模式搭建Sql Server 2017主从同步,该模式有一定的延迟,是通过3个不同的定时任务,将主库的日志同步到从库进行恢复来实现数据库同步操作。 环境准备 两台服务器,配置都是8g2核,50g硬盘,操…

CI/CD相关概念学习

文章目录 CI/CD相关概念学习前言CI/CD相关概念介绍集成地狱持续集成持续交付持续部署Devops CI/CD相关应用介绍JenkinsTekton PipelinesSpinnakerTravis CIGoCD CI/CD相关概念学习 前言 本文主要是介绍一些 CI/CD 相关的概念,通过阅读本文你将快速了解 CI/CD 是什么…

腾讯云4核8G服务器性能如何多少钱一年?

腾讯云服务器4核8G配置优惠价格表,轻量应用服务器和CVM云服务器均有活动,云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元,5年6490.44元,轻量应用服务器4核8G12M带宽一年446元、529元15个月,腾讯云百科txybk.com分…

在前端开发中,什么是CDN(Content Delivery Network)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

Python实验项目7 :tkinter GUI编程

(1)利用tkinter 制作界面,效果图如下: from tkinter import * # winTk() for i in range(1,20):Button(width5,height10,bg"black" if i%20 else"white").pack(side"left") win.geometry("8…

“可信区块链运行监测服务平台TBM发展研讨会”将于11月23日在北京召开

为推动区块链治理与创新,积极推进信任科技生态体系建设,中国信息通信研究院、中国移动设计院联合区块链服务网络(BSN)发展联盟共同发起建立了可信区块链运行监测服务平台(TBM)。 TBM平台通过对区块链系统的…

idea显示pom.xml文件漂黄警告 Dependency maven:xxx:xxx is vulnerable

场景: idea警告某些maven依赖包有漏洞或者依赖传递有易受攻击包,如下: 解决: 1、打开idea设置,找到 File | Settings | Editor | Inspections 2、取消上述两项勾选即可

Verilog基础:仿真时x信号的产生和x信号对于各运算符的特性

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 信号爆x也许是所有IC人的噩梦,满屏的红色波形常让人头疼不已,但x信号的产生原因却常常只有几种,只要遵循一定的代码规范&#…

开源与闭源软件的辩论:对大模型技术发展的影响

目录 前言1 开源软件的优缺点1.1 开源软件的优点1.2 开源软件的缺点和挑战 2 闭源软件的优缺点2.1 闭源软件的优点2.2 闭源软件的缺点和挑战 3 大模型发展会走向哪一边结语 前言 近期,特斯拉CEO马斯克公开表示:OpenAI不该闭源,自家首款聊天机…

JVM判断对象是否存活之引用计数法、可达性分析

目录 前言 引用计数法 概念 优点 缺点 可达性分析 概念 缺点: 扩展: 1.GC Roots 概念 2.STW (Stop the world) 前言 JVM有两种算法来判断对象是否存活,分别是引用计数法和可达性分析算法,针对可达性分析算法STW时间长、…

Python入门学习篇(一)——注释变量输入输出

1 注释 1.1 作用 a 方便他人和自己阅读代码 b 告诉编译器这部分内容是不用执行的。1.2 单行注释 # 注释内容1.3 多行注释(引号) 1.3.1 三对双引号 """ 注释内容 """1.3.2 三对单引号 注释内容 1.4 pycharm快捷键使用 ctrl/ 多行注释(以# …

基于SSM的中小型企业财务管理设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

【413.等差数列划分】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:int numberOfArithmeticSlices(vector<int>& nums) {int nnums.size();if(n<3) return 0;vector<int> dp(n);dp[2]dp[1]dp[0]0;if(nums[2]-nu…

vulnhub靶场—matrix-breakout-2-morpheus靶机

一&#xff0c;实验环境 靶机ip&#xff1a;192.168.150.131攻击机ip&#xff1a;192.168.150.130 二&#xff0c;信息收集 arp-scan -l 扫描网段&#xff0c;寻找靶机ip 使用工具nmap进行端口扫描 nmap -A -T4 -p- 192.168.150.131 通过信息收集发现了靶机有80和81这两个…

【2021集创赛】基于arm Cortex-M3处理器与深度学习加速器的实时人脸口罩检测 SoC

团队介绍 参赛单位&#xff1a;深圳大学 队伍名称&#xff1a;光之巨人队 指导老师&#xff1a;钟世达、袁涛 参赛队员&#xff1a;冯昊港、潘家豪、慕镐泽 图1 团队风采 1. 项目简介 新冠疫情席卷全球&#xff0c;有效佩戴口罩可以极大程度地减小病毒感染的风险。本项目开发…

腾讯云4核8G服务器配置价格表,轻量和CVM标准型S5实例

腾讯云4核8G服务器S5和轻量应用服务器优惠价格表&#xff0c;轻量应用服务器和CVM云服务器均有活动&#xff0c;云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元&#xff0c;5年6490.44元&#xff0c;轻量应用服务器4核8G12M带宽一年446元、529元15个月&#xff0c;腾讯云…

一文看分布式锁

为什么会存在分布式锁&#xff1f; 经典场景-扣库存&#xff0c;多人去同时购买一件商品&#xff0c;首先会查询判断是否有剩余&#xff0c;如果有进行购买并扣减库存&#xff0c;没有提示库存不足。假如现在仅存有一件商品&#xff0c;3人同时购买&#xff0c;三个线程同时执…