gitlab、jenkins安装及使用文档二

news2024/11/25 3:26:26

安装 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.key

yum 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.service

vim  /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_DIR
    
    echo "删除旧软连接"
    unlink /data/www/diting/test-admin
    echo "创建源码软连接"
    ln -s $TARGET_DIR /data/www/diting/test-admin
    echo "部署完成"
    ;;
# 
'rollback')
	echo "回滚操作"
	version="$2"
	echo "回滚版本 #$version"
	# 目标目录路径
	TARGET_DIR="/data/www/diting/sources/admin/$version"
    echo "源码目录 $TARGET_DIR"
    echo "检查源码目录"
    if [ ! -d $TARGET_DIR ]; then
        echo "源码目录不存在了"
        exit 1
    fi
    echo "删除旧软连接"
    unlink /data/www/diting/test-admin
    echo "创建源码软连接"
    ln -s $TARGET_DIR /data/www/diting/test-admin
    echo "回滚完成"
;;
#
#*)
#    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.vendor

chmod 755 /data/www/jenk-deploy.sh
chown -R jenkins.jenkins /data/www/jenk-deploy.sh
chown -R jenkins.jenkins /data/www/diting/
### 这一步可忽略 。。。。。。
安装 composer

yum -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_copy
    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_DIR
    
    echo "删除旧软连接"
    unlink /data/www/diting/test-admin
    echo "创建源码软连接"
    ln -s $TARGET_DIR /data/www/diting/test-admin
    echo "部署完成"
    ;;
# 
'rollback')
	echo "回滚操作"
	version="$2"
	echo "回滚版本 #$version"
	# 目标目录路径
	TARGET_DIR="/data/www/diting/sources/admin/$version"
    echo "源码目录 $TARGET_DIR"
    echo "检查源码目录"
    if [ ! -d $TARGET_DIR ]; then
        echo "源码目录不存在了"
        exit 1
    fi
    echo "删除旧软连接"
    unlink /data/www/diting/test-admin
    echo "创建源码软连接"
    ln -s $TARGET_DIR /data/www/diting/test-admin
    echo "回滚完成"
;;
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.coloradmin.cn/o/1591281.html

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

相关文章

AIGC的崛起:定义未来内容创作的新纪元

🌟文章目录 🌟AIGC简介🌟 AIGC的相关技术与特点🌟AIGC有哪些应用场景?🌟AIGC对其他行业影响🌟面临的挑战与问题🌟AIGC未来发展 🌟AIGC十大热门网站推荐: 文心…

一键开启Scrum回顾会议的精彩时刻

其实回顾会议作为一个检视、反馈、改进环节,不仅在传统的瀑布管理模式中,还是在Scrum一类的敏捷管理流程中,都是非常重要的活动。一些团队认为它无法产生直接的价值,所以有意忽略了这个会议;一些团队在越来越多的回顾中…

【Python】面向对象(专版提升2)

面向对象 1. 概述1.1面向过程1.2 面向对象 2. 类和对象2.1 语法2.1.1 定义类2.1.2 实例化对象 2.2 实例成员2.2.1 实例变量2.2.2 实例方法2.2.3 跨类调用 3. 三大特征3.1 封装3.1.1 数据角度3.1.2 行为角度3.1.3 案例:信息管理系统3.1.3.1 需求3.1.3.2 分析3.1.3.3 设计 3.2 继…

MySQL·:执行一条查询语句期间发生了什么?

MySQL的架构分为两层,Server 层和存储引擎层 server层负责建立连接、分析和执行SQL,MySQL,MySQL大多数的核心功能模块都在在这里实现,下图上半部分都是server层做的事情,另外,所有的内置函数(如…

Springboot+Vue项目-基于Java+MySQL的房产销售系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…

JS - BOM(浏览器对象模型)

BOM 浏览器对象模型 BOM可以使我们通过JS来操作浏览器 在BOM中为我们提供了一组对象,用来完成对浏览器的操作 BOM对象 BOM(Browser Object Model)是指浏览器对象模型,它提供了与浏览器窗口进行交互的对象和方法。BOM包括一些核…

C++——StackQueue

目录 一Stack 1介绍 2接口 3模拟实现 4栈的oj题 二Queue 1介绍 2接口 3模拟实现 三容器适配器 1再谈栈和队列 四优先级队列 1接口 ​编辑 2仿函数 五dequeue的简单介绍 一Stack 1介绍 先来看看库中对栈的介绍: 1. stack是一种容器适配器&#x…

scaling laws for neural language models

关于scaling law 的正确认识 - 知乎最近scaling law 成了最大的热词。一般的理解就是,想干大模型,清洗干净数据,然后把数据tokens量堆上来,然后搭建一个海量H100的集群,干就完了。训练模型不需要啥技巧,模型…

解决 App 自动化测试的常见痛点!

App 自动化测试中有些常见痛点问题,如果框架不能很好的处理,就可能出现元素定位超时找不到的情况,自动化也就被打断终止了。很容易打消做自动化的热情,导致从入门到放弃。比如下面的两个问题: 一是 App 启动加载时间较…

Vue 移动端(H5)项目怎么实现页面缓存(即列表页面进入详情返回后列表页面缓存且还原页面滚动条位置)keep-alive缓存及清除keep-alive缓存

一、需求 产品要求:Vue移动端项目进入列表页,列表页需要刷新,而从详情页返回列表页,列表页则需要缓存并且还原页面滚动条位置 二、实现思路 1、使用Vue中的keep-alive组件,keep-alive提供了路由缓存功能 2、因为我项…

java快速构建飞书API消息推送、消息加急等功能

文章目录 飞书机器人自定义机器人自定义应用机器人 自定义应用发送消息普通文本 text富文本 post图片 image文件 file语音 audio视频 media消息卡片 interactive分享群名片 share_chat分享个人名片 share_user 批量发送消息消息加急发送应用内加急发送短信加急 发送电话加急spr…

Linux的网口名字的命名规则

在工作中,偶尔看到有些机器的网口名字是以ethX命令,有些则以enpXsX这种名字命名。网上的资料说的都不太明白,资料也无据可查,很难让人信服。于是决定自己查了下官方的资料和源码,把这些搞清楚。 官方文档:Predictable…

visual studio 2017开发QT框架程序

1. 配置开发环境 首先创建项目 进入到项目后,右键点击项目点击属性,配置如下:

使用 create-vue 脚手架工具创建一个基于 Vite 的项目,并包含加入 Vue Router 等可选项

如果你打算启动一个新项目,你可能会发现使用 create-vue 这个脚手架工具更容易,它能创建一个基于 Vite 的项目,并包含加入 Vue Router 的选项,指令如下: // npm npm create vuelatest// yarn yarn create vue// pnpm …

C语言中抽象的编译和链接原理

今天04.12,身体小有不适,但是睡不着觉,秉着不能浪费时间的原则,现在就简单写一下有关我们C语言中编译和链接的大体过程吧,因为编译和链接是比较抽象的,而且内容是比较底层,我们这里就简单了解它…

Docker 镜像推送到docker hub

查看容器 #sudo docker ps -a commit容器为镜像 $ sudo docker commit d7b5e8d56a75 ubuntu_pytorch39_v4 #sha256: ********** 查看镜像信息 $ sudo docker images 登录 docker hub $ sudo docker login --username用户名 registry.cn-beijing.aliyuncs.com #密码 为…

【电控笔记6】电流回路+延迟效应

问题提出 数字控制系统的delay: 5.4节有介绍T0=0.5TS 低通滤波器的时间常数? 可用示例程序 m2 2 1b 如下图画出开环系统的伯德图进行比较,如图 2-2-4 所示,由于延迟组件会侵蚀系统的相位,因此从图可以看出,加入延迟效应后,q轴电流回路的相位裕度(Phase Margin) 从…

jsoncpp 编译和使用

原文链接: jsoncpp的编译和使用 jsoncpp 编译出库文件 1.从github仓库下载 2.下载 cmake 工具 3.生成VS项目 4.编译得到需要的库文件 jsoncpp 的使用 查看原文

WebGL 2.0相较于1.0有什么不同?

作者:STANCH 1.概述 WebGL 1.0自推出以来,已成为广泛支持的Web标准,既能跨平台,还免版税。它通过插件为Web浏览器带来高质量的3D图形,这是迄今为止市场上使用最广泛的Web图形,并得到Apple,Goog…

如何使用 ArcGIS Pro 制作热力图

热力图是一种用颜色表示数据密度的地图,通常用来显示空间分布数据的热度或密度,我们可以通过 ArcGIS Pro 来制作热力图,这里为大家介绍一下制作的方法,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的POI数…