Jenkins学习笔记5

2023-09-21 09:44:14

[root@localhost ~]# cd  /var/lib/jenkins/workspace/nginx_root_sync
[root@localhost nginx_root_sync]# ll
total 16
-rw-r--r-- 1 jenkins jenkins  6 Sep 20 20:57 1.php
-rw-r--r-- 1 jenkins jenkins  5 Sep 20 20:57 2.php
-rw-r--r-- 1 jenkins jenkins  5 Sep 20 21:17 3.php
-rw-r--r-- 1 jenkins jenkins 35 Sep 20 20:57 README.md

 这个目录其实就是一个workspace。

自动发布系统:

SSH免密:

开发者要产生ssh空密码密钥对,把公钥添加到gitlab(过程省略)

在开发者进行git clone创建好的项目,进行开发

[root@git-developer ~]# git clone git@192.168.17.118:root/auto_build_web.git
Cloning into 'auto_build_web'...
The authenticity of host '192.168.17.118 (192.168.17.118)' 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
Warning: Permanently added '192.168.17.118' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
[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 21:41 auto_build_web
drwxr-xr-x  3 root root   74 Sep 20 21:16 jenkins

 写好代码并上传:

[root@git-developer auto_build_web]# echo 1111 > 1.php
[root@git-developer auto_build_web]# git add *
[root@git-developer auto_build_web]# git commit -m "Added 1.php"
[main e5d9341] Added 1.php
 1 file changed, 1 insertion(+)
 create mode 100644 1.php


[root@git-developer auto_build_web]# git push -u origin main
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 275 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.17.118:root/auto_build_web.git
   e223804..e5d9341  main -> main
Branch main set up to track remote branch main from origin.

Jenkins安装对应的插件:

jenkins安装gitlab和gitlab hook插件:

安装好之后,要重启下jenkins。 

Available:可获得的。

Installed:已安装的。

添加Jenkins服务器公钥到gitlab:

第1步: jenkins产生root用户的ssh空密码密钥对(步骤省略)

添加公钥到gitlab:

测试下连通性:

在jenkins-server服务器上,通过git clone方法测试。

在jenkins服务器上克隆仓库,确认连接OK

[root@jenkins-server ~]# git clone git@192.168.17.118:root/auto_build_web.git
Cloning into 'auto_build_web'...
The authenticity of host '192.168.17.118 (192.168.17.118)' 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
Warning: Permanently added '192.168.17.118' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (6/6), done.


[root@jenkins-server ~]# ll
total 4
-rw-------. 1 root root 1518 Sep  2 02:39 anaconda-ks.cfg
drwxr-xr-x  3 root root   48 Sep 20 22:10 auto_build_web
drwxr-xr-x  2 root root   42 Sep 20 11:28 soft


[root@jenkins-server ~]# cd auto_build_web/
[root@jenkins-server auto_build_web]# ll
total 12
-rw-r--r-- 1 root root    5 Sep 20 22:10 1.php
-rw-r--r-- 1 root root 6183 Sep 20 22:10 README.md

Jenkins

这是一个构建任务名称:

 然后点击OK。

这个root凭据需要进行下确认。

更改下主分支名称,不是master,是main。

Gitlab知道自己的projects或者仓库发生了变化,通过WebHook告诉jenkins,触发。

生成token令牌。

 构建:这次我们不使用Publish over SSH了。我们使用执行Shell。

使用Shell,那说明我们可以使用Shell来发挥了。

#!/bin/bash
SOURCE_DIR=/var/lib/jenkins/workspace/$JOB_NAME/
DEST_DIR=/usr/share/nginx/html

/usr/bin/rsync -av --delete $SOURCE_DIR root@192.168.17.121:$DEST_DIR

rsync这个工具还是很强大的,需要学习下。

$JOB_NAME Name of the project of this build。

 另外,执行此脚本不再是使用publish over ssh插件,而是使用jenkins服务器上的jenkins用户来执行的。

[root@jenkins-server ~]# grep jenkins /etc/passwd
jenkins:x:998:996:Jenkins Automation Server:/var/lib/jenkins:/bin/false


[root@jenkins-server ~]# usermod -s /bin/bash jenkins


[root@jenkins-server ~]# grep jenkins /etc/passwd
jenkins:x:998:996:Jenkins Automation Server:/var/lib/jenkins:/bin/bash

让jenkins具有登录权限。能够使用su jenkins命令进行切换。

问题: 既然是使用jenkins服务器上的jenkins用户来执行,为什么rsync不传给10.1.1.14的jenkins用户,而是传给它的root用户?

答: 因为10.1.1.14上没有jenkins用户,就算有jenkins用户,对/usr/share/nginx/html也没有写权限

我们再看下/usr/share/nginx/html目录的权限:

html的目录的拥有者是root,具有可读可写可执行的权限。

然后再执行命令:

再确认下rsync这个工具有没有安装:

小结:

使用jenkins用户执行rsync脚本同步到nginx的root用户。

再配置Jenkins跟gitlab的对接:

配置gitlab允许本地网络使用webhook:

gitlab默认在本地网络不能使用webhook,所以我们配置允许。(使用管理员配置,普通用户看不到下面的扳手图标。)

 这个SSL verification的选项要去掉。

安全带来的问题对运维来说是麻烦。

Urlis blocked: Requests to the local network are not allowed

在配置的过程中遇到这个问题。

那一切就准备就绪。

然后我这边也将几个系统的时间重新进行了同步,保证每台服务器的时间都是相同的。

ntpdate time1.aliyun.com

systemctl restart ntpd

没有出现构建的自动运行,检查发现这个地方没有被勾选。Push events。

看到jenkins的这个地方开始进行构建。

可以看到文件已经同步到了nginx-server服务器上了。

然后我们再看下构建的日志:

更多推荐

基于FPGA的图像白平衡算法实现,包括tb测试文件和MATLAB辅助验证

目录1.算法运行效果图预览2.算法运行软件版本3.部分核心程序4.算法理论概述5.算法完整程序工程1.算法运行效果图预览2.算法运行软件版本vivado2019.2matlab2022a3.部分核心程序`timescale1ns/1ps////Company://Engineer:////CreateDate:2023

全志H3 Linux编译尝试

全志H3Linux编译尝试主要参考:https://blog.csdn.net/qq_40731414/article/details/118684473部分内容介绍来自GPT,但是代码部分都会进行测试一、简介Linux编译的作用:生成可执行的内核映像:编译Linux内核的主要目的是从源代码生成一个可执行的内核映像(例

JDBC基本概念

什么是JDBCJDBC概念JDBC(JavaDataBaseConnectivity)是一套统一的基于Java语言的关系数据库编程接口规范。该规范允许将SQL语句作为参数通过JDBC接口发送给远端数据库,远端数据库接收到SQL语句后进行语法分析、验证,然后执行、响应。JDBC驱动在遵循统一的JDBC接口规范基础上,不同

一文了解亚马逊云科技适用于 Amazon Lightsail 的托管数据库

AmazonLightsail是亚马逊云科技提供的一种易上手使用、月度价格经济实惠,并包括了计算实例、容器、存储、数据库的虚拟专用服务器。在创建时可以进行业务蓝图选择,可选择包含多种操作系统(Linux/Windows等)或操作系统加上典型应用进行快速配置并可根据需求进行包括CPU、内存、存储、传输遂率等多种机型的快速

嵌入式:驱动开发 Day7

作业:基于GPIO子系统,编写LED的驱动程序和应用程序驱动程序:myled.c#include<linux/init.h>#include<linux/module.h>#include<linux/cdev.h>#include<linux/fs.h>#include<linux/device.h>#include

嵌入式Linux驱动开发(I2C专题)(五)

I2C系统驱动程序模型参考资料:Linux内核文档:Documentation\i2c\instantiating-devices.rstDocumentation\i2c\writing-clients.rstLinux内核驱动程序示例:drivers/eeprom/at24.c1.I2C驱动程序的层次I2CCore

北斗GPS网络时钟系统(子母钟系统)助力智慧教室建设

北斗GPS网络时钟系统(子母钟系统)助力智慧教室建设北斗GPS网络时钟系统(子母钟系统)助力智慧教室建设HR系列型NTP网络时钟系统是由我公司精心设计、自行研发生产的一套通过网口与母钟连接的子钟,接收母钟发送来的时间信息(信息内容:年、月、日、时、分、秒),将这些时间信息准确无误的显示出来。子钟带后备电池,停电时不显示

下拉框组件的封装(element ui )

目录实现思路创建通用的下拉选择框组件如何使用这个组件结语当你使用Vue.js构建Web应用时,封装可复用组件是提高开发效率和代码可维护性的关键之一。在这篇文章中,我们将探讨如何使用Vue.js来创建一个通用的下拉选择框组件,以及如何将它封装成一个可配置的组件。实现思路一级联动先从饿了么拿下拉列表数据处理提示名处理设定默

算法(三)

哈希表算法章节(1)Ascall码文章推荐给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。classSolution{publicbooleanisAnagram(Strings,Stringt){//先说明一下字母异位词的定义://两

IBM存储设备

因工作的原因,本人以前在国内某大型金融机构工作,机器全是采购的IBM小型机,有X系列,有P系列。它们有一些特性,我总结了一下,分享出来,供大家选型参考。1.RAID控制器双活动型热插拔控制器,硬件XOR引擎2.缓存每个控制器2GB缓存;具备写缓存断电保护,系统外部断电后,写缓存数据可永久保留到闪存盘上3.主机接口提供≥

Zookeeper集群 + Kafka集群

kafka不能离开,需要通过zookeeper来管理定义Zookeeper是一个开源的分布式服务管理框架,存储业务服务节点元数据及状态信息,并把在Zookeeper上注册的服务器节点的状态信息通知给客户端(Zookeeper=文件系统+通知机制)工作机制☆☆☆☆☆从设计模式角度来理解:是一个基于观察者模式设计的分布式服

热文推荐