DevOps-Jenkins

news/2024/4/26 0:54:17/文章来源:https://blog.csdn.net/weixin_51882166/article/details/131973579

Jenkins

Jenkins是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
官网
在这里插入图片描述

应用场景

场景一在这里插入图片描述

  • 研发人员上传开发好的代码到github代码仓库
  • 需要将代码下载nginx服务器部署
  • 手动下载再部署/使用脚本下载在部署

场景二

在这里插入图片描述

下载

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

安装

  • 静态IP(可以上外网)
  • 主机名
  • 关闭防火墙,SeLinux(脚本执行)
#!/bin/bash# 关闭防火墙
echo "正在关闭防火墙..."
sudo systemctl stop firewalld
sudo systemctl disable firewalld
echo "防火墙已关闭并禁用。"# 检查 SELinux 状态
sestatus=$(sestatus | grep "SELinux status" | awk '{print $3}')if [ "$sestatus" == "enabled" ]; then# 关闭 SELinuxecho "正在关闭 SELinux..."sudo setenforce 0sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/configecho "SELinux 已关闭。"
elseecho "SELinux 已经处于禁用状态,无需操作。"
fiecho "脚本执行完毕。"
  • 时间同步
  • 确定OpenJdk安装
yum install java-1.8.0-openjdk* -y
  • 查看JDK版本
[root@workstation ~]# java -version
openjdk version "1.8.0_372"
OpenJDK Runtime Environment (build 1.8.0_372-b07)
OpenJDK 64-Bit Server VM (build 25.372-b07, mixed mode)
  • 上传 rpm包安装

[root@workstation ~]# rpm -ivh jenkins-2.150.3-1.1.noarch.rpm
warning: jenkins-2.150.3-1.1.noarch.rpm: Header V4 DSA/SHA1 Signature, key ID d50582e6: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...1:jenkins-2.150.3-1.1              ################################# [100%]
  • 启动服务,查看端口
[root@workstation ~]# systemctl start jenkins
[root@workstation ~]# systemctl enable jenkins
jenkins.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig jenkins on[root@workstation ~]# ps -aux | grep 8080
jenkins    7687 80.3 25.7 2359788 256212 ?      Ssl  09:49   0:32 /etc/alternatives/java -Dcom.sun.akuma.Daemon=daemonized -Djava.awt.headless=true -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
root       7760  0.0  0.0 112708   972 pts/0    R+   09:50   0:00 grep --color=auto 8080
  • 查看密码文件里的密码(此为初始管理员用户admin的密码)。通过浏览器访问填上密码(服务器IP+端口8080)
[root@workstation ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
7c1491b0219849f981255179e9981bba

在这里插入图片描述

  • 选择安装推荐插件
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 进入主界面
    在这里插入图片描述

退出登录后密码问题

退出后,再次登录使用admin用户, 密码为cat /var/lib/jenkins/secrets/initialAdminPassword得到的字符串

如果需要修改密码
在这里插入图片描述
在这里插入图片描述

Git+GitHub+Jenkins

在这里插入图片描述

开发者电脑准备

yum install git -y
  • 创建密钥对

[root@servera ~]# ssh-keygen -t rsa -f /root/.ssh/id_rsa -C "root@servera" -N ""
  • 在开发者电脑上查看并复制公钥
[root@servera ~]# cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOHXkXsoYB1JtMJtXBeZrtcqsRRKBJEAzxGCoUyGM0B7SQYBQXaes4xTtQjOjJkL5HWQdaSelGGA8ySRjKuseIdYsPPcG5kxARkJ1+C6jJp3MamzuxJCjo2n3hmmopfB4f2eE3Kn5kbAUcmJRJfjUCgufsFjuY836Np9HNLqqYOuZCAKJEQm/IMTJgZ13aq/ss6VcA/+IikX4d/+PDsgYdNYSL8IxKiThfNlv3NIdOqNxAz2q4mFg2Vj9o1hvfnqGDIxuXyDGjVLZAW6bvJliJvJs3MfD7f4tn8gyFlArxPT0tMS7ePbxGBCBj2XC8qW9lcmrXD2163pbP/N6Io+CT root@servera
  • 将密钥公钥添加到github
    在这里插入图片描述

GitHub新建仓库

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

开发者提交文件测试

  • 免密登录地址
git@github.com:rkun0068/jenkins.git
  • 开发者电脑设置开发者身份
[root@servera ~]# git config --global user.name "servera"
[root@servera ~]# git config --global user.email "rkun18@outlook.com"
  • 克隆项目到开发者本地电脑上
[root@servera ~]# git clone git@github.com:rkun0068/jenkins.git
  • 提交测试代码
[root@servera ~]# cd jenkins/
[root@servera jenkins]# echo "Jenkins Test " >> README.md
[root@servera jenkins]# git add README.md
[root@servera jenkins]# git commit -m "add README.md"
[master (root-commit) eb74eb9] add README.md1 file changed, 1 insertion(+)create mode 100644 README.md
[root@servera jenkins]# git branch
* master
[root@servera jenkins]# git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 228 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: To git@github.com:rkun0068/jenkins.git* [new branch]      master -> master
Branch master set up to track remote branch master from origin.
  • 验证
    在这里插入图片描述

Nginx服务器准备

在Nginx服务器上安装Nginx,并启动服务

 yum install epel-releaseyum install nginx -ysystemctl start nginxsystemctl enable nginx

Jenkins安装插件

Jenkins图形确认安装git plugin和publish over ssh插件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置jenkins通过Publish Over SSH免密连接Nginx

  • 在jenkins服务器生产空密码 密钥对

[root@workstation ~]# ssh-keygen -t rsa -f /root/.ssh/id_rsa -C "root@workstation" -N ""
  • 查看并复制私钥

[root@workstation ~]# cat ~/.ssh/id_rsa
  • 在jenkins中添加私钥
    在这里插入图片描述
    在这里插入图片描述
    点击Add,添加服务器配置
  • 在Jenkins服务器上配置对Nginx服务器的免密登录
#填上Nginx服务器IP地址
[root@workstation ~]# ssh-copy-id -i 192.168.182.132
  • 填写Nginx配置信息,测试连接成功后保存

在这里插入图片描述

添加Jenkins服务器公钥到GitHub

在这里插入图片描述

为Jenkins服务器添加凭据

凭据使Jenkins给字节构建项目授权使用的。
此文章中Jenkins通过SSH免密去找GitHub的项目仓库clone或pull项目代码。
但Jenkins服务本身不允许使用自己的私钥访问GitHub公钥,给凭据,让它可以实现功能就可以。

凭据是一种和第三方程序通讯的权限授权。本案例的凭据就是允许使用SSH免密。

可以使凭据在Jenkins里授权给任何需要SSH免密通讯的构建项目。

  • Jenkins界面添加凭据
    在这里插入图片描述

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

  • 添加凭据信息
    在这里插入图片描述
    在这里插入图片描述

Jenkins任务创建

  • 创建新任务
    在这里插入图片描述
  • 自定义任务名称与风格
    在这里插入图片描述
    在这里插入图片描述
  • 定义源码管理(如果URL错误,有可能使Jenkins服务器没有安装Git,Git安装即可)

在这里插入图片描述

  • 自定义构建方法和目标主机目录
    在这里插入图片描述

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

手动构建

  • 立即构建
    在这里插入图片描述
  • 查看
    在这里插入图片描述

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

  • 查看控制台输出信息
    在这里插入图片描述
  • Nginx服务器验证是否被上传到Nginx家目录

[root@serverb ~]# ls /usr/share/nginx/html/
404.html  50x.html  en-US  icons  img  index.html  nginx-logo.png  poweredby.png  README.md 
#可以看到README.md被传过来了

自动发布系统

在这里插入图片描述

GitLab上创建新仓库

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

  • 开发者电脑clone创建好的项目

[root@servera ~]# git clone git@192.168.182.133:root/auto_build_web.git[root@servera ~]# cd auto_build_web/
[root@servera auto_build_web]#
  • 开发者要产生ssh空密码密钥对,把公钥添加到gitlab

Jenkins安装对应插件

在这里插入图片描述

添加Jenkins服务器公钥到GitLab

  • Jenkins产生root用户SSH空密码密钥对
  • 添加公钥到GitLab
  • 复制GitLab上自动发布项目地址
  • 在Jenkins服务器上克隆仓库,确认连接OK

[root@workstation ~]# git clone git@192.168.182.133:root/auto_build_web.git

Jenkins创建自动构建任务

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
执行此脚本的是Jenkins服务器上的Jenkins用户

#!/bin/bash#源目录为jenkins存放任务文件的目录 
SOURCE_DIR=/var/lib/jenkins/workspace/$JOB_NAME/
#目标目录为nginx服务器的家目录
DEST_DIR=/usr/share/nginx/html
#使用rsync同步源到nginx服务器家目录(需要免密登录),IP为nginx服务器IP
/usr/bin/rsync -av --delete $SOURCE_DIR root@192.168.182.132:$DEST_DIR

配置Jenkins服务器上Jenkins用户

[root@workstation ~]# grep jenkins /etc/passwd
jenkins:x:997:995:Jenkins Automation Server:/var/lib/jenkins:/bin/false
[root@workstation ~]# usermod -s /bin/bash jenkins
[root@workstation ~]# grep jenkins /etc/passwd
jenkins:x:997:995:Jenkins Automation Server:/var/lib/jenkins:/bin/bash[root@workstation ~]# su - jenkins
-bash-4.2$ ssh-keygen -t rsa -C "jenkins user" -N ""-bash-4.2$ ssh-copy-id -i root@192.168.182.132

Jenkins全局安全配置

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

配置GitLab运行本地网络使用WebHook

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

为GitLab自动构建项目添加Webhook

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

代码自动发布测试

  • 开发者使用Git提交测试文件
[root@servera auto_build_web]# echo "auto_build_web" >> index.html
[root@servera auto_build_web]# git add index.html
[root@servera auto_build_web]# git commit -m "add index.html"
[master (root-commit) fddcaba] add index.html1 file changed, 1 insertion(+)create mode 100644 index.html
[root@servera auto_build_web]# git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 225 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)To git@192.168.182.133:root/auto_build_web.git* [new branch]      master -> master
Branch master set up to track remote branch master from origin.
[root@serverb ~]# cat /usr/share/nginx/html/index.html
auto_build_web

如果出现构建失败的情况很可能是某个主机rsync没有安装

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

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

相关文章

数值线性代数:奇异值分解SVD

本文记录计算矩阵奇异值分解SVD的原理与流程。 注1:限于研究水平,分析难免不当,欢迎批评指正。 零、预修 0.1 矩阵的奇异值 设列满秩矩阵,若的特征值为,则称为矩阵的奇异值。 0.2 SVD(分解)定理 设,则…

Open3D-ML自动驾驶点云目标检测与分割入门

当开始新的研究时,我的方法通常是测试不同的相关事物,直到有足够的经验让我开始将这些点联系起来。 在开始构建用于 3D 对象检测的自定义模型之前,我购买了一台 LiDAR 并处理了一些数据。 下一个明显的步骤是在我为自己的数据贴标签之前找出研…

SpringCloudAlibaba之Ribbon

Ribbon是nacos自带的负载均衡器,属于客户端的负载均衡 但是在Spring高级版本中让LoadBalancer替代了 本人用的是2.1.0的nacos,ribbon还没有被替换。 使用: 在配置类中:LoadBalanced BeanLoadBalancedpublic RestTemplate restT…

ChatGPT长文本对话输入方法

ChatGPT PROMPTs Splitter 是一个开源工具,旨在帮助你将大量上下文数据分成更小的块发送到 ChatGPT 的提示,并根据如何处理所有块接收到 ChatGPT(或其他具有字符限制的语言模型)的方法。 推荐:用 NSDT设计器 快速搭建可…

【FPGA IP系列】FIFO的通俗理解

FPGA厂商提供了丰富的IP核,基础性IP核都是可以直接免费调用的,比如FIFO、RAM等等。 本文主要介绍FIFO的一些基础知识,帮助大家能够理解FIFO的基础概念。 一、FIFO介绍 FIFO全称是First In First Out,即先进先出。 FIFO是一个数…

怎么选择合适的微信管理系统?

稳定好用的网页版微信CRM系统,随时随地可以登录,不用安排插件软件,不限制手机和电脑使用,电脑手机关机消息都是实时同步的 还有很多功能: 1、聚合聊天:支持多个微信号登录到系统上,一个页面就可…

WIZnet W51000S-EVB-PICO 入门教程(一)

概述 W5100S-EVB-Pico是基于树莓派RP2040和全硬件TCP/IP协议栈控制器W5100S的微控制器开发板-基本上与树莓派Pico板相同,但通过W5100S芯片增加了以太网功能。 W5100S-EVB-Pico特点 RP2040规格参数 双核Arm Cortex-M0 133MHz264KB 高速SRAM和2MB板载内存通过…

【计算机视觉中的 GAN 】 - 生成学习简介(1)

一、说明 在阅读本文之前,强烈建议先阅读预备知识,否则缺乏必要的推理基础。本文是相同理论GAN原理的具体化范例,阅读后有两个好处:1 巩固了已经建立的GAN基本概念 2 对具体应用的过程和套路进行常识学习,这种练习题一…

RocketMQ概论

目录 前言: 1.概述 2.下载安装、集群搭建 3.消息模型 4.如何保证吞吐量 4.1.消息存储 4.1.1顺序读写 4.1.2.异步刷盘 4.1.3.零拷贝 4.2.网络传输 前言: RocketMQ的代码示例在安装目录下有全套详细demo,所以本文不侧重于讲API这种死…

四种刷题模式的爱刷题无后端无数据库刷题应用网站H5源码

四种刷题模式的爱刷题无后端无数据库刷题应用网站H5源码。提供了简单轻量化的部署方式和详细的四种刷题模式教程。该应用使用JSON作为题库的存储方式,层次清晰、结构简单易懂。 配套的word模板和模板到JSON转换工具可供使用,方便将题库从word格式转换为…

抖音seo短视频账号矩阵系统技术开发简述

说明:本开发文档适用于抖音seo源码开发,抖音矩阵系统开发,短视频seo源码开发,短视频矩阵系统源码开发 一、 抖音seo短视频矩阵系统开发包括 抖音seo短视频账号矩阵系统的技术开发主要包括以下几个方面: 1.前端界面设…

SpringBoot的三层架构以及IOCDI

目录 一、IOC&DI入门 二、三层架构 数据库访问层 业务逻辑层 控制层 一、IOC&DI入门 在软件开发中,IOC(Inversion of Control)和DI(Dependency Injection)是密切相关的概念。 IOC(控制反转&a…

【每日一题】141. 环形链表

【每日一题】141. 环形链表 【每日一题】141. 环形链表题目描述解题思路 【每日一题】141. 环形链表 题目描述 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环…

37 coredump 的生成和使用

前言 呵呵 coredump 之前对于我而言也是一个挺陌生的概念 但是 只从开始了 linux 的相关学习之后, 对于这个 概念也有了一些 理解 呵呵 这里 以一些 简单的例子 来看一下 coredump 的生成和使用 首先执行 "ulimit -c unlimited" 测试用例1 - 除数为 0 root…

【TypeScript】TS入门级基础学习(一)

【TypeScript】TS入门级基础学习(一) 一、前言 TypeScript 是一种用于应用程序规模的 JavaScript 语言。 TypeScript 向 JavaScript 添加了可选类型,支持用于任何浏览器、任何主机、任何操作系统的大规模 JavaScript 应用程序的工具。 Type…

Spark(37):Streaming DataFrame 和 Streaming DataSet 创建

目录 0. 相关文章链接 1. 概述 2. socket source 3. file source 3.1. 读取普通文件夹内的文件 3.2. 读取自动分区的文件夹内的文件 4. kafka source 4.1. 导入依赖 4.2. 以 Streaming 模式创建 Kafka 工作流 4.3. 通过 Batch 模式创建 Kafka 工作流 5. Rate Source…

2023牛客暑期多校-J-Qu‘est-ce Que C‘est?(DP)

题意: 给定长度为n的数列,要求每个数都在的范围,且任意长度大于等于2的区间和都大于等于0,问方案数。。 思路: 首先要看出是dp题,用来表示遍历到第i位且后缀和最小为x的可行方案数(此时的后缀可以只有最…

Java 版 spring cloud +spring boot 工程系统管理 工程项目管理系统源码 工程项目各模块及其功能点清单

工程项目各模块及其功能点清单 一、系统管理 1、数据字典:实现对数据字典标签的增删改查操作 2、编码管理:实现对系统编码的增删改查操作 3、用户管理:管理和查看用户角色 4、菜单管理:实现对系统菜单的增删改查操…

linux下nginx的安装和使用

文章目录 📒安装nginx正常使用nginx包安装1️⃣上传到对应目录2️⃣解压nginx3️⃣检查是否启动成功 使用docker安装nginx 📒使用nginx1️⃣简单的反向代理2️⃣介绍location配置中root和alias的区别 📒安装nginx 正常使用nginx包安装 官网…

BLE基础理论/Android BLE开发示例

参考:https://blog.csdn.net/qq_36075612/article/details/127739150?spm1001.2014.3001.5502 参考: https://blog.csdn.net/qq_36075612/article/details/122772966?spm1001.2014.3001.5502 目录 蓝牙的分类传统蓝牙低功耗蓝牙 蓝牙专业词汇&#xff…