首页 > 其他分享 >Jenkins 简述及其搭建

Jenkins 简述及其搭建

时间:2024-04-26 10:57:11浏览次数:12  
标签:CI 代码 简述 构建 jenkins Jenkins root 搭建

什么是持续集成?

  • 持续集成(CI)是在软件开发过程中自动化和集成许多团队成员的代码更改和更新的过程。在 CI 中,自动化工具在集成之前确认软件代码是有效且无错误的,这有助于检测错误并加快新版本的发布。

什么是持续交付?

  • 持续交付 (CD) 是指每天多次将新软件投入生产,自动将应用程序交付到基础设施环境的能力。CD 是 DevOps 的一部分,有助于缩短软件开发生命周期。

CI/CD 管道的各个阶段

持续集成

  • 在第一阶段,开发人员将他们的代码更改与其项目的主代码存储库合并。当开发人员推出代码时,他们会自动触发软件构建。

持续交付

  • 这是将构建交付到运行时环境以进行集成、质量保证或预生产的过程。在此阶段,将对应用程序运行功能和性能测试。

  • 由于许多团队除了生产之外还使用多种软件开发环境,包括开发和测试,因此 CD 可以帮助团队有效地使用自动化来快速将代码更改推送到每个环境。

持续部署

  • 在这个阶段,代码被部署到生产环境,包括公有云和混合云。部署会自动启动软件并将其分发给最终用户。自动化工具将经过测试和集成的软件移动到可以部署给最终用户的地方,例如应用程序商店。

CI/CD 的好处

更频繁的代码部署

  • 构建 CI/CD 管道的组织可以更快地推出代码。通过标准化构建、开发测试和自动化部署,团队可以将更多时间用于改进应用程序,而将更少的时间用于将代码交付到不同环境的技术流程。

与多种环境无缝协作

  • 软件开发团队通常访问多个开发和测试环境来测试和审查应用程序代码。借助 CI/CD,团队仍然可以将代码引入各种环境,而不必担心项目无法按计划进行。

推动回归测试

  • 通过自动化测试,可以识别构建何时通过或失败,工程师还可以通过回归测试移动代码。回归测试有助于确保代码在与其他主干合并时不会破坏软件构建,并确认代码按预期工作。

  • 要求开发人员在所有环境中运行回归测试是一个好主意,这样开发人员只有在所有测试通过后才将测试发送到版本控制。

改善项目协作和质量

  • 由于采用 CI/CD 的开发人员更频繁地提交代码,因此团队可以使用较小的代码包快速识别质量问题,而不是沿着项目时间线稍后创建较大的代码包。此外,当开发人员的提交周期较短时,他们可能不会编辑相同的代码并需要合并。

  • 使用 CI/CD 的团队也倾向于预先加载质量检查,例如从版本控制配置和实践定义开始。除了经常检查代码之外,开发人员还将在不同的时间线上管理功能和修复,然后可以控制哪些代码和功能已准备好投入生产。

降低开发成本

  • 借助一套通用、一致的开发和测试工具,软件开发团队可以避免与管理和许可不同应用程序相关的额外成本。当 CI/CD 支持自动化时,团队可以在开发和发布应用程序方面获得规模经济。

生成反馈
当团队获得有关方法的反馈时,功能会更快地推进。反馈使团队能够衡量结果,以便他们有确凿的证据作为新项目的基础。当团队快速获得关于哪些工作流程和方法可以成功构建的答案时,这些知识就会融入到未来的每个构建中。

什么是 Jenkins?

  • Jenkins 是一个开源持续集成 (CI) 服务器。它管理和控制软件交付过程的多个阶段,包括构建、文档、自动化测试、打包和静态代码分析。Jenkins 是一种非常流行的 DevOps 工具,被数千个开发团队使用。

  • Jenkins 自动化通常由 GitHub、Bitbucket 和 GitLab 等存储库中的代码更改触发,并与 Maven 和 Gradle 等构建工具集成。

  • Jenkins 支持使用 Docker 和 Kubernetes 等容器技术来测试和打包软件版本,但它既不是 Kubernetes 原生解决方案,也不是容器原生 CI 解决方案。

Jenkins 中的“持续集成”是什么?

  • 持续集成是一种开发实践,可以将代码集成到共享存储库中。

  • 该实践使用自动验证来及早发现代码问题。

  • 持续集成触发构建以查找和识别代码中存在的错误。

  • 它增加了构建过程的一致性。

  • 这是一种更快地构建事物并防止代码损坏的方法。

Jenkins 架构

Jenkins 如何工作?

Jenkins 在每次提交源代码存储库(通常是开发分支)时都会触发构建。

  • Jenkins 可以配置为运行初始的单元测试套件,以确保提交不会“破坏构建”。如果测试未通过,可以立即通知开发人员采取纠正措施。这就解决了“谁破坏建造?”的问题。因为很容易确定哪个提交导致构建失败。如果所有单元测试都通过,那么构建管道可以进入下一阶段的集成测试,这通常需要更长的时间来运行。

  • Jenkins 提供了在多台机器上并行运行构建的能力,以最大限度地减少完成许多这些活动所需的总时间。最后,Jenkins 可以将构建部署到允许在将其发布到生产环境之前进行任何所需的用户验收测试 (UAT) 的环境。这些简化的步骤体现了持续集成 (CI) 环境的精神。

Jenkins的好处

Jenkins 并不是当今唯一的 CI 工具 - GitHub Actions、GitLab、Travis CI 和 CircleCI 是一些使用更广泛的替代品。那么是什么让 Jenkins 脱颖而出,成为大多数开发人员的首选呢?

  • 开源:这显然是 Jenkins 受到广泛欢迎的一个关键原因。它是免费的,因此任何组织都可以开始使用它,而不受预算限制。它也很

  • 容易安装:Jenkins 是作为一个独立的 Java 程序开发的,这意味着它可以在大多数设备和操作系统上运行。

  • 社区支持:由于它是开源的,并且多年来一直是首选 CI 工具,Jenkins 现在拥有强大的社区支持。这增强了 Jenkins 的受欢迎程度,因为很容易找到教程和其他资源来充分利用它。

  • 插件: Jenkins 的主要优点之一是可以扩展其功能的庞大插件目录。据最新统计,Jenkins 拥有超过 1,800 个社区开发的插件,允许任何组织调整或增强基本功能以适应自己的 DevOps 环境。除了插件之外,Jenkins 还易于修改和扩展,以满足大多数组织的需求。

  • 分布式:对于复杂的项目来说,一台服务器就足够了,因此 Jenkins 使用主从架构来管理分布式构建。主服务器是“主”服务器,然后它可以将工作负载分配给其他“从”服务器,从而允许同时运行多个构建和测试环境。例如,这种方法可用于在不同操作系统上构建和测试代码。

Jenkins 搭建过程

本文章使用版本:Jenkins 2.426.1 (November 2023) and newer
需要支持Java版本:Java 11, Java 17 or Java 21

准备环境

[root@Jenkins ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
[root@Jenkins ~]# uname -r
3.10.0-1160.el7.x86_64
 
[root@Jenkins ~]# setenforce 0
[root@Jenkins ~]# sed -i.bak '7s/enforcing/disabled/' /etc/selinux/config
 
[root@Jenkins ~]# systemctl stop firewalld
[root@Jenkins ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)
[root@Jenkins ~]# firewall-cmd --state
not running

下载安装

Jenkins 官方
清华大学开源软件镜像站

# 下载安装java 11
[root@Jenkins ~]# yum install java-11-openjdk java-11-openjdk-devel

#############################################################################################################
# 下载安装指定稳定版Jenkns 
[root@Jenkins ~]# wget https://mirrors.jenkins-ci.org/redhat-stable/jenkins-2.346.1-1.1.noarch.rpm
[root@Jenkins ~]# rpm -ivh jenkins-2.346.1-1.1.noarch.rpm
#############################################################################################################

# 下载安装最新稳定版Jenkins (当前2.426.1)
[root@Jenkins ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
[root@Jenkins ~]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
[root@Jenkins ~]# yum install jenkins

[root@Jenkins ~]# yum list | grep jenkins
jenkins.noarch                              2.426.1-1.1                @jenkins

[root@Jenkins ~]# rpm -ql jenkins
/usr/bin/jenkins                          # jenkins安装目录,WAR包会放在这里。
/usr/lib/systemd/system/jenkins.service   # Jenkins配置文件、端口、JENKINS_HOME等配置信息
/usr/share/java/jenkins.war               # jenkins.war默认位置
/usr/share/jenkins/migrate                # 关于迁移
/var/cache/jenkins                        # 缓存目录
/var/lib/jenkins                          # 默认的JENKINS_HOME

[root@Jenkins ~]# chown -R root.root /var/cache/jenkins /var/lib/jenkins

修改配置

# 默认配置
[root@Jenkins ~]# egrep -v "^$|^#" /usr/lib/systemd/system/jenkins.service
[Unit]
Description=Jenkins Continuous Integration Server
Requires=network.target
After=network.target
[Service]
Type=notify
NotifyAccess=main
ExecStart=/usr/bin/jenkins
Restart=on-failure
SuccessExitStatus=143
User=jenkins
Group=jenkins
Environment="JENKINS_HOME=/var/lib/jenkins"
WorkingDirectory=/var/lib/jenkins
Environment="JENKINS_WEBROOT=%C/jenkins/war"
Environment="JAVA_OPTS=-Djava.awt.headless=true"
Environment="JENKINS_PORT=8080"
[Install]
WantedBy=multi-user.target

# 修改如下内容
[root@Jenkins ~]# vim /usr/lib/systemd/system/jenkins.service
...
...
# 修改用户及属组
#User=jenkins
#Group=jenkins
User=root
Group=root
...
...
# 修改端口号
#Environment="JENKINS_PORT=8080" 默认端口
Environment="JENKINS_PORT=8989"
...
...
# 开启日志
#Environment="JENKINS_ENABLE_ACCESS_LOG=false" 默认关闭
Environment="JENKINS_ENABLE_ACCESS_LOG=true"

启动 Jenkins

[root@Jenkins ~]# systemctl start jenkins
[root@Jenkins ~]# java --version
openjdk 11.0.21 2023-10-17 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.21.0.9-1.el7_9) (build 11.0.21+9-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.21.0.9-1.el7_9) (build 11.0.21+9-LTS, mixed mode, sharing)
[root@Jenkins ~]# jenkins --version
2.426.1

[root@Jenkins ~]# netstat -ntpl | grep 8989
tcp6       0      0 :::8989                 :::*                    LISTEN      1687/java
[root@Jenkins ~]#
[root@Jenkins ~]# ps -ef | grep jenkins
jenkins    1687      1  4 16:28 ?        00:00:12 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=%C/jenkins/war --httpPort=8989 --accessLoggerClassName=winstone.accesslog.SimpleAccessLogger --simpleAccessLogger.format=combined --simpleAccessLogger.file=/var/log/jenkins/access_log
root       1967   1427  0 16:33 pts/1    00:00:00 grep --color=auto jenkins

打开浏览器进入链接 http://IP:PORT

[root@Jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
1d6f364f60a44f449f9253b5cee0893c

标签:CI,代码,简述,构建,jenkins,Jenkins,root,搭建
From: https://www.cnblogs.com/zhangwencheng/p/17894709.html

相关文章

  • Jenkins 配置 以接收 GitHub 的 WebHook 通知
    要配置Jenkins以接收GitHub的WebHook通知,你需要在Jenkins上安装并配置GitHub插件,然后在GitHub仓库中设置WebHook指向Jenkins的URL。以下是配置步骤的简要说明和示例:确保Jenkins安装了GitHub插件。在Jenkins中配置GitHub插件,使其能够与GitHub通信(如......
  • 中电金信:深度解析|数字化营销运营体系搭建
    ​如何更好更快地梳理好体系搭建思路,稳步实现落地?下文将为大家明确搭建的推进步骤、执行要点,帮助商业银行理顺数字化营销运营体系的“点”“线”“面”~​ ​ 与所有转型的曲折、阵痛等特征一样,商业银行构建数字化营销运营体系过程中,亦走过一些弯路,包括: ​ 我们看到......
  • Centos7搭建 KVM 命令行安装虚拟机
    安装前准备验证物理机CPU是否支持kvmcat/proc/cpuinfo|egrep'vmx|svm'关闭SELinuxsetenforce0永久关闭:vim/etc/sysconfig/selinux将SELinux设置为disabled安装依赖项yuminstallqemu-kvmlibvirtvirt-installbridge-utils-y验证安装结果lsmod|grepkvm......
  • 基于ARM Cortex-M0软核处理器 在FPGA 搭建soc遇到的问题(灯不亮)
    1.Modelsim仿真发现所有的指令都不执行,可能是指令读取问题和总线信号的控制问题。 我遇到的:HRESP信号未使用,也没有赋值。查阅后发现HRESP标志传输状态,设置为常0即代表传输不会出错,就不会压制主机了。2.Modelsim仿真能通过,但是下载到FPGA上后,进行KEIL调试发现没有输出,我遇到的......
  • Jenkins 权限配置管理-github用户权限管理
    写在前面的话背景:在一个企业研发部门内部,可能存在多个运维人员,而这些运维人员往往负责不同的项目,但是有可能他们用的又是同一个Jenkins的不同用户。那么我们就希望实现一个需求,能够不同的用户登录Jenkins以后看到不同的项目。Jenkins提供了简单的权限管理,我们可以在 系统......
  • 利用云服务器搭建自己的微信聊天机器人
    本次部署使用的是LinkAI提供的接口,不需要魔法选择比较简单的docker部署,其他的部署方式可以参考官方文档:https://docs.link-ai.tech/cow/quick-start0、前置租一台云服务器,因为是调用的其他平台的大模型api,所以配置不用太高注册并登陆LinkAI平台(https://link-ai.tech/portal),在......
  • 大数据平台搭建手册——hadoop
    从0开始超详细搭建hadoop平台手册创建三台使用centos7操作系统的虚拟机基础环境配置ps:不建议使用DHCP,因为ip地址会变动配置ip1.master[root@master~]#nmcliconnectionaddifnameens32con-nameens32autoconnectyestypeethernetipv4.methodmanualipv4.add......
  • flume的安装与配置总结 flume搭建
    flume的安装与配置总结flume搭建Flume的官网是 http://flume.apache.org,官网提供了丰富实用的技术资料。另外还有一个中文版的文档 https://flume.liyifeng.org/。一、下载软件网站 https://mirrors.tuna.tsinghua.edu.cn/apache/flume提供了各个版本的下载。登录后复制cd......
  • 网络拓扑—WEB-IIS服务搭建
    目录WEB-IIS服务搭建网络拓扑配置网络IISPC安装IIS服务配置IIS服务(默认站点)PC机访问网页配置IIS服务(新建站点)PC机访问网页WEB-IIS服务搭建网络拓扑//交换机忽略不计IIS服务IP:192.168.1.1PC机IP:192.168.1.2配置网络IISPC安装IIS服务在192.168.1.1的机子上安装下面跟......
  • Python GUI开发- Qt Designer环境搭建
    前言QtDesigner是PyQt5程序UI界面的实现工具,使用QtDesigner可以拖拽、点击完成GUI界面设计,并且设计完成的.ui程序可以转换成.py文件供python程序调用环境准备使用pip安装pipinstallpyqt5-toolsQtDesigner环境搭建在pip安装包的路径中,找到designer.exe文件......