详细步骤记录:持续集成Jenkins自动化部署一个Maven项目

news2024/11/18 13:47:00

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/1226320.html

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

相关文章

Linux中系统时间同步

在Windwos中,系统时间的设置很简单,界面操作,通俗易懂,而且设置后,重启,关机都没关系。系统时间会自动保存在BIOS时钟里面,启动计算机的时候,系统会自动在BIOS里面取硬件时间&#x…

开发知识点-uniapp微信小程序-开发指南

uniapp uni.chooseLocationgetCurrentPages美团外卖微信小程序开发uniapp-美团外卖微信小程序开发P1 成果展示P2外卖小程序后端,学习给小程序写http接口P3 主界面配置P4 首页组件拆分P13 外卖列表布局筛选组件商家 布局测试数据创建样式 请求商家外卖数据封装请求并…

汇编-指针

一个变量如果包含的是另一个变量的地址, 则该变量就称为指针(pointer) 。指针是操作数组和数据结构的极好工具,因为它包含的地址在运行时是可以修改的。 .data arrayB byte 10h, 20h, 30h, 40h ptrB dword arrayB ptrB1 dword OFFSET arrayBarray…

4.6每日一题(多元函数的隐函数求导)

三元方程确定的二元函数类型的隐函数 方法一:两边对x求偏导,把y看成常数 注:z可以把x和y同时代入求出答案 方法二:带公式

数据结构【DS】栈

共享栈 共享栈的目的是什么? 目的:有效利用存储空间。 共享栈的存取数据时间复杂度为? 存取数据时间复杂度为O(1) 共享栈如何判空?如何判满? 两个栈的栈顶指针都指向栈顶元素,𝑡𝑜𝑝…

【0基础学Java第十课】-- 认识String类

10. 认识String类 10.1 String类的重要性10.2 常用方法10.2.1 字符串构造10.2.2 String对象的比较10.2.3 字符串查找10.2.4 转化10.2.5 字符串替换10.2.6 字符串拆分10.2.7 字符串截取10.2.8 字符串的不可变性10.2.9 字符串修改 10.3 StringBuilder和StringBuffer10.3.1 String…

Java 11及更高版本的Oracle JDK版本

2021 年 9 月 14 日,Oracle 发布了可以长期支持的 JDK17 版本,那么从 JDK11 到 JDK17,到底带来了哪些特性呢?亚毫秒级的 ZGC 效果到底怎么样呢?值得我们升级吗?而且升级过程会遇到哪些问题呢?带…

PHP字符串函数的解析

在PHP中,字符串是一种常见的数据类型,用于存储和操作文本数据。PHP提供了丰富的字符串函数,用于执行各种字符串操作,包括截取、连接、替换、搜索等。在这篇文章中,我们将深入解析一些常用的PHP字符串函数,以…

小程序开通电子发票

总目录 文章目录 总目录前言结语 前言 随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 首先登录商户号:https://pay.weixin.qq.com/index.php/core/home/lo…

数据结构及八种常用数据结构简介

data-structure 数据结构是一种存在某种关系的元素的集合。“数据” 是指元素;“结构” 是指元素之间存在的关系,分为 “逻辑结构” 和 “物理结构(又称存储结构)”。 常用的数据结构有 数组(array)、栈&…

debian10 开启rdp安装firefox,firefox 中文乱码

debian10 开启rdp安装firefox apt -y install tigervnc-standalone-server apt -y install xrdp tigervnc-standalone-server systemctl enable xrdpapt install firefox-esrmstsc连接 firefox-settings-general-fonts-advanced-Simplified Chinese

【LeetCode:2342. 数位和相等数对的最大和 | HashMap + 模拟 】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

【开源】基于Vue和SpringBoot的微信小程序的音乐平台

项目编号: S 055 ,文末获取源码。 \color{red}{项目编号:S055,文末获取源码。} 项目编号:S055,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示 四、核心代码4.1 查询单首…

R语言的入门学习

目录 准备工作导入csv数据集选择前200行作为数据集展示数据集的前/后几N行宏观分析删除缺失值构建直方图导出为图片 R语言常见图像类型例1:散点图例2:散点矩阵图 准备工作 安装教程: R语言和RStudio的下载安装(非常简便舒适&…

脚本(JavaScript)-练手-简单的随机音乐播放器

浅浅的写个简单的随机音乐播放脚本(可移动),注释很详细,直接上源码 效果: // UserScript // name 播放音乐脚本 // namespace 代码对我眨眼睛 // version 1.2 // description 在API上请求音乐链接并随机自动连续播放音乐&…

【Python3】【力扣题】303. 区域和检索 - 数组不可变

【力扣题】题目描述: 【Python3】代码: 1、解题思路:从列表中获取指定下标的所有元素,求和。 知识点:列表[start:end]:切片。从列表中获取起始下标start(含)到结束下标end&#xf…

Redis(地理空间Geospatial和HyperLogLog)

Geospatial: Redis中的Geospatial提供了一种存储和处理地理空间数据的能力,这对于许多应用非常有用。以下是Redis中的Geospatial的一些作用: 1. 地理位置查询:可以存储地理位置的坐标信息,并且可以通过查询指定半径范…

数据库的三范式(Normalization)

数据库的三范式(Normalization)是关系数据库设计中的基本理论原则,旨在减少数据冗余和提高数据库的数据组织结构。三范式通过将数据分解为更小的表,并通过关系建立连接,使得数据库设计更加灵活、规范和容易维护。在这篇…