gitlab、jenkins安装及使用文档二

安装 jenkins

IP地址操作系统服务版本
192.168.75.137Rocky9.2jenkins = 2.450-1.1 jdk = 11.0.22 git = 2.39.3
192.168.75.138Rocky9.2gitlab-ce = 16.10.0

结合上文

jenkins安装

前期准备:
yum install -y epel-release
yum -y install net-tools  vim lrzsz wget git  yum-utils  telnet  unzip tar rsync
systemctl disable --now firewalld
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
setenforce 0
准备开始安装
wget http://pkg.jenkins.io/redhat/jenkins.repo
mv jenkins.repo /etc/yum.repos.d/
yum -y install java 
rpm --import http://pkg.jenkins.io/redhat/jenkins.io.key
rpm --import https://pkg.jenkins.io/redhat/jenkins.io.keyyum install -y jenkins --nogpgcheck 
报错 :
[MIRROR] jenkins-2.451-1.1.noarch.rpm: Curl error (60): SSL peer certificate or SSH remote key was not OK for https://mirrors.jenkins.io/redhat/jenkins-2.451-1.1.noarch.rpm [SSL certificate problem: certificate is not yet valid]
[FAILED] jenkins-2.451-1.1.noarch.rpm: No more mirrors to try - All mirrors were already tried without success                                                           The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'yum clean packages'.
Error: Error downloading packages:jenkins-2.451-1.1.noarch: Cannot download, all mirrors were already tried without success问题原因:
请确保您主机的系统时间设置正确,包括日期、时间和时区。SSL 证书的有效性与当前系统时间密切相关。
如果	系统时间不正确,可能会导致证书无法验证。
处理:date
修改系统时间即可
date -s 2024/3/28 
date -s 17:38:59

报错:
Public key for jenkins-2.451-1.1.noarch.rpm is not installed
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'yum clean packages'.
Error: GPG check FAILED处理:
vim /etc/yum.repo/jenkins.repo
[jenkins]
name=Jenkins
baseurl=http://pkg.jenkins.io/redhat
enabled=1
gpgcheck=0

继续安装

yum install -y jenkins
修改配置文件
配置文件位置 不一定在哪 ,目前作者的配置文件是在 /usr/下,有的小伙伴是在/etc/下
/etc/sysconfig/jenkins 
/usr/lib/systemd/system/jenkins.servicevim  /usr/lib/systemd/system/jenkins.service
User=jenkins
Group=jenkins
# 在该配置文件中,找到 [Service] 部分,然后添加或修改 StandardOutput 和 StandardError 选项,
# 指定日志的输出路径。配置如下:
StandardOutput=file:/var/log/jenkins/jenkins.log
StandardError=file:/var/log/jenkins/jenkins.log
# 配置文件中有端口,如果8080端口冲突可以自定义修改,默认8080
Environment="JENKINS_PORT=8080"# 创建 log 日志目录
mkdir /var/log/jenkins/systemctl daemon-reload
systemctl restart jenkins
systemctl enable jenkins
安装 git 客户端
yum install -y git
git --version
whereis git
安装mvn
wget https://dlcdn.apache.org/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz
tar -xf apache-maven-3.9.6-bin.tar.gz   
mv apache-maven-3.9.6 /usr/local/maven
vim /etc/profile
export MAVEN_HOME=/usr/local/maven/
export PATH=$PATH:${JAVA_PATH}:${MAVEN_HOME}/bin:source /etc/profile
mvn --version
访问地址:
http://192.168.75.137:8080

在这里插入图片描述

密码:more /var/lib/jenkins/secrets/initialAdminPassword

如果懒得自定义的话,直接安装推荐的插件就够用。

在这里插入图片描述
等待安装完成即可。

在这里插入图片描述

创建一个管理员账户

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

如果汉化不完全,一半中文一半英文,重启Jenkins就好了

在这里插入图片描述

创建任务

点击 新建item

关联上方的 gitlab项目名称(也可以自定义名称)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

报错处理:

在这里插入图片描述

创建SSH连接方式

点击添加,添加gitlab的私钥

在这里插入图片描述

在这里插入图片描述
选择完成之后报错解决。

创建HTTP连接方式

在这里插入图片描述

在这里插入图片描述

  • 以上两种连接方式(ssh、http)选择其中一种即可
编辑要拉取执行shell

在这里插入图片描述

#!/bin/bash
#action="$1" 
case $action in
'deploy')
# 目标目录路径TARGET_DIR="/data/www/diting/sources/admin/${BUILD_NUMBER}"echo "将当前jenkins项目的工作目录(git库的PHP代码)复制到指定目录"rsync -av --exclude='.git' ${WORKSPACE}/* $TARGET_DIR echo "创建vendor目录软连接"ln -s /data/www/diting/test-admin.vendor $TARGET_DIR/vendor echo "执行composer更新"cd $TARGET_DIR/usr/local/bin/composer update# echo "修改目录所有者"# chown -R gitlab-runner:gitlab-runner $TARGET_DIRecho "删除旧软连接"unlink /data/www/diting/test-adminecho "创建源码软连接"ln -s $TARGET_DIR /data/www/diting/test-adminecho "部署完成";;
# 
'rollback')echo "回滚操作"version="$2"echo "回滚版本 #$version"# 目标目录路径TARGET_DIR="/data/www/diting/sources/admin/$version"echo "源码目录 $TARGET_DIR"echo "检查源码目录"if [ ! -d $TARGET_DIR ]; thenecho "源码目录不存在了"exit 1fiecho "删除旧软连接"unlink /data/www/diting/test-adminecho "创建源码软连接"ln -s $TARGET_DIR /data/www/diting/test-adminecho "回滚完成"
;;
#
#*)
#    echo "无效的选项,请输入 'deploy' 或 'rollback'"
#    exit 1
#;;
esac

可以把脚本写到一个指定位置
然后再执行
也可以直接把脚本写到执行shell中。

在这里插入图片描述

创建目录:
mkdir -p /data/www/diting/
mkdir -p /data/www/diting/sources/admin/
mkdir -p /data/www/diting/test-admin.vendorchmod 755 /data/www/jenk-deploy.sh
chown -R jenkins.jenkins /data/www/jenk-deploy.sh
chown -R jenkins.jenkins /data/www/diting/
### 这一步可忽略 。。。。。。
安装 composeryum -y install php
php -v
cd /usr/local/bin/
curl -sS https://getcomposer.org/installer | php
mv composer.phar composer
chmod a+x /usr/local/bin/composer
[root@localhost ~]# composer______/ ____/___  ____ ___  ____  ____  ________  _____/ /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_//_/
Composer version 2.7.2# 因下载好的composer默认的下载地址是国外的,在下载的过程中网络不好或可能被墙,将下载的地址换成国内的地址即可实现加速。
# 即将配置信息添加到 Composer 的全局配置文件 config.json 中
composer config -g repo.packagist composer https://packagist.phpcomposer.com进入到项目目录
cd /data/www/diting/test-admin
/usr/local/bin/composer require
查看是否有报错
构建

点击保存,然后构建,点击 Build with Parameters

在这里插入图片描述

需求:将gitlab中更新代码,分发到两台web服务器中
一台是本机,一台是远端服务器

通过SSH发送文件或执行命令到远程服务器上
安装插件
  • 点击系统管理 —>插件管理—> Available plugins —> 搜索: publish over ssh –> 点击安装(install)
添加一台远程服务器
  • 点击系统管理 —》系统配置 —》在最下方找到 Publish over SSH 设置 (如图所示)

在这里插入图片描述

修改配置
  • 点击项目 —》配置 —》点击 构建后操作 —》选择 Send build artifacts over SSH

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

添加脚本
  • 在 Exec command 中 添加脚本,脚本如下
#!/bin/bash
#action="$1" 
case $action in
'deploy')
# 目标目录路径TARGET_DIR_copy="/data/www/diting/sources/admin/"    TARGET_DIR="/data/www/diting/sources/admin/${BUILD_NUMBER}"echo "将当前jenkins项目的工作目录(git库的PHP代码)复制到指定目录"
#    rsync -av --exclude='.git' ${WORKSPACE}/*  $TARGET_DIR rsync -av --exclude='.git' root@192.168.75.137:/data/www/diting/sources/admin/${BUILD_NUMBER}  $TARGET_DIR_copyecho "创建vendor目录软连接"ln -s /data/www/diting/test-admin.vendor $TARGET_DIR/vendor echo "执行composer更新"cd $TARGET_DIR/usr/local/bin/composer update# echo "修改目录所有者"# chown -R gitlab-runner:gitlab-runner $TARGET_DIRecho "删除旧软连接"unlink /data/www/diting/test-adminecho "创建源码软连接"ln -s $TARGET_DIR /data/www/diting/test-adminecho "部署完成";;
# 
'rollback')echo "回滚操作"version="$2"echo "回滚版本 #$version"# 目标目录路径TARGET_DIR="/data/www/diting/sources/admin/$version"echo "源码目录 $TARGET_DIR"echo "检查源码目录"if [ ! -d $TARGET_DIR ]; thenecho "源码目录不存在了"exit 1fiecho "删除旧软连接"unlink /data/www/diting/test-adminecho "创建源码软连接"ln -s $TARGET_DIR /data/www/diting/test-adminecho "回滚完成"
;;
esac
启动程序

在这里插入图片描述

查看结果

在这里插入图片描述

在这里插入图片描述

在服务器上查看
[root@localhost www]# ll -lrth  /data/www/diting/sources/admin/
total 0
drwxr-xr-x. 3 jenkins jenkins 105 Apr  7 14:52 1
drwxr-xr-x. 3 jenkins jenkins 105 Apr  7 14:53 2
drwxr-xr-x. 3 jenkins jenkins 105 Apr  7 14:57 3
..... (省略多个)
drwxr-xr-x. 3 jenkins jenkins 105 Apr  7 18:01 35
drwxr-xr-x. 3 jenkins jenkins 105 Apr  8 09:26 36
drwxr-xr-x. 3 jenkins jenkins 105 Apr  8 09:43 37
drwxr-xr-x. 3 jenkins jenkins 105 Apr  8 09:44 38
drwxr-xr-x. 3 jenkins jenkins 105 Apr  8 13:28 39
在服务器上会显示你所有完成的构建( 失败的并不会构建成功 )# 脚本中,先将程序拉取到  /data/www/diting/sources/admin/ 的目录下,然后软链到 test-admin中
# test-admin目录就是当前程序展示目录
[root@localhost www]# ll -lrth  /data/www/diting/
total 0
drwxr-xr-x. 2 jenkins jenkins  6 Apr  3 09:30 test-admin.vendor
drwxr-xr-x. 3 jenkins jenkins 19 Apr  7 14:46 sources
lrwxrwxrwx. 1 jenkins jenkins 33 Apr  8 13:28 test-admin -> /data/www/diting/sources/admin/39正常情况下,两台服务器的展示结果为一样。如果不一样,则错误,需要排查。
回滚操作

在这里插入图片描述

查看日志

在这里插入图片描述

查看服务器
[root@localhost www]# ll -lrth  /data/www/diting/
total 0
drwxr-xr-x. 2 jenkins jenkins  6 Apr  3 09:30 test-admin.vendor
drwxr-xr-x. 3 jenkins jenkins 19 Apr  7 14:46 sources
lrwxrwxrwx. 1 jenkins jenkins 33 Apr  8 13:28 test-admin -> /data/www/diting/sources/admin/39
[root@localhost www]#  ll -lrth  /data/www/diting/
total 0
drwxr-xr-x. 2 jenkins jenkins  6 Apr  3 09:30 test-admin.vendor
drwxr-xr-x. 3 jenkins jenkins 19 Apr  7 14:46 sources
lrwxrwxrwx. 1 jenkins jenkins 33 Apr  8 13:51 test-admin -> /data/www/diting/sources/admin/37
远程服务器
[root@gitlab ~]# ll -lrth  /data/www/diting/
total 0
drwxr-xr-x 3 jenkins jenkins 19 Apr  3 10:18 sources
drwxr-xr-x 2 jenkins jenkins 31 Apr  7 17:16 test-admin.vendor
lrwxrwxrwx 1 root    root    33 Apr  8 13:28 test-admin -> /data/www/diting/sources/admin/39[root@gitlab ~]#  ll -lrth  /data/www/diting/
total 0
drwxr-xr-x 3 jenkins jenkins 19 Apr  3 10:18 sources
drwxr-xr-x 2 jenkins jenkins 31 Apr  7 17:16 test-admin.vendor
lrwxrwxrwx 1 root    root    33 Apr  8 13:51 test-admin -> /data/www/diting/sources/admin/37
jenkins删除构建历史并重置构建序号
  • 系统管理 —> 工具和动作 --> 脚本命令行(Script Console) –> 输入脚本

println(Jenkins.instance.getJobNames()) //查看获取任务名列表
//要重置的任务名称
def jobName = Jenkins.instance.getJobNames()[0] //获取任务名
item = Jenkins.instance.getItemByFullName(jobName)
item.builds.each() { build ->
build.delete() //删除构建历史
}//重置构建序号
item.updateNextBuildNumber(1)

在这里插入图片描述

  • 結果為空(服务器中并不会删除记录)

在这里插入图片描述

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

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

相关文章

WSL访问adb usb device

1.Windows上用PowerShell运行: winget install --interactive --exact dorssel.usbipd-win 2.在WSLUbuntu上终端运行: sudo apt install linux-tools-generic hwdata sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-too…

Gitea是一个开源、轻量级的自托管Git解决方案

Gitea介绍 Gitea是一个由Go语言编写的、轻量级的、自托管的Git解决方案,类似于GitHub、GitLab等平台。它是用Go语言编写的开源软件,提供了Git版本控制系统的基本功能,包括代码托管、问题跟踪、代码审查、Wiki等。Gitea的设计目标是简单易用、…

酷开科技OTT大屏营销:开启新时代的营销革命

随着互联网技术的不断发展和普及,大屏已经成为越来越多家庭选择的娱乐方式。在这个背景下,酷开科技凭借其强大的技术实力和敏锐的市场洞察力,成功地将大屏转化为一种新的营销渠道,为品牌和企业带来了前所未有的商业机会。 酷开科技…

【数据结构与算法篇】双链表实现

【数据结构与算法篇】双链表实现(近300行实现代码) 🥕个人主页:开敲🍉 🔥所属专栏:数据结构与算法🍅 🌼文章目录🌼 1. List.h 头文件的声明 2. List.c 源文…

etcd相关知识整理归纳 —— 筑梦之路

什么是etcd? Etcd 是 CoreOS 团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,Etcd基于 Go 语言实现。 名字由来,它源于两个方面,unix的“/etc”文件…

软件概要设计说明书实际项目编制案例(直接套用)

1引言 1.1编写目的 1.2项目背景 1.3参考资料 2系统总体设计 2.1整体架构 2.2整体功能架构 2.3整体技术架构 2.4运行环境设计 2.5设计目标 3系统功能模块设计 3.1个人办公 3.2系统管理 4性能设计 4.1响应时间 4.2并发用户数 5接口设计 5.1接口设计原则 5.2接口…

【word2pdf】Springboot word转pdf(自学使用)

文章目录 概要整体介绍具体实现官网pom文件增加依赖 遇到的问题本地运行OK,发布到Linux报错还是本地OK,但是Linux能运行的,但是中文乱码 小结 概要 Springboot word 转 pdf 整体介绍 搜了一下,发现了能实现功能的方法有四种 U…

手写一个简单的 OrbitControls 轨道控制器

手写一个简单的 OrbitControls 轨道控制器 相信使用过THREE.JS的同学,都知道 OrbitControls 这个的轨道控制器,他是绕着一个观察点,来进行什么什么的… 反正就是那么个意思。 所以很明显OrbitControls的运动轨迹是一个球体,他是绕…

Unity面经(自整)——Unity基础知识

Unity基础知识 1. Image和RawImage的区别 Image比RawImage更耗性能。Image只能使用sprite属性的图片。而RawImage什么都可以使用 2. Unity3D中的碰撞器Collider和触发器Trigger的区别 碰撞器是触发器的载体,而触发器是碰撞器上的一个属性。 如果IsTrigger为fal…

TDengine taosAdapter启用HTTPS

HTTPS (Hypertext Transfer Protocol Secure ),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加…

算法打卡day45|动态规划篇13| Leetcode 300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组

算法题 Leetcode 300.最长递增子序列 题目链接:300.最长递增子序列 大佬视频讲解:300.最长递增子序列视频讲解 个人思路 没什么思路,菜就多练! 解法 动态规划 “子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而…

Razzashi Raptor

拉扎什迅猛龙 Razzashi Raptor 95000金(游戏币)比老虎便宜多了,捡漏啊 为啥我开团都不出,很生气,去打架!!

ArcGIS Desktop使用入门(三)图层右键工具——标注要素、将标注转换为注记

系列文章目录 ArcGIS Desktop使用入门(一)软件初认识 ArcGIS Desktop使用入门(二)常用工具条——标准工具 ArcGIS Desktop使用入门(二)常用工具条——编辑器 ArcGIS Desktop使用入门(二&#x…

【Godot4自学手册】第三十六节圆形移动或扇形移动的铁球

在第三十四节我实现了来回无限滚动的伤害铁刺球,这一节我准备实现一个圆形移动或扇形移动,并带有链条的铁球。效果如下: 一、实现原理 绕一点做圆周运动,简单的说就是: 每一帧根据旋转的角度计算出下一个位置的坐标…

Redis--16--Spring Data Redis

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Spring Data Redishttps://spring.io/projects/spring-data-redis 1.依赖2.RedisTemplate3.案例 序列化1.默认是 JdkSerializationRedisSerializer2.添加Redis配置文…

关于阿里云centos系统下宝塔面板部署django/中pip install mysqlclient失败问题的大总结/阿里云使用oss长期访问凭证

python版本3.12.0 项目的版本依赖 问题1 解决方案 sudo vim /etc/profile export MYSQLCLIENT_CFLAGS"-I/usr/include/mysql" export MYSQLCLIENT_LDFLAGS"-L/usr/lib64/mysql" Esc退出编辑模式 :wq退出并且保存 问题二 说是找不到 mysql.h头…

Html网页小游戏源代码

Html网页小游戏源代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Jello Jumping Game</title><meta name"viewport" content"widthdevice-width, initial-scale1"&…

[蓝桥杯] 岛屿个数(C语言)

提示&#xff1a; 橙色字体为需要注意部分&#xff0c;红色字体为难点部分&#xff0c;会在文章“重难点解答”部分精讲。 题目链接 蓝桥杯2023年第十四届省赛真题-岛屿个数 - C语言网 题目理解 这道题让我们求岛屿个数&#xff0c;那么我们就应该先弄懂&#xff0c;对于一…

基于小程序实现的医院预约挂号系统

作者主页&#xff1a;Java码库 主营内容&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】&#xff1a;Java 【框架】&#xff1a;spring…

如何访问远程MySQL数据库?

远程访问MySQL数据库是在不同设备之间实现数据交互的一种方式。通过远程访问&#xff0c;用户可以轻松地操作远程MySQL数据库&#xff0c;从而实现数据的读写、修改和查询等操作。本文将介绍远程访问MySQL数据库的原理和实现方法&#xff0c;以及一种被广泛应用的解决方案【天联…