使用Jenkins自动化部署项目

news2024/11/24 17:16:17

Jenkins的同类产品


Jenkins 是一款功能强大的开源持续集成/持续交付 (CI/CD) 工具,但也有一些替代品可供选择,以下是其中一些:

  • Travis CI:Travis CI 是另一款流行的持续集成工具,可与 GitHub 集成,支持多种编程语言。

  • GitLab CI/CD:GitLab CI/CD 是 GitLab 提供的一款集成式 CI/CD 工具,可以与 GitLab 无缝集成,支持多个平台和语言。

  • CircleCI:CircleCI 是一个快速的 CI/CD 工具,它支持多种编程语言和框架,并提供了强大的可视化功能。

  • TeamCity:TeamCity 是一款功能强大的 CI/CD 工具,它具有丰富的功能和易于使用的界面,支持各种构建工具和语言。

  • Bamboo:Bamboo 是 Atlassian 提供的一款可扩展的 CI/CD 工具,它具有易于使用的界面和丰富的插件生态系统,支持多种构建工具和语言。

选择适合自己的 CI/CD 工具取决于个人或团队的需求和偏好,可以根据自己的实际情况选择。




搭建Jenkins服务


Mac上直接 brew install jenkins

alt

启动:

brew services start jenkins

http://localhost:8080/

alt
alt

安装插件:

Jenkins 推荐安装的插件:

Jenkins 是一个强大的持续集成和交付工具,具有可扩展性和可定制性。在安装 Jenkins 时,可以安装许多插件,这些插件可以扩展 Jenkins 的功能。以下是一些 Jenkins 推荐安装的插件:

  • Pipeline:Pipeline 插件允许用户在 Jenkins 上创建和执行 Pipeline,它是 Jenkins 提供的一种可编排、可扩展的方法,可以自动化构建、测试和部署软件。

  • Git:Git 插件允许 Jenkins 与 Git 版本控制系统进行集成,这是许多软件开发项目使用的一种流行的版本控制系统。

  • GitHub:GitHub 插件可以将 Jenkins 与 GitHub 集成,它可以让 Jenkins 在 GitHub 上自动构建、测试和部署代码。

  • Maven Integration:Maven Integration 插件是将 Jenkins 与 Apache Maven 集成的一种方法。Maven 是一个流行的 Java 构建工具,用于自动化构建、测试和部署 Java 应用程序。

  • JUnit:JUnit 插件可以让 Jenkins 集成 JUnit 测试框架,使开发人员能够自动运行单元测试和集成测试,并将测试结果反馈到 Jenkins 上。

  • Docker:Docker 插件可以让 Jenkins 与 Docker 容器集成。它允许开发人员在 Jenkins 上自动构建和部署 Docker 镜像。

  • SSH Agent:SSH Agent 插件允许 Jenkins 通过 SSH 连接到远程服务器,并执行部署操作。

  • Blue Ocean:Blue Ocean 插件是 Jenkins 的一个新用户界面,可以让用户更轻松地创建和管理 Pipeline。

这些插件只是 Jenkins 中可用的众多插件的一小部分,具体插件的选择取决于您的需求和项目要求。

alt

创建第一个管理员用户

alt

实例配置

alt

alt



部署一个Go项目(配置某个分支每次有push,自动拉取最新代码并构建)


想要构建的示例代码:[1]

package main

import (
 "time"

 "github.com/gin-gonic/gin"
)

func main() {
 r := gin.Default()
 r.GET("/ping"func(c *gin.Context) {
  c.JSON(200, gin.H{
   "message""pong" + " 当前时间: " + time.Now().Format("2006-01-02 15:04:05"),
  })
 })
 r.Run(":9000")
}

jenkins中构建任务

alt
alt

输入一个任务名称,选择 freestyle project 点击确定

选择源码管理,使用git

填写github账号和密码

alt

指定要构建的分支(看远程仓库的主分支是master还是main,或者可以选其他分支)

如果使用main分支,此处指定分支就要填写*/main


增加构建步骤选择执行Shell

alt
alt
# shell中写入
go build -o hello
BUILD_ID=DONTKILLME
nohup ./hello &>hello.log &

Jenkins常见问题(1)解决构建完自动杀掉衍生进程问题[2]

点击保存

立即构建

alt
alt
alt

但直接在该目录下执行go build -o hello是可以的

alt

参考 jenkins执行shell命令时,提示“Command not found”处理方法[3]

在shell脚本中新增 source /etc/profile

alt

再次构建

alt

访问 http://localhost:9000/ping

alt

杀死服务: kill -9 $(lsof -i:9000 -t)


推荐将写在Jenkins上面 执行Shell的内容 写入到deploy.sh中,并推动到Github仓库,成为项目的一部分(这个deploy.sh脚本仅用于构建),而后将Jenkins 执行Shell的输入框改为bash ./deploy.sh

这样的话(看起来)离自动化部署就更近了一步(因为可以动态改动deploy.sh中的内容)

不过每次还是需要手动去点击构建


配置Jenkins&Github,每次检测到push就自动构建

配置前要求:

  • 1.Jenkins已经安装Github plugin插件;(如果一开始选的是安装推荐插件 则可忽略这一步,这个默认是安装的)

  • 2.Jenkins服务器已经拥有一个公网IP地址


配置Jenkins的Webhook接收地址: Dashboard--> Manage Jenkins--> Configure System

alt

另外 可以在这里[4]配置管理员邮箱,邮件通知等

记录好webhook的地址: http://127.0.0.1:8080/github-webhook/

在github对应仓库的设置中,配置webhook,填入该地址

alt

可见需要可访问得通的公网地址才可以,内网ip无法回调成功

alt

如果Jenkins是暴露在了公网中,这里配置好后,当向这个仓库推送新代码时,github的webhook会发消息给Jenkins,通知其拉取最新代码并构建。。在此不试了




更多参考:

jenkins部署go程序(自动编译部署)[5]

使用Github的WebHooks实现生产环境代码自动更新[6]

Jenkins 自动化部署[7]

Jenkins实现golang项目远程自动化部署[8]

参考资料

[1]

想要构建的示例代码:: https://github.com/cuishuang/jenkins-go-first/blob/main/hello.go

[2]

Jenkins常见问题(1)解决构建完自动杀掉衍生进程问题: https://blog.csdn.net/ben_na_/article/details/123990413

[3]

jenkins执行shell命令时,提示“Command not found”处理方法: https://blog.csdn.net/qq_29235677/article/details/121416493

[4]

这里: http://localhost:8080/configure

[5]

jenkins部署go程序(自动编译部署): https://juejin.cn/post/6952765925388976165#heading-8

[6]

使用Github的WebHooks实现生产环境代码自动更新: https://cloud.tencent.com/developer/article/1358657

[7]

Jenkins 自动化部署: https://juejin.cn/post/6844903812088463374

[8]

Jenkins实现golang项目远程自动化部署: https://juejin.cn/post/7084071017202581517

本文由 mdnice 多平台发布

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

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

相关文章

国庆前花2个月面过阿里测开岗,要个27K也不过分吧?

背景介绍 美本计算机专业,代码能力一般,之前有过两段实习以及一个学校项目经历。第一份实习是大二暑期在深圳的一家互联网公司做前端开发,第二份实习由于大三暑假回国的时间比较短(小于两个月),于是找的实…

SAP-MM-库存数量查询

想要查看整个工厂下的库存数量,例如普通库存、特殊库存,可以用MB52查看,但是导出的表格 不是ALV格式的,比较难用,而且导出的也不全是特殊库存,普通库存也被导出来了。 例如现在只想导出销售订单库存SE16N&a…

国庆回来面了个阿里拿27k出来的小哥,让我见识到了什么是天花板...

2023年堪称大学生就业最难的一年,应届毕业生人数是1076万。失业率超50%! 但是我观察到一个数据,那就是已经就业的毕业生中,计算机通信等行业最受毕业生欢迎! 计算机IT行业薪资高,平均薪资是文科其他岗位的3…

阿里云使用https获取git地址注意事项

首先是使用账号密码登录阿里云,这个账号可以使用手机号或者第三方账号注册。登录之后去下图所示地方复制 https 地址。进行拉取代码 使用https拉取代码时候,会让你重新输入一个阿里云的账号密码。如果是重新注册的账号,切记需要先去设置一下h…

Unity设计模式——原型模式

原型模式(Prototype)用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节 。 原型类 Prototype: abstract class P…

【python】可视化-绘制带有边权重的无向图

文章目录 需求示例数据代码实现 需求 输入数据表(矩阵),绘制无向图。 示例数据 **示例数据1:**3个特征之间的关系数据 (data1.txt) featuresfeature1feature2feature3feature110.60.8feature20.610.3feature30.80.31 **示例数据2:**4个特…

python matplotlib 显示中文

最近再弄新的服务器,结果上面画图的时候没有中文。 用下面这段代码看一下是不是支持呢? from matplotlib.font_manager import FontManager import subprocess fm FontManager() mat_fonts set(f.name for f in fm.ttflist)print (mat_fonts) output…

[UE虚幻引擎] DTCopyFile 插件说明 – 使用蓝图拷贝复制文件 (Windows)

本插件可以在虚幻引擎中使用蓝图对系统的其他文件进行拷贝复制操作。 1. 节点说明 Async Copy File ​ 异步复制文件 Param Source File : 要复制的源文件的完整路径。Param Target File : 要复制的目标文件的完整路径。Param Force Copy : 如果为true,则如果目标…

ASPICE标准快速掌握「4.3. 工作产品特性表(WPCs)」

注:标注*的通用工作产品并没有在 Automotive SPICE 过程评估模型中使用,但是为了完整性而包含它们。 01-00 【配置项】 通过配置控制所维护的项: 可包括组件、子系统、库、测试用例、编译器、数据、文档、物理媒介和外部接口版本标识得到维护以下关于项的描述应包含: 项的类…

华为云CodeArts Check代码检查插件(Cloud IDE版本)使用指南

CodeArts Check Cloud IDE代码检查插件 感兴趣的小伙伴,可以试试使用我们的CodeCheck代码检查插件:>>>CodeArts Check代码检查插件免费体验 CloudIDE插件市场里,当前CodeCheck代码检查插件是精选插件>>>CodeArts Check代码…

LED灯实验--汇编

asm-led.S .text .global _start _start: /* 1. led灯的初始化 *//* 1.1 使能GPIOE、DPIOF外设控制器的时钟 */ldr r0, 0x50000A28ldr r1, [r0]orr r1, r1, #(0x3 << 4)str r1, [r0]/* 1.2 设置PE10、PE8、PF10引脚为输出模式 */ldr r0, 0x50006000ldr r1, [r0]bic r1,…

Swagger使用详解

目录 一、简介 二、SwaggerTest项目搭建 1. pom.xml 2. entity类 3. controller层 三、基本使用 1. 导入相关依赖 2. 编写配置文件 2.1 配置基本信息 2.2 配置接口信息 2.3 配置分组信息 2.3.1 分组名修改 2.3.2 设置多个分组 四、常用注解使用 1. ApiModel 2.A…

除静电离子风蛇的工作原理及应用

静电离子风蛇是一种通过产生大量负离子来中和空气中的静电荷的设备。它们通常用于防止静电对电子设备、印刷机、加工机等工业设备造成损害。 静电离子风蛇的工作原理是通过电离器将空气中的氧气分子转化为氧离子&#xff0c;然后将这些氧离子释放到空气中。这些氧离子会与空气…

竞赛选题 机器学习股票大数据量化分析与预测系统 - python 竞赛选题

文章目录 0 前言1 课题背景2 实现效果UI界面设计web预测界面RSRS选股界面 3 软件架构4 工具介绍Flask框架MySQL数据库LSTM 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 机器学习股票大数据量化分析与预测系统 该项目较为新颖&am…

WIN10 NPM的安装

引言&#xff1a; 什么是node.js? javaScript是一门脚本语言&#xff0c;通常被用来编写、执行本地源代码。脚本语言需要一个解析器才能运行&#xff0c;HTML文件中的JavaScript代码由浏览器解析执行。而自行执行JavaScript代码则需要Node.js解析器才能运行。 每个解析器都…

Zabbix监控系统与部署添加 zabbix 客户端主机

目录 1 添加 zabbix 客户端主机 1.1 服务端和客户端都配置时间同步 1.2 设置 zabbix 的下载源&#xff0c;安装 zabbix-agent2 1.3 修改 agent2 配置文件 1.4 在服务端验证 zabbix-agent2 的连通性 1.5 在 Web 页面中添加 agent 主机 1 添加 zabbix 客户端主机 systemctl…

SpringCloud之Stream框架集成RocketMQ消息中间件

Spring Cloud Stream 是一个用来为微服务应用构建消息驱动能力的框架。它可以基于 Spring Boot 来创建独立的、可用于生产的 Spring 应用程序。Spring Cloud Stream 为一些供应商的消息中间件产品提供了个性化的自动化配置实现&#xff0c;并引入了发布-订阅、消费组、分区这三…

Jenkins配置钉钉通知

Jenkins 作为最流行的开源持续集成平台&#xff0c;其强大的拓展功能一直备受测试人员及开发人员的青睐。大家都知道我们可以在 Jenkins 中安装 Email 插件支持构建之后通过邮件将结果及时通知到相关人员。 但其实 Jenkins 还可以支持钉钉消息通知&#xff0c;其主要通过 Ding…

Android原生实现控件阴影方案(API28及以上)

Android控件的阴影效果的实现方式有很多种&#xff0c;这里介绍一下另一种Android原生的阴影实现方案&#xff08;API28及以上&#xff09;。 我们利用elevation、outlineAmbientShowColor、outlineSpotShadowColor来实现一个带阴影的Button。 实现效果如下图&#xff0c;阴影宽…

第0章 前言

大家好&#xff0c;我叫 Rick Blyth&#xff0c;我是一名软件开发人员、企业家、创始人、博主和父亲 &#x1f44b; 几年前&#xff0c;在成功构建和扩展了一些自筹资金的 Micro SaaS&#xff08;微型 SaaS&#xff09; 应用后&#xff0c;我放弃了&#xff08;薪水不错但很糟…