十二.Jenkins持续集成

news2024/12/27 19:08:46

十二.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
在这里插入图片描述

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


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

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

相关文章

lectin

PSGL-1 ; selectin O-linked glycosylation | Detailed Pedia PSGL-1 has several O-glycans to extend the ligand away from the cell surface. An sLex epitope allows interactions with the receptor for leukocyte localisation. 分类 --Recognition by Animal Lectins…

MatLab的下载、安装与使用(亲测有效)

1、概述 MatLab是由MathWorks公司开发并发布的,支持线性代数、矩阵运算、绘制函数和数据、信号处理、图像处理以及视频处理等功能。广泛用于算法开发、数据可视化、数据分析以及数值计算等。 Matlab 的主要特性包括: 简单易用的语法,使得程…

训练模型报错RuntimeError: Input, output and indices must be on the current device

问题出现: 当我训练图网络模型时,源码默认使用cpu,查看后台性能运行,发现正在使用cpu训练,这大大降低了训练速率,并且增加了电脑负载。所以我决定将模型改造并训练放在GPU上运行。 我在train方法中&#xf…

CentOS 7搭建Gitlab流程

目录 1、查询docker镜像gitlab-ce 2、拉取镜像 3、查询已下载的镜像 4、新建gitlab文件夹 5、在gitlab文件夹下新建相关文件夹 6、创建运行gitlab的容器 7、查看docker容器 8、根据Linux地址访问gitlab 9、进入docker容器,设置用户名的和密码 10、登录git…

Windos操作系统下的Zookeeper安装图文教程

凯哥已经准备好最新版本3.9.1且已经配置好了。既获取到配置好的。 获取到凯哥准备的安装后,只需要修改一下配置。将解压包解压后,找到conf文件,里面有个zoo.cfg配置文件。如下图: 下载后conf文件夹内容 打开zoo.cfg配置文件后&a…

Springboot 项目启动类放置位置

文章目录 Springboot 项目启动类放置位置springboot 默认包扫描机制启动类放在特定位置springboot 启动注解理解配置启动类扫描特定的包1、 ComponentScan2、利用 SpringBootApplication 注解的 scanBasePackages 属性 Springboot 项目启动类放置位置 如果我们使用 IDEA 或者 …

torch.nn.functional.log_softmax 函数解析

该函数将输出向量转化为概率分布,作用和softmax一致。 相比softmax,对较小的概率分布处理能力更好。 一、定义 softmax 计算公式: log_softmax 计算公式: 可见仅仅是将 softmax 最外层套上 log 函数。 二、使用场景 log_soft…

【算法训练营】参数解析+跳石板

🌈欢迎来到Python专栏 🙋🏾‍♀️作者介绍:前PLA队员 目前是一名普通本科大三的软件工程专业学生 🌏IP坐标:湖北武汉 🍉 目前技术栈:C/C、Linux系统编程、计算机网络、数据结构、Mys…

元宇宙3D云展厅应用到汽车销售的方案及特点

为了紧紧抓住年轻消费者的需求,汽车销售行业也正在经历一场深刻的变革。在这个变革的前沿,元宇宙3D汽车展厅作为一项全新技术闪亮登场,打破了传统汽车销售模式的限制,为消费者带来了前所未有的购车体验。 元宇宙3D汽车展厅采用了尖…

竞赛选题 深度学习驾驶行为状态检测系统(疲劳 抽烟 喝水 玩手机) - opencv python

文章目录 1 前言1 课题背景2 相关技术2.1 Dlib人脸识别库2.2 疲劳检测算法2.3 YOLOV5算法 3 效果展示3.1 眨眼3.2 打哈欠3.3 使用手机检测3.4 抽烟检测3.5 喝水检测 4 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的驾…

java每日一记 —— 谈谈反射

这应该是基础吧 1.先来说点前置知识:类的加载机制2.以自己的方式来谈反射的概念3.获取class的三种方式3.1.通过已知的类型获取class3.2.通过实例对象获取class3.3.通过Class.forName获取全路径指定类名的class 4.整理了一下API:坦言说🪡累5.现…

【腾讯云云上实验室-向量数据库】TAI时代的数据枢纽-向量数据库 VectorDB

一、向量数据库的发展历程和时代机遇 回顾向量数据库的发展历程: 2012年开始,深度神经网络的发展催生了向量数据库的发展;2015年至2016年,Google和微软发布了标志性的论文;2017年,Facebook开源了Faiss框架…

【具身智能评估1】具身视觉语言规划(EVLP)仿真环境汇总

参考论文:Core Challenges in Embodied Vision-Language Planning 论文作者:Jonathan Francis, Nariaki Kitamura, Felix Labelle, Xiaopeng Lu, Ingrid Navarro, Jean Oh 论文原文:https://arxiv.org/abs/2106.13948 论文出处:Jo…

文心一言-情感关怀之旅

如何让LLM更有温度。 应用介绍

猜数字优化版(带进度条)

其实就是加了个动态进度条显示加载游戏的流程&#xff0c;这样看上去是不是更有big了hhhh #include<windows.h> #include<iostream> #include<ctime> using namespace std; void menu() {printf("1.开始游戏\n");printf("0.退出游戏\n")…

PP-YOLOE: An evolved version of YOLO(2022.12)

文章目录 Abstract1. Introduction2. Method2.1. A Brief Review of PP-YOLOv22.2. Improvement of PP-YOLOEAnchor-freeBackbone and NeckTask Alignment Learning (TAL)Efficient Task-aligned Head (ET-head) 3.Experiment4. Conclusion 原文链接 源代码 Abstract 在本报告…

恕我直言,大模型对齐可能无法解决安全问题,我们都被表象误导了

是否听说过“伪对齐”这一概念&#xff1f; 在大型语言模型&#xff08;LLM&#xff09;的评估中&#xff0c;研究者发现了一个引人注目的现象&#xff1a;当面对多项选择题和开放式问题时&#xff0c;模型的表现存在显著差异。这一差异根源在于模型对复杂概念的理解不够全面&…

Python hashlib 模块详细教程:安全哈希与数据完整性保护

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;我是涛哥&#xff0c;今天为大家分享 Python hashlib 模块详细教程&#xff0c;文章6500字&#xff0c;阅读大约17分钟&#xff0c;大家enjoy~~ hashlib模块为Python提供了一种简便的方式来使用各种哈希算法&…

ACM练习——第五天

还有两天就要比赛了&#xff0c;进入正题吧 题目一&#xff1a;小红的签到题 小红的签到题 (nowcoder.com) 这道题也就是热身水平&#xff0c;机会很清楚的发现只需要c/a就可以得出答案了 参考代码&#xff1a; #include <iostream>using namespace std;int main(){int a…

SecureCRT的“New line mode“

New line mode选中与不选中啥区别 在SecureCRT中&#xff0c;"New line mode"是一个关键配置项&#xff0c;主要用于解决不同操作系统之间的换行问题。当不选中"New line mode"时&#xff0c;SecureCRT会将接收到的数据按照原样发送&#xff0c;不会对数据…