十二.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 any

    stages {
        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 any

    stages {
        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 install
                echo "运行 cnpm run build"
                npm run build
                echo "构建成功"'''
            }
        }
        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
在这里插入图片描述

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


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

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

相关文章

揭示高防CDN的局限性与探讨其小众化原因

在网络安全领域,高防CDN(高防御内容分发网络)被认为是保护网站免受恶意攻击的强大工具,然而,尽管其在防护方面表现卓越,高防CDN在广泛应用中仍然相对小众。本文将从高防CDN的局限性出发,深入探讨…

nodejs微信小程序-客户管理管理系统的设计与实现-安卓-python-PHP-计算机毕业设计推荐

然而客户管理系统是一项较为复杂的工作,涉及多个组织、多个层次的协调和共同管理,整个过程需要将管理系统和人员进行全面整合。文章在具体研究过程中从多方面入手,针对当前企业管理中客户管理系统应用存在的问题进行了分析,阐述了…

酷柚易汛ERP - 通用设置操作指南

1、系统设置 对系统进行初步设置,如系统LOGO、站点名称、备案号、版权信息、尾部信息及系统相关的一些基础设置 2、应用/小程序配置 对系统移动端进行相关配置 3、短信配置 对系统短信进行配置,此配置用于移动端一些通知类信息发送【目前仅支持阿里云…

Pandas get_dummies用法

get_dummies 是 pandas 实现one hot encode的方式 ​  one-hot的基本思想:将离散型特征的每一种特征取值都看成一种状态,若指定离散特征中有N个 不相同的取值,那么我们就可以将该特征抽象成N种不同的状态,one-hot编码保证了每一…

vue项目中设置background: url() 是行内样式不生效,样式表是可以的

[TOC](vue项目中设置background: url() 是行内样式不生效,样式表是可以的) 首先:如果不是项目中普通的一个index.html中是可以的 一、原因 在Vue项目中,行内样式和样式表的编译规则是有所不同的。当你在Vue组件的行内样式中使用相对路径引用图…

机器学习:十大算法快速回顾

一、说明 对于机器学习的是个经典算法,本篇将展示一个回顾,注意,本篇不是具体原理信息介绍,没有代码,但是对于初学者是一个有益的导读。 二. 线性回归 2.1 算法描述 有没有想过数据奇才如何预测未来?输入线…

Gdevops北京站 2023年全球敏捷运维峰会-核心PPT资料下载

一、峰会简介 2023 Gdevops全球敏捷运维峰会-北京站成功举办,一众产学研界技术大佬与新锐专家,以智能为主线,就数据库、运维、架构、金融科技等领域进行了前沿技术与实践经验交流,一同畅聊AIGC、云原生、数智化转型下的新机遇。 …

uniapp 手动调用form表单submit事件

背景&#xff1a; UI把提交的按钮弄成了图片&#xff0c;之前的button不能用了。 <button form-type"submit">搜索</button> 实现&#xff1a; html&#xff1a; 通过 this.$refs.fd 获取到form的vue对象。手动调用里面的_onSubmit()方法。 methods:…

mac苹果电脑需要安装杀毒软件吗?

随着数字时代的发展&#xff0c;计算机安全问题变得越来越重要。而在计算机安全领域中&#xff0c;杀毒软件是一个被广泛讨论的话题。苹果电脑需要安装杀毒软件吗&#xff1f;对于苹果电脑用户来说&#xff0c;他们常常会疑惑自己是否需要安装杀毒软件来保护自己的电脑。本文将…

Notepad++ 通过HexEditor插件查看.hprof文件、heap dump文件的堆转储数据

文章目录 需求场景插件安装查看notepad的版本&#xff0c;看看是32位的还是64位的下载对应的版本解压导入插件打开notepad插件文件夹&#xff1a;Notepad安装目录新建一个HexEditor文件夹选中插件文件导入 重启notepad使用 需求场景 想要查看app内存的某个域的数据。 利用Andr…

idea显示pom.xml文件漂黄警告 Dependency maven:xxx:xxx is vulnerable

场景&#xff1a; idea警告某些maven依赖包有漏洞或者依赖传递有易受攻击包&#xff0c;如下&#xff1a; 解决&#xff1a; 1、打开idea设置&#xff0c;找到 File | Settings | Editor | Inspections 2、取消上述两项勾选即可

目标检测标注工具AutoDistill

引言 在快速发展的机器学习领域&#xff0c;有一个方面一直保持不变&#xff1a;繁琐和耗时的数据标注任务。无论是用于图像分类、目标检测还是语义分割&#xff0c;长期以来人工标记的数据集一直是监督学习的基础。 然而&#xff0c;由于一个创新性的工具 AutoDistill&#x…

02-1解析xpath

我是在edge浏览器中安装的xpath&#xff0c;需要安装的朋友可以参考下面这篇博客最新版edge浏览器中安装xpath插件 一、xpathd的使用 安装lxml pip install lxml ‐i https://pypi.douban.com/simple导入lxml.etree from lxml import etreeetree.parse() 解析本地文件 htm…

计算机中msvcp140.dll丢失的解决方法,总结5个有效的方法

msvcp140丢失错误指的是在系统中缺少了"msvcp140.dll"动态链接库文件&#xff0c;该文件是Microsoft Visual C 2015 Redistributable的一个重要组成部分。这个错误通常会导致一些软件无法正常运行&#xff0c;出现错误提示。msvcp140是一个C运行时库&#xff0c;它包…

Python3语法总结-基本数据类型①

Python3语法总结-基本数据类型① Python3语法总结一.注释和基本数据类型标识符与关键字注释变量标准数据类型数字(Number)布尔类型(bool) 未完待续... Python3语法总结 一.注释和基本数据类型 标识符与关键字 标识符是指程序中定义的一个名字&#xff0c;如变量名&#xff0…

【AI视野·今日CV 计算机视觉论文速览 第279期】Tue, 31 Oct 2023

AI视野今日CS.CV 计算机视觉论文速览 Tue, 31 Oct 2023 Totally 165 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers SimMMDG: A Simple and Effective Framework for Multi-modal Domain Generalization Authors Hao Dong, Ismail Nejjar, …

springMVC学习笔记-请求映射,参数绑定,响应,restful,响应状态码,springMVC拦截器

目录 概述 springMVC做了什么 springMVC与struts2区别 springMVC整个流程是一个单向闭环 springMVC具体的处理流程 springMVC的组成部分 请求映射 RequestMapping 用法 属性 1.value 2.method GET方式和POST方式 概述 HTTP给GET和POST做了哪些规定 GET方式&…

隐私合规检测工具_camille使用

前期准备 电脑端安装python3、frida&#xff0c;准备一台root过的安卓机 电脑安装frida和camille pip install frida pip install frida-tools #安装frida git clone https://github.com/zhengjim/camille.git #下载camille cd camille pip install -r requirements.txt手机…

(论文阅读)TiDB:一款基于Raft的HTAP数据库

引言 混合事务分析处理&#xff08;HTAP&#xff09;数据库要求隔离处理事务查询和分析查询&#xff0c;以消除它们之间的干扰。要实现这一点&#xff0c;有必要维护为这两种查询类型指定的数据的不同副本。然而&#xff0c;为存储系统中的分布式副本提供一致的视图是一项挑战…

初识Java

一、Java语言概述 1.1 Java是什么 Java是一种优秀的程序设计语言&#xff0c;它具有令人赏心悦目的语法和易于理解的语义 不仅如此&#xff0c;Java还是一个有一系列计算机软件和规范形成的技术体系&#xff0c;这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境&a…