Jenkins笔记(一)

个人学习笔记(整理不易,有帮助点个赞)

笔记目录:学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客

目录

一:简单了解

二:什么是DevOps

三:安装Jenkins

四:pipeline

1)简单了解

2)Jenkinsfile

3)pipeline语法选择

1:脚本式(Scripted)语法

2:声明式(Declar-ative)语法(建议使用这种)

4)创建pipeline项目

5)从版本控制库拉取pipeline

6)使用Maven构建Java应用


一:简单了解

Jenkins2.0版本,开始支持pipeline as code

Jenkins是一款使用Java语言开发的开源的自动化服务器。我们通过界面或Jenkinsfile告诉它执行什么任务,何时执行。理论上,我们可以让它执行任何任务,但是通常只应用于持续集成和持续交付

二:什么是DevOps

参考:百度安全验证

 简单理解就是:

1)定义:DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合,通过自动化软件交付和架构变更的流程,使得构建、测试、发布软件能够更加快捷、频繁和可靠

2)软件工程方法论从瀑布到敏捷,到目前的DevOps,都不是凭空演进出来的。敏捷的目的是为了打破产品和开发团队之间的部门墙,但是市场变化越来越快,充满易变性、不确定性、复杂性、模糊性。我们需要更快的交付和反馈,所以只打破产品和开发部门部门墙还不够,现在现在需要将开发和运维运营也打通

目的:DevOps打破原有的组织考核壁垒,围绕一个统一的业务价值目标及业务交付范围加强沟通,通过频繁、快速地迭代交付和反馈,达到加快交付速度和提高交付质量的目的

3)方法:用持续交付的流水线来取代冗长的开发运维流程,就会用到jenkins了

4)DevOps的生命周期:

5)实现

DevOps落地,研发交付的每个过程都离不开工具的支撑。传统的方式,是自己搭建零散的弱整合工具系统,比如我们用Gitlab来管理代码,根据企业的实际情况寻找合适的分支管理方法;我们用Jenkins来做持续集成;使用selenium来做自动化测试;使用ansible来自动化部署;使用chef或者puppet来管理基础环境等等。这种情况的问题一是系统完全需要自己维护,成本高,不稳定;问题二是子系统之间存在隐性墙,缺少数据共享/权限共享/系统交互等功能。目前大型金融以及互联网企业普遍采用强整合的统一DevOps平台

三:安装Jenkins

参考:Windows

下载地址:Jenkins download and deployment 

配置策略组

这里的对象名称是我电脑的账户名,输入后,点击检查名称,他会给你生成一串,然后保存应用即可

安装下载的软件,在这里输入,我先安装,此前没配置策略组,配置后这里没有自动生成,直接就返回上一步就好了

端口我用的8081,正常用8080就行

选择需要与Jenkins一起安装的其他服务,然后单击“下一步”

安装完成后,查看服务已经开启了

浏览器输入http://localhost:8081/,登录即可

首次访问新的 Jenkins 实例时,系统会要求您使用自动生成的密码解锁它

也可以从安装路径找密码

四:pipeline

1)简单了解

部署流水线(Deployment pipeline)是指从软件版本控制库到用户手中这一过程的自动化表现形式

Jenkins 1.x只能通过界面手动操作来“描述”部署流水线

Jenkins 2.x支持pipeline as code,可以通过“代码”来描述部署流水线

2)Jenkinsfile

Jenkinsfile是一个文本文件,是部署流水线概念在Jenkins中的表现形式。像Dockerfile之于Docker。所有部署流水线的逻辑都写在Jenkinsfile中

如果没有pipeline插件,就去插件管理安装一个

我这里已经安装了

3)pipeline语法选择

Groovy语言被选择作为基础来实现pipeline

1:脚本式(Scripted)语法

node为根节点的是脚本式语法

2:声明式(Declar-ative)语法(建议使用这种)

pipeline插件从2.5版本开始,才同时支持两种格式的语法

只有安装了pipeline插件,Jenkins才支持pipeline as code。这个“code”被写在一个被命名为Jenkinsfile的文本文件中。在同一个代码项目下可以按需创建多个不同名的Jenkinsfile

4)创建pipeline项目

随便写一个pipeline

从Jenkins界面填入pipeline,在验证时可以这么做,但是不推荐,因为不能做到pipeline的版本化

5)从版本控制库拉取pipeline

安装Git插件,然后使用SSH的clone方式拉取代码

将Git私钥放到Jenkins上,这样Jenkins才有权限从Git仓库拉取代码

注意:gitlab这里添加的是公钥pub那个(github也是差不多的)

在jenkins配置私钥,打开凭证管理

用户名和密码是gitlab代码库登录的账号密码

注意,这里的秘钥填的是私钥

随便创建一个项目,把gitlab的项目地址在这里设置一下,如图下:

运行结果(在执行如果出现报错,不确定是不是地址有问题,可以在git先执行一次)

最初我拿github去操作的时候,报错

ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job.

直接把master改为main就好了

上面已经知道Jenkins从Git仓库怎么拉取代码了,接下来是在拉代码的时候,执行pipeline

项目新建一个Jenkinsfile文件,然后填上以下内容,推送去仓库

流水线配置一下仓库地址,凭证,文件名

这里吃个亏,我开始创建的是带txt后缀,但是这里没加,导致找不到文件

“Script Path”就是pipeline的文件名,默认是Jenkinsfile

6)使用Maven构建Java应用

参考:idea创建一个简单的maven项目-CSDN博客

使用Maven构建Java应用的例子,Jenkins默认支持Maven

在Jenkins上安装JDK和Maven,可以本地也可以自动,我这里选择的是本地

pipeline {agent any//执行到tools时,就会根据Maven的设置自动下载指定版本的Maven,并安装//tools是pipeline中的一个指令,用于自动安装工具,同时将其路径放到PATH变量中tools {maven 'mvn-3.9.6'}stages {stage('Build') {steps {sh "mvn clean package spring-boot:repackage"    //暂时不理解这个有什么作用sh "printenv"    //将环境变量打印到console中}}}
}

推送仓库,构建一个pipeline,执行后会安装maven(这里的例子只是说明通过构建去安装maven,跟我本地配置没啥关系)

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

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

相关文章

Spring Boot 和 Spring Cloud: 区别与联系

Spring Boot 和 Spring Cloud: 区别与联系 在当今软件开发领域,微服务架构和快速开发成为了主流趋势。Spring框架作为Java生态系统中最流行的开发框架之一,也不例外地推出了Spring Boot和Spring Cloud这两个项目来满足这些需求。本文将详细探讨它们之间…

RK3568平台 EXPORT_SYMBOL的作用

一、EXPORT_SYMBOL 的作用 1.在一个模块中使用 EXPORT_SYMBOL(name)。name 表示函数或者变量等符号,它是对全部内核代码公开的,因此在您的内核模块中可以直接调用 name,即使用 EXPORT_SYMBOL 可以将一个函数以符号的方式导出给其他模块使用。…

MongoDB聚合运算符:$cond

文章目录 语法用法举例 $cond聚合运算符根据布尔表达式的结果返回两个表达式中的一个。 语法 { $cond: { if: <boolean-expression>, then: <true-case>, else: <false-case> } }或&#xff1a; { $cond: [ <boolean-expression>, <true-case>…

(案例贴2) html+css 倒计时器

欢迎大家使用这个计时器噢 老哥直接附代码咯. timer.html <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">&l…

GitLab--Merge Request 权限管理

场景 团队在日常开发工作中需要进行分支管理&#xff0c;通常使用feature分支进行开发&#xff0c;然后依次合并到dev分支、release分支&#xff0c;整个代码合并过程不仅仅是代码合并还需要对代码进行审核&#xff0c;如果在线下进行审核合并&#xff0c;这样操作无法保留痕迹…

【力扣hot100】刷题笔记Day18

前言 晚上巩固一下今天的回溯题&#xff0c;基础不牢地动山摇&#xff0c;po一张代码随想录总结的 组合补充 77. 组合 - 力扣&#xff08;LeetCode&#xff09; class Solution:def combine(self, n: int, k: int) -> List[List[int]]:path []res []def backtrack(star…

go垃圾回收

1 go 垃圾回收变更 Go 语言的垃圾回收器&#xff08;GC&#xff09;自其诞生以来一直在不断演进和优化&#xff0c;以提高性能、减少暂停时间和对程序执行的影响。以下是一些关键的改进和变更点&#xff1a; 并发标记周期&#xff1a; Go 语言从一开始就采用了并发标记&#xf…

日立F-4700FL数据分析实验报告

实验设定 日立F-4700FL为荧光分光光度计,可输出三维光谱扫描结果到计算机。D和L为两种化合物。对4种不同的溶液进行三维光谱扫描,得到的光谱文件如下。 溶质光谱文件无K.txtDD.txtLL.txtD+LH.txt光谱文件(txt)的内容格式如下。 Sample: ... File name: ... Run date: ... …

[C#] 重难点区分[In]、[Out]、in、out、in T、out T

[In] 属性&#xff1a; - [In] 属性用于标识参数是一个输入参数。这意味着参数的值将被传递到方法或函数&#xff0c;但在其执行期间不会被修改。 - 当通过 P/Invoke 或 COM 互操作调用函数时&#xff0c;使用 [In] 属性指示参数的传递方式为输入。 - 示例&#xff1a…

深入探析:云计算与边缘计算在软件开发中的应用与挑战

随着互联网技术的飞速发展&#xff0c;云计算和边缘计算作为两种重要的计算模型&#xff0c;已经成为当今IT领域的热点话题。云计算通过将计算、存储、网络等资源集中在云端&#xff0c;为企业提供弹性、可靠、安全的计算服务。而边缘计算则是将部分计算任务从云端迁移到网络边…

BeautifulSoup解析 HTML标签Tag及属性attrs的常用方法

# 使用 BeautifulSoup 解析 HTML 内容 # BeautifulSoup 对象表示整个解析树或文档&#xff0c;可以用来遍历、搜索和操作文档。# 常用方法&#xff1a; # find(name, attrs, recursive, text, **kwargs)&#xff1a;在文档中查找第一个符合条件的元素&#xff0c;并返回该元素…

Java面试值之集合

集合 1.HashMap底层&#xff1f;扩容机制&#xff1f;1.7-1.8的升级&#xff1f;2.HashMap的长度为什么是2的幂次方&#xff1f;3.HashMap 插入1.7和1.8的区别&#xff1f;4.什么是红黑树&#xff1f;O(logn)5.HashMap为什么会使用红黑树&#xff1f;6.ArrayList底层&#xff1…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之FlowItem容器组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之FlowItem容器组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、FlowItem组件 子组件 可以包含子组件。 接口 FlowItem() 使用该接口来…

免费音频剪辑

在数字时代&#xff0c;音频剪辑已成为许多职业和爱好者不可或缺的技能。无论是制作播客、教育视频、还是进行广告宣传&#xff0c;高质量的音频剪辑都能为作品增色不少。今天&#xff0c;我要为大家强烈安利一款免费且功能强大的音频剪辑工具&#xff0c;它绝对是你办公桌上不…

Kotti-基于Python的开源内容管理系统介绍与使用

前言 Kotti是一个基于Python的开源内容管理系统&#xff08;CMS&#xff09;&#xff0c;旨在为开发人员提供快速、简单和灵活的方式来构建Web应用。它基于Pyramid框架&#xff0c;使用SQLAlchemy进行数据库管理&#xff0c;支持自定义内容类型和可扩展的插件系统。本文将深入…

命令行启动mongodb服务器的问题及解决方案 -- Unrecognized option: storage.journal

目录 mongodb命令行启动问题 -- Unrecognized option: storage.journal问题日志&#xff1a;问题截图&#xff1a;问题来源&#xff1a;错误原因&#xff1a;解决方式&#xff1a; mongodb命令行启动问题 – Unrecognized option: storage.journal 同样是格式出问题的问题分析和…

《Spring Security 简易速速上手小册》第5章 高级认证技术(2024 最新版)

文章目录 5.1 OAuth2 和 OpenID Connect5.1.1 基础知识详解OAuth2OpenID Connect结合 OAuth2 和 OIDC 5.1.2 重点案例&#xff1a;使用 OAuth2 和 OpenID Connect 实现社交登录案例 Demo 5.1.3 拓展案例 1&#xff1a;访问受保护资源案例 Demo测试访问受保护资源 5.1.4 拓展案例…

MySQL锁机制【重点】

参考链接 【1】https://xiaolincoding.com/mysql/lock/mysql_lock.html 【2】https://learnku.com/articles/39212?order_byvote_count& 重要的锁&#xff1a; 表级锁&#xff08;Table-level locks&#xff09;&#xff1a; 表级锁是对整个表进行加锁&#xff0c;当一个事…

Blazor 向 ECharts 传递 option

目标 将ECharts封装为Blazor组件&#xff0c;然后通过jsRuntime向ECharts传递参数&#xff0c;即设置option。 封装ECharts 步骤&#xff1a; 1. 在index.html中引入echarts.min.js&#xff1b; 2. 创建blazor组件&#xff0c;将ref传递给js用于初始化echarts&#xff1b; …

#stm学习总结 (二十八)硬件随机数实验

28.1 随机数发生器简介 STM32F407 自带了硬件随机数发生器&#xff08;RNG&#xff09;&#xff0c;RNG 处理器是一个以连续模拟噪声为基础的随机数发生器&#xff0c;在主机读数时提供一个 32 位的随机数。 28.1.1 RNG 框图 STM32F407 的随机数发生器&#xff08;RNG&#x…