如何通过Jenkins进行自动化构建项目

news2025/5/28 3:46:21

1. 介绍

        Jenkins 是一个开源的持续集成(CI)和持续交付(CD)工具,旨在自动化软件开发过程中的构建、测试和部署。它是一个基于 Java 编写的自动化服务器,在软件开发生命周期的各个阶段提供自动化支持。

官方文档:Jenkins 用户手册

Jenkins 是一个流行的持续集成和持续交付工具,它具有许多优势,使其成为开发团队的首选工具之一。以下是 Jenkins 的一些优势:

  • 开源和免费: Jenkins 是开源软件,免费提供给用户使用。这使得任何人都可以自由地使用和定制 Jenkins,而不需要支付额外的费用。

  • 可扩展性: Jenkins 提供了丰富的插件生态系统,用户可以根据自己的需求选择和安装不同的插件。这使得 Jenkins 可以灵活地扩展和定制,满足各种不同项目的需求。

  • 易于配置和使用: Jenkins 提供了直观的用户界面和简单的配置选项,使得用户可以轻松地创建和配置自动化构建任务。无论是新手还是有经验的用户都可以快速上手,并且能够灵活地配置各种不同的构建环境。

  • 持续集成: Jenkins 提供了持续集成功能,可以在代码提交后自动触发构建和测试,帮助开发团队及时发现和修复问题,保证代码的稳定性和质量。持续集成还可以加快软件交付的速度,提高开发效率。

  • 持续交付: Jenkins 支持持续交付功能,可以自动化执行构建、测试、部署等步骤,从而实现快速、可靠地交付软件。持续交付可以减少人工操作和人为错误,提高软件交付的质量和可靠性。

  • 大型社区支持: Jenkins 拥有庞大的用户社区和活跃的开发者社区,用户可以在社区中获取到丰富的教程、文档和解决方案。社区也提供了大量的插件和扩展,为用户提供了更多的选择和可能性。

  • 跨平台支持: Jenkins 支持在各种不同的操作系统和平台上运行,包括 Windows、Linux、Mac 等。无论是个人开发者还是企业团队,都可以在自己喜欢的平台上使用 Jenkins 进行自动化构建和持续集成。

2. Jenkins 安装

我这里以docker安装方式进行演示,其他方式安装请按照官网文档进行操作。

下载地址:Jenkins download and deployment

docker方式安装
#拉取镜像
docker pull jenkins/jenkins

#运行镜像
docker run -d -p 8080:8080 -p 50000:50000 jenkins/jenkins
docker-compose方式安装

创建docker-compose.yml文件并写入下面内容

version: '3'

services:
  jenkins:
    container_name: jenkins
    image: jenkins/jenkins
    ports:
      - "8080:8080"
      - "50000:50000"
    volumes:
      - jenkins_home:/var/jenkins_home
    restart: unless-stopped

执行命令启动:

# 拉取并启动容器
docker-compose up  -d
# 查看dokcer运行中的服务
docker ps 
# 查看容器日志
docker logs -f 容器id

完成上面操作后

访问 Jenkins

打开浏览器并访问 http://服务器地址:8080会看到如下界面

设置 Jenkins

首次访问 Jenkins 时,要求输入初始管理员密码。要获取密码,在终端中运行以下命令:

docker logs -f 你的jenkins容器id

安装推荐的插件

 配置用户

3. 创建一个新的 Jenkins 作业

New Item介绍

Freestyle project(自由风格项目):这个选项允许用户创建一个自定义的项目,可以执行任何任务,无论是构建、测试、部署还是其他工作。
Pipeline(流水线项目):这个选项允许用户创建一个Jenkins Pipeline,在Pipeline中定义了一系列流程和任务,可以自动化构建、测试、打包、发布和部署过程。
Multibranch Pipeline(多分支流水线项目):这个选项可以创建一个多分支Pipeline项目,同时支持不同的分支构建和测试。
Folder:文件夹,用于组织和管理 Jenkins 中的多个项目


新建Item,输入工程的名称(例如 My Pipeline) ,选择多分支流水线(Multibranch Pipeline),确定

会进入到新建Item的Configuration(配置),点击增加源(Add Source),选择您想要使用的仓库类型并填写详细信息.

执行构建

查看日志

安装maven插件

配置maven和jdk

编译打包

构建 --> 添加构建步骤 --> Executor Shell
返回刚才的项目,添加配置

echo "开始编译和打包"
mvn clean package
echo "编译和打包结束"

新增参数化构建过程,使用JDK1.8编译

4. 设置源码管理

在源码管理设置模块,选择Git,然后输入Gitee项目仓库地址,如下图:

5. 设置构建触发器

  • 配置触发器,例如定时构建、代码提交时构建等。

6. 构建步骤

  • 配置构建的具体步骤,如编译、打包、测试等。

继续往下翻,POST Steps 处,勾选 Run regardless of build result,然后添加构建步骤(Add post-build step),选择执行Windows批处理命令(Execute Windows batch command),然后输入下面内容:

最后点击【保存】按钮,然后开始构建: 

查看编译日志4 

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

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

相关文章

ARM服务器部署Kafka集群

安装前必备的条件是: (1)安装jdk(提供环境); (2)安装zookeeper(注册kafka信息); 需要这方面信息的可以查看我之前写的文档; 一.下载安装包 Kafka官网下载地址 Apache Kafka 根据自己需要下载相应的版本 目前最新的版本是3.6.1。 二.解压安装包 服务器上传下载好的kafk…

MIT6.S081学习——二、相关命令行整理

MIT6.S081学习——二、相关命令行整理 1 添加user代码到xv6中并编译2 git版本管理 1 添加user代码到xv6中并编译 问题:如何让在xv6中运行copy.c 答:在xv6中运行copy.c文件,你需要先将该文件添加到xv6源代码目录中,然后修改Makefil…

备战蓝桥杯---动态规划(应用3之空间优化)

话不多说,直接看题: 我们不妨把问题抽象一下: 首先,我们由裴蜀定理知道如果两个数互质,那么axbyc一定有整数解(只要c为1的倍数也就是整数),因此问题就转换为求选一些数使他们gcd1&a…

240Hz高刷电竞显示器 - HKC VG253KM

🎉🎉🎉 各位电竞爱好者们,今天给大家带来一款神秘武器,一款能够让你在游戏中大展拳脚的高刷电竞显示器 - HKC VG253KM!🔥🔥🔥 这款显示器,哎呀,真…

windows前后端项目部署

装好windows虚拟机 1.远程连接 计算机右击属性,高级防火墙设置,远程连接服务允许 2.安装jdk,tomcat,解压工具 把安装包拖进去 双击安装解压软件 jdk安装 双击安装 配置环境变量(复制jdk路径) 计算机右击属性高级…

Unity 2021.3发布WebGL设置以及nginx的配置

使用unity2021.3发布webgl 使用Unity制作好项目之后建议进行代码清理,这样会即将不用的命名空间去除,不然一会在发布的时候有些命名空间webgl会报错。 平台转换 将平台设置为webgl 设置色彩空间压缩方式 Compression Format 设置为DisabledDecompre…

Linux学习方法-框架学习法——Linux驱动架构的演进

配套视频学习链接:https://www.bilibili.com/video/BV1HE411w7by?p4&vd_sourced488bc722b90657aaa06a1e8647eddfc 目录 Linux驱动演进的过程 Linux驱动的原始架构(Linux V2.4) 平台总线架构(platform) Linux设备树 Linux驱动演进的趋势 Linux驱动演进的过程…

python 3.7.3的安装

参考 Linux安装Python3.7-良许Linux教程网 (lxlinux.net) 1、Index of /ftp/python/3.7.9/ 1、安装gcc,yum -y install gcc 2、 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel…

Redis篇之缓存雪崩、击穿、穿透详解

学习材料:https://xiaolincoding.com/redis/cluster/cache_problem.html 缓存雪崩 什么是缓存雪崩 在面对业务量较大的查询场景时,会把数据库中的数据缓存至redis中,避免大量的读写请求同时访问mysql客户端导致系统崩溃。这种情况下&#x…

【前端素材】推荐优质后台管理系统Frest平台模板(附源码)

一、需求分析 定义 后台管理系统是一种用于管理和控制网站、应用程序或系统后台操作的软件工具,通常由授权用户(如管理员、编辑人员等)使用。它提供了一种用户友好的方式来管理网站或应用程序的内容、用户、数据等方面的操作,并…

【SpringCloudAlibaba系列--OpenFeign组件】OpenFeign的配置、使用与测试以及OpenFeign的负载均衡

步骤一 准备两个服务,provider和consumer 本文使用kotlin语言 provider是服务的提供者,由provider连接数据库 RestController RequiredArgsConstructor RequestMapping("/provider/depart") class DepartController(private val departServ…

使用Postman和JMeter进行signature签名

一、前言 ​ 有些接口的请求会带上sign(签名)进行请求,各接口对sign的签名内容、方式可能不一样,但一般都是从接口的入参中选择部分内容组成一个字符串,然后再进行签名操作, 将结果赋值给sign; 完整规范的接口文档都会…

对Redis锁延期的一些讨论与思考

上一篇文章提到使用针对不同的业务场景如何合理使用Redis分布式锁,并引入了一个新的问题 若定义锁的过期时间是10s,此时A线程获取了锁然后执行业务代码,但是业务代码消耗时间花费了15s。这就会导致A线程还没有执行完业务代码,A线程…

C++案例->评委打分、员工分组

#include<iostream> using namespace std; #include<vector> #include<string> #include<deque> #include<algorithm> #include<ctime> /* 有5名选手&#xff1a;选手ABCDE&#xff0c;10个评委分别对每一名选手打分&#xff0c;去除最高分…

ACL权限管理

一&#xff0c;简介 ACL是Access Control List的缩写&#xff0c;即访问控制列表。可以通过下列的实例来理解ACL的作用&#xff1a; 二&#xff0c;操作步骤 1. 添加测试目录&#xff0c;用户&#xff0c;组&#xff0c;并将用户添加到组&#xff08;创建zs,ls添加到tgroup组中…

STM32F103x 的时钟源

AHB (Advanced High-performance Bus) 高速总线&#xff0c;用来接高速外设的。 APB (Advanced Peripheral Bus) 低速总线&#xff0c;用来接低速外设的&#xff0c;包含APB1 和 APB2。 APB1&#xff1a;上面连接的是低速外设&#xff0c;包括电源接口、备份接口、 CAN 、 US…

爬取m3u8视频

网址&#xff1a;https://www.bhlsm.com/cupfoxplay/609-3-1/ 相关代码&#xff1a; #采集网址&#xff1a;https://www.bhlsm.com/cupfoxplay/609-3-1/ #正常视频网站&#xff1a;完整视频内容 # pip install pycryptodomex #流媒体文件&#xff1a;M3U8&#xff08;把完整的…

计网运输层

文章目录&#xff1a; 文章目录 概述运输层端口号、复用与分用UDP与TCP对比UDPTCP流量控制拥塞控制拥塞控制算法慢开始(slow-start)拥塞避免(congestion avoidance)快重传(fast retransmit)快恢复(fast recovery) 超时重传时间选择可靠传输实现运输连接管理建立连接连接释放 首…

台式电脑黑屏无法开机怎么办 电脑开机黑屏的解决方法

经常有朋友电脑一开机&#xff0c;发现电脑黑屏没法用了。很多人看到黑屏就懵了&#xff0c;以为电脑要报废了&#xff0c;这是什么原因?电脑开机黑屏怎么解决?一般常说的黑屏故障分为两种&#xff0c;显示屏没有任何显示以及显示英文。下面小编要为大家带来的是台式电脑黑屏…

HTMLElement.click()的回调触发踩坑

先看看以下代码 const el document.getElementById("btn") el.addEventListener("click", () > {Promise.resolve().then(() > console.log("microtask 1"));console.log("1"); }); el.addEventListener("click", (…