Jenkins学习笔记3
git+github+jenkins:
架构图:

说明:jenkins知道github有更新了,就pull进行构建build,编译、自动化测试。然后部署到应用服务器。
maven java的项目构建工具。

在开发者电脑上创建空密码密钥对。

[root@git-developer ~]# git clone git@github.com:changchunhua2017/jenkins.git
Cloning into 'jenkins'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
[root@git-developer ~]#
[root@git-developer ~]#
[root@git-developer ~]#
[root@git-developer ~]# ll
total 4
-rw-------. 1 root root 1518 Sep 2 02:39 anaconda-ks.cfg
drwxr-xr-x 3 root root 35 Sep 20 15:27 jenkins
[root@git-developer jenkins]# git config --global user.name "changchunhua"
[root@git-developer jenkins]# git config --global user.email "chang_chunhua@qq.com"
[root@git-developer jenkins]# git config --global color.ui true[root@git-developer jenkins]# echo 11111 > 1.php
[root@git-developer jenkins]# ll
total 8
-rw-r--r-- 1 root root 6 Sep 20 15:50 1.php
-rw-r--r-- 1 root root 35 Sep 20 15:27 README.md[root@git-developer jenkins]# git add *
[root@git-developer jenkins]# git commit -m "Added 1.php"
[main cdc0119] Added 1.php1 file changed, 1 insertion(+)create mode 100644 1.php

可以看到1.php文件上传成功:

那开发者这块是没有问题的。
Nginx服务器的准备:
在Nginx服务器上安装nginx,并启动nginx。
[root@nginx ~]# yum install epel-release
[root@nginx ~]# yum install nginx -y
[root@nginx ~]# systemctl start nginx
[root@nginx ~]# systemctl enable nginx
jenkins安装插件:
jenkins图形安装publish over ssh插件:


可以看到Publish Over SSH插件已经安装完成。

确认Git plugin插件已经安装完成。
配置Jenkins服务器通过Publish over ssh免密连接Nginx:
1)第1步: 在jenkins服务器上生成空密码密钥对:
[root@localhost soft]# ssh-keygen
2)查看并复制私钥:
[root@localhost .ssh]# cat id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAqbt2nAw4gB3/3HGa06WZGfZZkccGXdp2dCZX3Vm6MH0zPaOA
egxf+VplgtIMYuXScy1d/4De02p5UTBBRP2Xyw+sXcfneikrffY7JGHY5stmYCR0
V9fNLnWZaoUpBn3DWXH4Cz4QeJCmXMU5hQ0guL3AX4IBQOTOVEiMMVOO8/Ae/BI8
qO7jZAINalrfxTZ+DpOvmOwbOAn0Zj7mt4cOBsX67mmHm2Ci1/5eeEZzJEcCR/xp
bBSnh5XXIMcfHD9d0SmWyyrgEm4JWngEFQVzauDvYWJfNqFcHuLp4nx6Jm+5QBZj
GqEF9TCevUzs5n2OHsGu4cZoRQaFT8zazpgpGwIDAQABAoIBAH+/dqAwmn3jFmYm
oy9U3gyqW/PaZjJRcQIusccJ95bzRJPJ8bLqiXm1zd1OlsAA1gqWRL8/kXZyFulC
dn2kmJDfNQ5InTJWtkNSBmV1t7jNsjn+dgp/hBDJtjR0ENKv6U3y94wOpHr59Byy
3H4FyXECcD3yLVtYWusYx1uA1oFGKVdmYkA+7WS9tQjjR6Itvt1hsfzydGQdyL00
9NxXA6A4R1BreMDjAToPD1AbmmY+jDYIujZNlZl2+mUBWFCCsJGPMs5OPvi2T9ir
9OSPbC/8v8iZo7l2EbHGvFCtyUpKypuy57zI521KT7wxMDjRQ2KFrY2lqu6ZwXi+
ANRC/VECgYEA1CKZ/LnPie0X8Sg0HrvHDrUsa38ODhpeXYzscSnbawXHkT/eF0e7
rTbUF2wEfmKZGK0zb/+AK1bt9KxufWLKJDWBFkjf5e1IqKfc34UzoEHK2v6KEfLV
3S07QFoYaFF2onu4HnAfPxnn8JIYHwdkVVRPSgBq/SxND8hPRMZ9xpUCgYEAzNRC
q59bZjEn3Jhi2eD6QtBCzfwN0AxAeXKlP8SvR79iAA1XJiZjoK9lAABrdncAU6SU
LkX6Z/RDLef9gos9xReV1kU7k7tY4UdvMk1YUEh7C9txHQNjeQHoXByq5Ftpz2m2
aDVgZ3wfRP8uI1xIdbYwqwKzkm9iAgTXWpWftO8CgYEAwp7UI7bdHy80Tf2Sg7fH
EklJbX3tiSbL+Iv3yIKcWX298BZmTXl0R6ALyUlCfik7SBZvIIuKLTjdqyIfZE2k
IsArpCRLtgiSJpmK3E66ZIa3816fkYP2jaqXt5xw1BQZAUz8SICZSi0cS+vc0WrY
tChbbgsgHRHtyVL+1pw8fFkCgYEAnGd8XUZ66UahtI1b9hkXoAsc5+MOvQ2N8e68
Bjxux295KqcFI+lua9ViXyTy6eumgTgLumXO9rAK2DPsXVFromMHFC2bd4w4KxV7
8EIlLHCcHIq9DbV3sH/naOavC15OJoYHNf2EFqEt02azWWbvIYs0EHEoo6mPghEm
TFIyOFsCgYBwaSZ5bGqIQ+L+ZgJq1d6FkGzKvS8lrWQGNVds4Ne5iNrMUoeRe6O7
hwsqypAdLhgbF8SgrXxYMOhHBrSMdnaqaAJl5V0H5ydC3rkX/UsGa1pCWsendpVq
TZzTR0pdmNiNYTslQW9ILm9ZkWpaQmwGFFGpTmRqPuYUZHU+WByiGw==
-----END RSA PRIVATE KEY-----
这段私钥,只是代表这台服务器的root账户私人免密,并不能代表jenkins软件免密。
3)在Jenkins中添加私钥:
安装了插件,才有这个Publish over SSH。

还需要添加要连的服务器:

然后点击保存。
还可以做一个测试。

这样,就是配置jenkins软件的私钥。
私钥是解密,公钥是加密。
4)在jenkins服务器上配置对nginx服务器的免密登录。
[root@localhost .ssh]# ssh-copy-id -i 192.168.17.121
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.17.121 (192.168.17.121)' can't be established.
ECDSA key fingerprint is SHA256:4dogA08L5gdfaA69BGekE13kzSuIP2vcRp9rsqYnpn0.
ECDSA key fingerprint is MD5:93:34:b9:61:03:cd:00:92:b9:91:3d:b6:6c:7a:84:95.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.17.121's password:Number of key(s) added: 1Now try logging into the machine, with: "ssh '192.168.17.121'"
and check to make sure that only the key(s) you wanted were added.
把Jenkins的服务器的公钥给Github:
直接将id_rsa.pub内容配置到Github中。

jenkins连接Github,私钥连接公钥。
为Jenkins服务器添加凭据:
凭据是Jenkins给自己的构建项目授权用的。
我们本项目案例里jenkins是通过ssh免密去找github的项目仓库clone或pull项目代码。
在前面的配置里已经把jenkins服务器的公钥添加到了github仓库上, 在jenkins服务器上root用户使用git clone 项目地址都可以成功。
但是jenkins服务本身并不允许使用自己的私钥去访问github的公钥, 给个凭据, 让它能做就解决问题了
总结: ==凭据是一种和第三方程序(如github,gitlab等)通讯的权限授权。本案例的凭据就是允许使用ssh免密==。
你可以把这个凭据在jenkins里授予给任何需要ssh免密通讯的构建项目。
在Jenkins里添加凭据:






之前私钥是连接Nginx的私钥,这个私钥配置是连接前面的Github的私钥。
小结:

相关文章:
Jenkins学习笔记3
gitgithubjenkins: 架构图: 说明:jenkins知道github有更新了,就pull进行构建build,编译、自动化测试。然后部署到应用服务器。 maven java的项目构建工具。 在开发者电脑上创建空密码密钥对。 [rootgit-developer ~…...
基于单片机火灾报警器仿真设计
一、系统方案 1、本设计采用51单片机作为主控器。 2、DS18B20采集温度值送到液晶1602显示。 3、MQ2采集烟雾值,送到液晶1602显示。 4、按键设置温度报警值,大于报警值,声光报警。 二、硬件设计 原理图如下: 三、单片机软件设计…...
阿里测开面试大全(一)附答案完整版
万字长文,建议收藏 1 什么是POM,为什么要使用它? POM是Page Object Model的简称,它是一种设计思想,而不是框架。大概的意思是,把一个一个页面,当做一个对象,页面的元素和元素之间操…...
STL-常用容器
string容器 string构造函数 string本质:类 string和char*区别: char* 是一个指针 string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。 特点: string类内部封装了很多成员方法 …...
【owt】关闭microk8s 等无关服务
打算部署下owt,发现之前跑了microk8s ,一直运行:操作指令 // 1. 启动 microk8s.start// 2. 关闭 microk8s.stop// 3. kubectl 操作 // --- 查看 cluster microk8s.kubectl cluster-info// --- 查看 nodes microk8s.kubectl get nodes// --- 查看 pods microk8s.kubectl get …...
【面试题】——Spring
1.Spring是什么? Spring是一个开源的Java应用框架,它提供了广泛的基础设施支持,用于构建Java应用程序。极大提高了开发效率。它提供了一种轻量级的编程模型,通过依赖注入(Dependency Injection)和面向切面…...
【算法思想-排序】根据另一个数组次序排序 - 力扣 1122 题
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…...
毕业设计|基于stm32单片机的app视频遥控抽水灭火小车设计
基于stm32单片机的app视频遥控抽水灭火水泵小车设计 1、项目简介1.1 系统构成1.2 系统功能 2、部分电路设计2.1 L298N电机驱动电路设计2.2 继电器控制电路设计 3、部分代码展示3.1 小车控制代码3.1 水泵控制代码 4 演示视频及代码资料获取 1、项目简介 视频简介中包含资料http…...
编译原生安卓aosp源码,实现硬改以及定位
系列文章目录 第一章 安卓aosp源码编译环境搭建 第二章 手机硬件参数介绍和校验算法 第三章 修改安卓aosp代码更改硬件参数 第四章 编译定制rom并刷机实现硬改(一) 第五章 编译定制rom并刷机实现硬改(二) 第六章 不root不magisk不xposed lsposed frida原生修改定位 第七章 安卓…...
找单身狗。一个数组中只有两个数字出现一次,其他数字出现了两次,编写一个函数找出这两个只出现一次的数字
例:在{1 2 3 4 5 6 1 2 3 4}找出5和6 方法二: 设计思想: 1.分组原理 (1)将所有数字进行异或,相同数字异或为零,所以只会剩5^6,即为异或的结果xor_result (…...
Java数据结构技巧
Java数据结构技巧 1、循环 for-each循环如果不是"[]"的数组类型,则需要提前判断数据结构是否为空,否则有可能会有空指针异常。 2、对于List对象的i到j位进行排序 for(List<String> now_result:result){List<String> sublist …...
easyui disabled 属性设置
1.设置disabled $("#id").attr("disabled",true); 或 $("#id").attr("disabled","随意字符"); easyui写法 $("#id").numberbox("textbox").attr("disabled", true); $("#id")…...
使用容器运行Nginx应用及Docker命令
目录 一、使用容器运行Nginx应用 1.1 使用docker run命令运行Nginx应用 1.1.1 观察下载容器镜像过程 1.1.2 观察容器运行情况 编辑 1.2 访问容器中运行的Nginx服务 1.2.1 确认容器IP地址 1.2.2 容器网络说明 1.2.3 在主机中使用curl命令容器IP地址访问 二、Docker命…...
fastapi 基本介绍+使用
FastAPI是一个基于Python 3.6的现代、快速(高性能)的web框架,它使用Starlette作为其底层Web框架。FastAPI有很好的文档和丰富的功能,包括自动为路由生成API文档、查询参数验证、依赖注入、WebSocket等等。 以下是一个FastAPI的基…...
C语言的结构体的认识
注:类似于①、②……是代码的编写顺序,也是对下方代码的注解 【①】、【②】……是用到了之前的代码 #include <stdio.h> //②定义生日结构体,必须声明在前面不然会报错,c语言是从上到下执行的(这点要注意&#…...
只通过在vimrc文件写东西来实现或安装vim的插件
2023年9月23日,周日上午 有时候觉得用插件管理器来安装插件太麻烦了, 所以我就在想能不能只通过在vimrc文件写东西来实现或安装vim的插件, 不过这样做肯定有很大的局限性,但我会尽量做到最好的效果 不定期更新 把下面这些代码…...
云原生Kubernetes:K8S存储卷
目录 一、理论 1.存储卷 2.emptyDir 存储卷 3.hostPath卷 4.NFS共享存储 5.PVC 和 PV 6.静态创建PV 7.动态创建PV 二、实验 1.emptyDir 存储卷 2.hostPath卷 3.NFS共享存储 4.静态创建PV 5.动态创建PV 三、问题 1.生成pod一直pending 2.shoumount -e未显示共享…...
“五育”并举育人体系构建的实践研究课题实施方案
目录 一、研究背景与意义 二、课题理论依据 三、国内外研究情况与现状 四、研究目标...
小样本目标检测:ECEA: Extensible Co-Existing Attention for Few-Shot Object Detection
论文作者:Zhimeng Xin,Tianxu Wu,Shiming Chen,Yixiong Zou,Ling Shao,Xinge You 作者单位:Huazhong University of Science and Technology; UCAS-Terminus AI Lab 论文链接:http://arxiv.org/abs/2309.08196v1 内容简介: 1&…...
Android 10.0 系统开启和关闭黑白模式主题功能实现
1. 概述 在10.0的rom系统开发定制化中,在系统SystemUI的下拉状态栏中,产品开发功能需求要求添加黑白模式功能开关的功能,就是打开黑白模式,系统颜色就会变成黑白颜色, 关闭黑白模式开关系统就会变成彩色模式,所以就需要了解下系统是怎么设置黑白模式和彩色模式的,然后添…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
