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

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.mfbz.cn/a/422583.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c语言经典测试题10

1.题1 int fun( int x) {int n 0;while (x 1){n;x x | (x 1);}return n; } int main() {int ret fun(2014);printf("%d", ret);return 0; } 上述代码运行结果是什么呢? 我们来分析一下:这里的fun函数有一个while循环,其判断…

改造小技巧:如何将客厅与阳台完美连通?福州中宅装饰,福州装修

问1:什么户型结构更适合客厅打通阳台? 一般来说,现代、简约或者开放式的户型结构更适合将客厅与阳台打通。这样可以通过移除非承重墙来增加室内采光和空间感。需要注意的是,在打通之前,需要考虑房屋的结构和承重墙的位…

Qt下使用modbus-c库实现PLC线圈/保持寄存器的读写

系列文章目录 提示:这里是该系列文章的所有文章的目录 第一章:Qt下使用ModbusTcp通信协议进行PLC线圈/保持寄存器的读写(32位有符号数) 第二章:Qt下使用modbus-c库实现PLC线圈/保持寄存器的读写 文章目录 系列文章目录…

【活动】前端世界的“祖传代码”探秘:从古老魔法到现代重构

作为一名前端工程师,我时常在项目中邂逅那些被岁月打磨过的“祖传代码”。它们就像古老的魔法书页,用HTML标签堆砌起的城堡、CSS样式表中的炼金术,以及JavaScript早期版本中舞动的符咒。这些代码承载着先驱们的探索精神和独特智慧&#xff0c…

内网信息搜集

目录 内网基础知识 基本流程图 怎么判断是否在域内 常规信息类收集-应用&服务&权限等 cs信息搜集 bloodhound安装及使用 内网基础知识 工作组:将不同的计算机按照功能分别列入不同的组,想要访问某个部门的资源,只要在【网络】里…

种地,成了“糊咖”最好的医美

在《种地吧,少年》(后简称《种地吧》)第二季上线后,这部综艺开启了在骨朵、猫眼、灯塔、艺恩各大综艺榜单的持续霸榜。上线至今,有一半的时间占据在日榜单热度TOP1的位置。 根据灯塔专业版数据显示,《种地…

《TCP/IP详解 卷一》第8章 ICMPv4 和 ICMPv6

目录 8.1 引言 8.1.1 在IPv4和IPv6中的封装 8.2 ICMP 报文 8.2.1 ICMPv4 报文 8.2.2 ICMPv6 报文 8.2.3 处理ICMP报文 8.3 ICMP差错报文 8.3.1 扩展的ICMP和多部报文 8.3.2 目的不可达和数据包太大 8.3.3 重定向 8.3.4 ICMP 超时 8.3.5 参数问题 8.4 ICMP查询/信息…

selenium爬虫

方法选择和安装包 在动态网页并且登陆过程中不需要进行过于复杂的密码验证的时候使用selenium会非常的方便 安装准备过程也相对简单: 下载对应版本的chromedriver并且通过如下代码找到路径下载到python所在的目录: import sysprint(sys.executable) …

Bert-as-service 学习

pip3 install --user --upgrade tensorflow 安装遇到的问题如下: pip3 install --user --upgrade tensorflow 1052 pip uninstall protobuf 1053 pip3 uninstall protobuf 1054 pip3 install protobuf3.20.* 1055 pip3 install open-clip-torch2.8.2 1…

C++/数据结构:AVL树

目录 一、AVL树的概念 二、AVL树的实现 2.1节点定义 2.2节点插入 三、AVL树的旋转 3.1新节点插入较高左子树的左侧:右单旋 3.2新节点插入较高右子树的右侧:左单旋 3.3新节点插入较高左子树的右侧---左右:先左单旋再右单旋 3.4新节点插…

数据结构篇十:红黑树

文章目录 前言1. 红黑树的概念2. 红黑树的性质3. 红黑树节点的定义4. 红黑树的插入4.1 情况一: cur为红,p为红,g为黑,u存在且为红4.2 情况二: cur为红,p为红,g为黑,u不存在/u存在且为黑。4.2.1 …

C++:内存管理|new和delete

创作不易,感谢三连支持! 一、内存分布 为什么需要内存管理呢??因为我们在程序的运行过程中会需要各种各样的数据,而我们根据数据的不同存储在不同的区域里面,是为了更高效地处理数据。而C语言相比Java来说…

Docker与虚拟机比较

在对比Docker和虚拟机前,先简单了解下虚拟化,明确Docker和虚拟机分别对应的虚拟化级别,然后对Docker和虚拟机进行比较。需要注意的是,Docker和虚拟机并没有什么可比性,而是Docker使用的容器技术和虚拟机使用的虚拟化技…

Linux 基础之 sar 工具详解

文章目录 一、前言二、配置说明三、使用说明(一)sar语法(二)sar选项(三)示例示例1示例2示例3示例4示例5示例6示例7示例8示例9示例10其他示例11其他示例12用于排查性能常用的命令 一、前言 sar(System Acti…

【无标题】TMGM官网平台切尔西足球俱乐部合作

TMGM作为一家在三大洲均设有办事处的行业领导者,TMGM 被视为可靠的差价合约交易提供商,其重点是监管合规、技术创新与他联系➕🛰️TMGM818卓越的客户服务。 切尔西足球俱乐部在亚太地区拥有庞大的球迷群体,并在该地区建立了多种亚…

Java中==与equals()的区别

关于“对比”类型的面试题,建议回答时包括: 多个对比项有什么相同/相似之处 多个对比项的区别 在应用中应该如何选取 可能的话,加入一些扩展。 变量与对象是2个不同的概念 Object a = new Object(); 以上代码中的a就是变量,在内存中实际存在的数据就是对象。 所有引…

五大跨平台桌面应用开发框架:Electron、Tauri、Flutter等

hello,我是贝格前端工场,本次介绍跨平台开发的框架,欢迎大家评论、点赞。 一、什么是跨平台桌面应用开发框架 跨平台桌面应用开发框架是一种工具或框架,它允许开发者使用一种统一的代码库或语言来创建能够在多个操作系统上运行的…

使用 frp 实现 windows 远程

前提条件: 拥有一台公网 ip 的服务器; 被远程控制的 windows 系统为专业版(家庭版的其它方式没有尝试过); frp 下载包及使用说明 frp release 包的下载网址:https://github.com/fatedier/frp/releases 中…

人工智能基础——模型部分:模型介绍、模型训练和模型微调 !!

文章目录 前言 一、什么是模型 二、什么是模型训练 三、什么是模型微调 前言 本文将从什么是模型?什么是模型训练?什么是模型微调?三个问题,来展开介绍人工智能基础的模型部分。 模型族谱 一、什么是模型 模型是一个函数&#x…

set和multiset

1. set基本概念 简介: 所有元素都会在插入时自动被排序 本质: set/multiset属于关联式容器,底层结构是用二叉树实现。 set和multiset区别: set不允许容器中有重复的元素 multiset允许容器中有重复的元素 2. set构造和赋值 功能描述…