十二.Jenkins持续集成

十二.Jenkins持续集成

一.安装jenkins

1.下载

Jenkins下载地址:http://jenkins-ci.org/ 或 https://mirrors.jenkins-ci.org/redhat/

2.安装

可以通过官网的安装方式来安装

在这里插入图片描述

安装完后,需要修改以下的配置

vim /usr/lib/systemd/system/jenkins.service

如果对权限不熟的话,把用户改成root,如下所示

在这里插入图片描述

修改Jenkins的端口

在这里插入图片描述

修改用如下命令启动

systemctl start jenkins
二.上传到运行服务器
2.1jenkins的构建流程

在这里插入图片描述

2.2安装jenkins的常用插件
2.2.1汉化

在这里插入图片描述

2.2.2GIT和SSH

在这里插入图片描述

在这里插入图片描述

2.3通过freestyle构建项目

点击Jenkins上面的新建任务,输入名称,然后选中Freestyle project,如下图所示

在这里插入图片描述

在凭证管理页面中,点击“全局”或“系统”选项卡,根据需要选择要添加凭证的范围。

接着,点击“添加凭证”按钮,选择要添加的凭证类型,例如SSH用户名和密码、Git令牌等。

在这里插入图片描述

注意:ssh配置中Remote Directory是目标服务器后进入的目录,我设置为了/jenkis_data
注意:在Jenkins中添加凭证时,请注意保护您的凭证信息,不要将其暴露在公共场合。同时,及时删除不再使用的凭证,以免造成潜在的安全隐患。

配置Freestyle项目

在Freestyle项目的配置界面中,有多个选项可以配置。以下是一些常用的配置选项

在这里插入图片描述

源代码管理:选择版本控制系统(例如Git、Subversion、Mercurial等),并填写仓库地址和认证信息。
构建触发器:定义何时触发构建操作,例如定期触发、代码提交触发、另一个项目构建完成触发等。
构建环境:定义构建环境,例如构建所需的JDK版本、构建参数、构建工具等。
构建步骤:定义构建操作的步骤,例如构建命令、测试命令、静态分析命令等。
构建后操作:定义构建完成后的操作,例如发送邮件、上传构建产物、部署应用程序等。
根据项目的需求,选择需要配置的选项,填写相应的信息即可。

保存配置

执行构建

在这里插入图片描述

可以能过控制台查看构建后的结果

Started by user job1
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/gin_test
Selected Git installation does not exist. Using Default
The recommended git tool is: NONE
using credential gitee-user-pass> git rev-parse --resolve-git-dir /var/lib/jenkins/workspace/gin_test/.git # timeout=10
Fetching changes from the remote Git repository> git config remote.origin.url https://gitee.com/lisus2000/gin_test.git # timeout=10
Fetching upstream changes from https://gitee.com/lisus2000/gin_test.git> git --version # timeout=10> git --version # 'git version 1.8.3.1'
using GIT_ASKPASS to set credentials gitee的用户名和密码> git fetch --tags --progress https://gitee.com/lisus2000/gin_test.git +refs/heads/*:refs/remotes/origin/* # timeout=10> git rev-parse refs/remotes/origin/master^{commit} # timeout=10
Checking out Revision 4cb9fc717b649a1917aca1f20803a9e4eecd848d (refs/remotes/origin/master)> git config core.sparsecheckout # timeout=10> git checkout -f 4cb9fc717b649a1917aca1f20803a9e4eecd848d # timeout=10
Commit message: "add target/readme.txt."> git rev-list --no-walk 4cb9fc717b649a1917aca1f20803a9e4eecd848d # timeout=10
[gin_test] $ /bin/sh -xe /tmp/jenkins5019030023922432660.sh
+ echo 开始构建
开始构建
+ echo 结束构建
结束构建
SSH: Connecting from host [localhost.localdomain]
SSH: Connecting with configuration [192.168.66.129] ...
SSH: EXEC: completed after 201 ms
SSH: Disconnecting configuration [192.168.66.129] ...
SSH: Transferred 2 file(s)
Triggering a new build of pipeline_test #10
Finished: SUCCESS
2.4将构建服务器上的代码上传到服务器

点击构建后操作,选择 Send build artifacts over SSH

在这里插入图片描述

在这里插入图片描述

在这之前要先添加好SSH的配置,在这个路径下,找到SSH Servers后,点周新增,添加远程主机名称和密码

在这里插入图片描述

然后重新点击构建,就会把内从上传到远服务器上了,这里经192.168.66.130,192.168.66.129(远程),构建完后的结果如下

192.168.66.130的jenkis工作目录如下

在这里插入图片描述

192.168.66.129的目录如下

在这里插入图片描述

就可以看到相应的结果了。

三.通过pipeline实现持续集成

Jenkins Pipeline是一种脚本化的工作流程,它可以通过代码来定义构建过程,包括构建、测试、部署等步骤。通过使用Pipeline,您可以将整个构建过程自动化,并将其保存在源代码控制库中,以便进行版本控制和追踪更改历史。

这比界面化操作带来的好处很多,比如jenkins挂掉了 我要进行修改和新增操作 这是使用pipeline会完成。如果在构建配置的时候jenkins挂掉了 界面化的操作配置会直接没了,pipeline就可以使用代码进行保存

把所有功能代码化后期存储和维护更加方便

3.1安装pipeline插件

在这里插入图片描述

3.2新建一个流水线

在这里插入图片描述

3.3Jenkins Pipeline参数
管理文档:https://www.jenkins.io/zh/doc/pipeline/tour/hello-world/

流水线的代码如下

pipeline {agent anystages {stage('pull code') {steps {git credentialsId: 'gitee-user-pass', url: 'https://gitee.com/lisus2000/gin_test.git'}}stage('build goproject') {steps {sh '''echo "开始构建"echo "结束构建"'''}}stage('deploy goproject') {steps {sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.66.129', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'echo "success"', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'gin_test/', remoteDirectorySDF: false, removePrefix: '', sourceFiles: 'target/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])}}}
}

每一个state都是一个操作

如果不懂流水线语法的话,可以点击查

在这里插入图片描述

这里面有各种各样的语法,可参考

在这里插入图片描述

流水线写完好,点击保存,然后点击构建,构建后的结果如下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四.通过jenkinsfile管理构建pipeline脚本

使用Jenkinsfile来管理构建Pipeline脚本有许多好处,其中一些包括:

管理代码版本:Jenkinsfile可以存储在代码版本控制系统中,因此您可以将Pipeline脚本与应用程序代码一起管理,从而使得管理代码变得更加容易。

可重复性:使用Jenkinsfile可以确保每次构建都具有相同的设置和步骤,从而提高构建的可重复性。这是因为Jenkinsfile是一个文本文件,可以轻松地跟踪和管理。

可维护性:将Pipeline脚本与应用程序代码一起管理可以使其更易于维护。这是因为您可以使用与应用程序相同的工具和流程来管理Jenkinsfile。

更好的可视化:使用Jenkinsfile可以提供更好的可视化功能,因为您可以将整个Pipeline脚本作为代码存储,从而使得整个流程更加透明和易于理解。

可编程性:Jenkinsfile是基于Groovy编写的,这意味着您可以使用编程语言的所有功能来编写Pipeline脚本。这为您提供了更多的灵活性和自定义选项。

持续交付:Jenkinsfile使得自动化持续交付变得更加容易,因为您可以使用Jenkinsfile来定义整个CI/CD Pipeline,从代码检查到测试和部署。

总之,使用Jenkinsfile管理构建Pipeline脚本可以使您的构建过程更加可重复、可维护和可视化,并提供更多的灵活性和自定义选项,以实现自动化持续交付。

仓库新建Jenkinsfile文件

把Groovy语法复制到这里

在这里插入图片描述

修改流水线配置

流水线定义选择Pipeline script form SCM
在这里插入图片描述
在这里插入图片描述

定时构建和轮询SCM构建
定时构建和轮询SCM构建是Jenkins中两种不同的构建触发方式。

定时构建:Jenkins中的定时构建是指在指定的时间执行构建操作。您可以在Jenkins的构建配置中设置一个时间表,例如每天晚上10点或每个星期五上午8点,以触发构建操作。这种方式通常用于定期构建或者需要按照时间表进行构建的情况。

轮询SCM构建:Jenkins中的轮询SCM构建是指在一定时间间隔内轮询代码版本控制系统中是否有代码变更,并在检测到变更时触发构建操作。您可以在Jenkins的构建配置中设置轮询间隔和代码版本控制系统的位置,例如每分钟检查一次Git代码库中是否有代码变更。这种方式通常用于需要及时构建并测试新代码的情况。

在选择构建触发方式时,您需要根据自己的需求和构建场景来选择适合的方式。如果您需要按照特定时间表执行构建操作,则应使用定时构建。如果您需要及时检查并构建最新代码,则应使用轮询SCM构建。

五.通过jenkins部署go和vue
5.1构建Vue

构建之前要先安装好node,npm

流水线的定义如下

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

Jenkinsfile的内容如下:

pipeline {agent anystages {stage('pull code') {steps {git credentialsId: 'gitee-user-pass', url: 'https://gitee.com/lisus2000/mxshop_vue.git'}}stage('build project') {steps {sh '''echo "运行 cnpm install"npm installecho "运行 cnpm run build"npm run buildecho "构建成功"'''}}stage('deploy code') {steps {sshPublisher(publishers: [sshPublisherDesc(configName: '192.168.66.129-root', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'echo "success"', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: 'docker/nginx/data/html', remoteDirectorySDF: false, removePrefix: 'dist', sourceFiles: 'dist/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])}}}
}
5.2构建GO

这里采用的自由风格,具体的内容如下

在这里插入图片描述

构建环境,采用shell
在这里插入图片描述

构建后的操作
在这里插入图片描述


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

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

相关文章

git常用命令和参数有哪些?【git看这一篇就够了】

文章目录 前言常用命令有哪些git速查表奉上常用参数后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:git操作相关 🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出…

Git企业开发级讲解(五)

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、bug 分⽀二、删除临时分支三、小结 一、bug 分⽀ 假如我们现在正在 dev2 分⽀上进⾏开发…

AI Navigation导航系统_unity基础开发教程

AI Navigation导航系统 安装插件烘焙导航系统障碍物创建人物的AI导航动态障碍物 在unity编辑器中,有一个灰常好用的插件:Navigation。有了它1,你就可以实现人物自动走到你鼠标点击的位置,而且还会自动避开障碍物,下面就…

第7天:信息打点-资产泄漏amp;CMS识别amp;Git监控amp;SVNamp;DS_Storeamp;备份

第7天:信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份 知识点: 一、cms指纹识别获取方式 网上开源的程序,得到名字就可以搜索直接获取到源码。 cms在线识别: CMS识别:https://www.yun…

quickapp_快应用_tabBar

tabBar 配置项中配置tabBar(版本兼容)使用tabs组件配置tabBar语法示例问题-切换tab没有反应问题-数据渲染问题解决优化 问题-tab的动态配置 第三方组件tabbar 一般首页都会显示几个tab用于进行页面切换,以下是几种tab配置方式。 配置项中配置tabBar(版本兼容) 在m…

系列五、怎么查看默认的垃圾收集器是哪个?

一、怎么查看默认的垃圾收集器是哪个 java -XX:PrintCommandLineFlags -version

wpf devexpress 创建布局

模板解决方案 例子是一个演示连接数据库连接程序。打开RegistrationForm.BaseProject项目和如下步骤 RegistrationForm.Lesson1 项目包含结果 审查Form设计 使用LayoutControl套件创建混合控件和布局 LayoutControl套件包含三个主控件: LayoutControl - 根布局…

【Go入门】 Go搭建一个Web服务器

【Go入门】 Go搭建一个Web服务器 前面小节已经介绍了Web是基于http协议的一个服务,Go语言里面提供了一个完善的net/http包,通过http包可以很方便的搭建起来一个可以运行的Web服务。同时使用这个包能很简单地对Web的路由,静态文件&#xff0c…

【力扣】从零开始的动态规划

【力扣】从零开始的动态规划 文章目录 【力扣】从零开始的动态规划开头139. 单词拆分解题思路 45. 跳跃游戏 II解题思路 5. 最长回文子串解题思路 1143. 最长公共子序列解题思路 931. 下降路径最小和解题思路 开头 本力扣题解用5题来引出动态规划的解题步骤,用于本…

Android图片涂鸦,Kotlin(1)

Android图片涂鸦,Kotlin(1) import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Path import android.graphics.PointF import android.…

UE4动作游戏实例RPG Action解析三:实现效果,三连击Combo,射线检测,显示血条,火球术

一、三连Combo 实现武器三连击,要求: 1.下一段Combo可以随机选择, 2.在一定的时机才能再次检测输入 3. 等当前片段播放完才播放下一片段 1.1、蒙太奇设置 通过右键-新建蒙太奇片段,在蒙太奇里创建三个片段,并且移除相关连接,这样默认只会播放第一个片段 不同片段播…

图像分类(六) 全面解读复现MobileNetV1-V3

MobileNetV1 前言 MobileNetV1网络是谷歌团队在2017年提出的,专注于移动端和嵌入设备的轻量级CNN网络,相比于传统的神经网络,在准确率小幅度降低的前提下大大减少模型的参数与运算量。相比于VGG16准确率减少0.9%,但模型的参数只…

基于Vue+SpringBoot的大病保险管理系统 开源项目

项目编号: S 031 ,文末获取源码。 \color{red}{项目编号:S031,文末获取源码。} 项目编号:S031,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统配置维护2.2 系统参保管理2.3 大…

SDUT OJ《算法分析与设计》搜索算法

A - 子集和问题 Description 子集和问题的一个实例为〈S,t〉。其中,S{ x1 , x2 ,…,xn }是一个正整数的集合,c是一个正整数。子集和问题判定是否存在S的一个子集S1,使得: 。 试设计一个解子…

坐标系下的运动旋量转换

坐标系下的运动旋量转换 文章目录 坐标系下的运动旋量转换前言一、运动旋量物体运动旋量空间运动旋量 二、伴随变换矩阵三、坐标系下运动旋量的转换四、力旋量五、总结参考资料 前言 对于刚体而言,其角速度可以写为 ω ^ θ ˙ \hat {\omega} \dot \theta ω^θ˙&…

Pytorch torch.exp()的使用举例

代码实验展示: Microsoft Windows [版本 10.0.18363.1256] (c) 2019 Microsoft Corporation。保留所有权利。C:\Users\chenxuqi>conda activate ssd4pytorch1_2_0(ssd4pytorch1_2_0) C:\Users\chenxuqi>python Python 3.7.7 (default, May 6 2020, 11:45:54) [MSC v.191…

STL总结

STL vector 头文件<vector> 初始化,定义,定义长度&#xff0c;定义长度并且赋值&#xff0c;从数组中获取数据返回元素个数size()判断是否为空empty()返回第一个元素front()返回最后一个数back()删除最后一个数pop_back()插入push_back(x)清空clear()begin()end()使用s…

SQL SERVER 2008安装教程

SQL SERVER 2008安装教程 本篇文章介绍了安装SQL Server 2008企业版的软硬件配置要求&#xff0c;安装过程的详细步骤&#xff0c;以及需要注意的事项。 安装步骤 (1). 在安装文件setup.exe上&#xff0c;单击鼠标右键选择“以管理员的身份运行”&#xff0c;如下图所示&#…

皮肤性病科专家谭巍主任提出HPV转阴后饮食七点建议

HPV转阴是每一位感染者都期盼的&#xff0c;因为转阴所以健康&#xff0c;只有转为阴性才意味着不具备传染性&#xff0c;从此也不必再害怕将病毒传染给家人的风险&#xff0c;也不必再担忧持续感染而引发的健康风险。总之&#xff0c;HPV转阴是预示感染者恢复健康与否的主要标…

《洛谷深入浅出进阶篇》P1995 程序自动分析——并查集,离散化

上链接&#xff1a;P1955 [NOI2015] 程序自动分析 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P1955 上题干&#xff1a; 首先给你一个整数t&#xff0c;代表t次操作。 每一次操作包含以下内容&#xff1a; 1.给你一个整数n&#xff0c;让…