自动化构建平台(一)Linux下搭建私有代码仓库Gitblit的安装和使用详解

文章目录

  • 前言
  • 一、Gitblit的安装和使用
    • 1、本地安装
    • 2、docker下安装
    • 3、Gitblit使用简介
    • 4、Gitblit仓库权限控制
    • 5、Gitblit邮件配置
  • 总结


前言

代码版本管理,git模式应该是目前最流行的代码管理软件。目前支持git的管理软件有很多。
Gitblit是一个小型的代码仓库管理软件,功能不是很多,优点是:小巧、CPU和内存占用比较少,对于小团队来说基本够用。Gitblit官网点击这里。


一、Gitblit的安装和使用

1、本地安装

进入官网,如下图,根据对应的系统选择合适的版本:
在这里插入图片描述
这里我们下载Linux下的最新版本:gitblit-1.9.3.tar.gz
解压:

tar -xzvf gitblit-1.9.3.tar.gz

进入目录查看文件信息:

mv gitblit-1.9.3 /opt/gitblit
cd /opt/gitblit
ls -alh

在这里插入图片描述

这里的一堆sh文件包含了启动、停止、安装服务等的操作,配置文件在data/defaults.properties里面,我们主要关心这几个配置:

  • server.contextPath
    访问的根路径,可以不做修改,默认为/
  • server.httpPort
    服务启动的端口,这里我们修改为:server.httpPort = 8083
  • server.shutdownPort
    服务关闭端口,默认是8081,有需要的可以修改,因为8081比较常用
  • server.redirectToHttpsPort
    是否强制跳转HTTPS,默认false

其他的配置大家可以自行查看说明进行配置。

另外gitblit需要在Java8上运行,如果电脑上装了多个jdk版本,我们可以修改gitblit.sh中的内容如下:

#!/bin/bash
#java -cp "gitblit.jar:ext/*" com.gitblit.GitBlitServer --baseFolder data

/usr/java/jdk1.8.0_77/bin/java -cp "gitblit.jar:ext/*" com.gitblit.GitBlitServer --baseFolder data

将Java版本执行JDK8的目录,如果你的电脑本身就是jdk8可以不用修改

启动项目:

sh gitblit.sh

如果没什么错误,表示启动成功。

注意:

  1. 这里是前台启动,当我们关闭远程连接时,就会挂掉,Gitblit提供安装服务的脚本,我们将系统安装为系统脚本。根据自己的系统运行install-service-*.sh的文件即可。

  2. Gitblit默认的安装路径是/opt/gitblit,在install-service-*.sh的文件里面也是使用绝对路径,如果你不是安装在/opt下面,将install文件的绝对路径改成你实际的路径

  3. 安装成功后,就可以使系统服务的命令来管理Gitblit了

比如我使用的是install-service-centos.sh,然后在系统里执行:

service gitblit status
Usage: /etc/init.d/gitblit {start|stop|restart|force-reload}

可以看出只支持:start|stop|restart|force-reload这几条指令,到此本地安装结束。

2、docker下安装

这里有一个坑,如果通过官方提供的docker镜像来安装,会有各种问题,通过搜索找到了其他的一些镜像没有问题。这里我们使用jacekkow/gitblit镜像,数据目录挂载到/usr/local/gitblit下面

docker run -d --name=gitblit \
-p 8083:8080 \
-p 8443:8443 \
-p 9418:9418 \
-p 29418:29418 \
-v /usr/local/gitblit:/opt/gitblit-data \
jacekkow/gitblit

然后我们访问:http://ip:8083如果正常,表示启动成功

3、Gitblit使用简介

安装成功后,我们访问http://ip:8083,界面如下所示:
在这里插入图片描述
默认用户名和密码,在【gitblit/data/users.conf】里面,我们查看文件

cat users.conf

如下所示:

[user "admin"]
        password = admin
        role = "#admin"
        role = "#notfederated"

默认用户和密码都是admin/admin

登录成功后,下面我们创建一个仓库来演示如何使用
在这里插入图片描述
点击创建版本库
在这里插入图片描述
点击创建
在这里插入图片描述

然后点击仓库可查看详情

在这里插入图片描述
在这里可以查看仓库的链接地址,一般我们直接使用http协议,这里有个不友好的地方就是,快捷复制插件使用的是flash,但是目前大部分浏览器都禁用了flash,所以只能手动选择来复制了。

注意这里前面的admin是管理员,如果是发送给其他用户的,需要使用其他用户,比如有个test用户,那么clone地址应该是:

git clone http://test@192.168.101.170:8083/r/test.git

我们使用admin用户运行以下命令clone仓库:

git clone http://admin@192.168.101.170:8083/r/test.git

运行结果:

Cloning into 'test'...
remote: Counting objects: 4, done
remote: Finding sources: 100% (4/4)
remote: Getting sizes: 100% (3/3)
remote: Compressing objects: 100% (207/207)
remote: Total 4 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (4/4), done.

下面我们使用git命令来操作测试一下仓库提交

  1. 查看当前仓库的分支情况:
git branch 

结果:

* master
  1. 切换到master
git checkout master

结果:

Already on 'master'
Your branch is up to date with 'origin/master'.
  1. 添加文件,我们先在目录下新建一个文件d.java,内容随便,然后添加到git
git add d.java
  1. 提交到本地
git commit -m "测试"

结果:

[master 6dcb4d7] 测试
 1 file changed, 1 insertion(+)
 create mode 100644 d.java
  1. 推送到远程仓库
git push

要求输入admin的密码,输入密码后提交成功

结果:

Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 16 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 306 bytes | 306.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Updating references: 100% (1/1)
To http://192.168.101.170:8083/r/test.git
   95acef6..6dcb4d7  master -> master

然后我们到管理后台查看提交记录:
在这里插入图片描述
文件以及提交成功。

4、Gitblit仓库权限控制

如果要限制仓库访问,可以根据这里的功能来创建用户或者团队等操作:
在这里插入图片描述
创建用户:

在这里插入图片描述
这里的用户管理逻辑很简单,团队和用户属于归属关系

给项目分配用户:
在这里插入图片描述
点击编辑:
在这里插入图片描述
通过这里来管理用户

5、Gitblit邮件配置

如果我们要在Gitblit中使用邮件,我们可以使用自己搭建的邮件服务来使用,如果想了解怎么搭建自己的私有邮件服务,可以参照我的文章:【Linux centos7下使用postfix/dovecot搭建自己的SMTP邮件服务器】,
在data/defaults.properties下进行配置:


# ip or hostname of smtp server
#
# SINCE 0.6.0
mail.server = mail.code-long.com

# port to use for smtp requests
#
# SINCE 0.6.0
mail.port = 25

# debug the mail executor
#
# SINCE 0.6.0
mail.debug = true

# use SMTPs flag
mail.smtps = false

# use STARTTLS flag
#
# SINCE 1.6.0
mail.starttls = false

# if your smtp server requires authentication, supply the credentials here
#
# SINCE 0.6.0
mail.username =mail_admin
# SINCE 0.6.0
mail.password =AMXtRByuFNn4

# from address for generated emails
#
# SINCE 0.6.0
mail.fromAddress = mail_admin@code-long.com

# List of email addresses for the Gitblit administrators
#
# SPACE-DELIMITED
# SINCE 0.6.0
mail.adminAddresses = 123@qq.com

# List of email addresses for sending push email notifications.
#
# This key currently requires use of the sendemail.groovy hook script.
# If you set sendemail.groovy in *groovy.postReceiveScripts* then email
# notifications for all repositories (regardless of access restrictions!)
# will be sent to these addresses.
#
# SPACE-DELIMITED
# SINCE 0.8.0
mail.mailingLists = 234@qq.com

其中
mail.adminAddresses是管理员的邮件地址
mail.mailingLists 可以配置其他的邮件地址,用来接受邮件

配置完后,我们还需要配置仓库的hook

在这里插入图片描述

根据自身的情况来配置,这样我们在push的时候,就会收到邮件通知。

总结

Gitblit运行时对服务器性能要求不是很高,CPU和内存占用都很少。对于小公司来说,人员很少的情况下还是很实用,只是功能确实不是很多,而且有些地方操作起来还是不方便。

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

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

相关文章

最简单的基于 FFmpeg 的推流器(以推送 RTMP 为例)

最简单的基于 FFmpeg 的推流器(以推送 RTMP 为例) 最简单的基于 FFmpeg 的推流器(以推送 RTMP 为例)简介需要注意的地方封装格式延时PTS/DTS问题 程序流程图源程序结果工程文件下载参考链接 最简单的基于 FFmpeg 的推流器&#xf…

HTML5:七天学会基础动画网页4

backgorund-size 值与说明 length(单位像素):设置背景图片高度和宽度,第一个值设置宽度,第二个值设置高度,如果只给出一个值,第二个是设置为auto。 percentage(百分比):以父元素的百分比来设置背景图像的宽度和高度&#xff0c…

ChatGPT4.0 的优势、升级 4.0 为什么这么难以及如何进行升级?

前言 “ChatGPT4.0一个月多少人民币?” ”chatgpt4账号“ ”chatgpt4 价格“ “chatgpt4多少钱” 最近发现很多小伙伴很想知道关于ChatGPT4.0的事情,于是写了这篇帖子,帮大家分析一下。 一、ChatGPT4.0 的优势 (PS:…

SpringBoot接收参数的几种形式

SpringBoot接收参数的几种形式 在SpringBoot中获取参数基本方式有5种,需要都掌握. 这里需要记住一个技术术语或概念 API接口: 你写好的那个URL地址,就被称为API接口 1. 接收常规参数 给/param/demo1这个URL接口发送id, name两个参数 以上是以GET请求类型进行发送,实际发送…

深度学习500问——Chapter02:机器学习基础(1)

文章目录 前言 2.1 基本概念 2.1.1 大话理解机器学习本质 2.1.2 什么是神经网络 2.1.3 各种常见算法图示 2.1.4 计算图的导数计算 2.1.5 理解局部最优与全局最优 2.1.5 大数据与深度学习之间的关系 2.2 机器学习学习方式 2.2.1 监督学习 2.2.2 非监督式学习 2.2.3 …

【iOS ARKit】协作 Session 实例

协作 Session 使用注意事项 协作 Session 是在 ARWorldMap 基础上发展起来的技术,ARWorldMap 包含了一系列的地标、ARAnchor 及在观察这些地标和 ARAnchor 时摄像机的视场(View)。如果用户在某一个位置新创建了一个 ARAnchor,这时…

指针的传递使用场景

C语言函数调用时为值传递,实参赋值给形参,形参值改变不会影响实参(原理:两个参数地址不同),若要函数改变实参值,应当传递实参的地址,参考以下实例。 代码展示: #includ…

WiFi模块引领智能家居革命:连接未来的生活

随着科技的快速发展,智能家居正成为现代生活的一部分,极大地改变了我们与家庭环境互动的方式。其中,WiFi模块作为关键的连接技术,在推动智能家居革命中发挥着不可忽视的作用。本文将深入探讨WiFi模块如何驱动智能家居革命。 设备互…

OD(13)之Mermaid饼图和象限图

OD(13)之Mermaid饼图和象限图使用详解 Author: Once Day Date: 2024年2月29日 漫漫长路才刚刚开始… 全系列文章可参考专栏: Mermaid使用指南_Once_day的博客-CSDN博客 参考文章: 关于 Mermaid | Mermaid 中文网 (nodejs.cn)Mermaid | Diagramming and charting tool‍‌⁡…

layui中,父页面与子页面,函数方法的相互调用、传参

<%--父页面--%> <script type"text/javascript">var KaoHaoType 0; // 考号类型 自定义参数1// 选取考号类型function SelectKaoHaoType(callBack) {KaoHaoType 0; // 默认选择填涂考号layer.open({type: 2, title: 请选择 考号区类型, ar…

Linux信号【保存-处理】

目录 前言&#xff1a; 1、再次认识信号 1.1、概念 1.2、感性理解 1.3、在内核中的表示 1.4、sigset_t 信号集 2、信号集操作函数 2.1、增删改查 2.2、sigprocmask 2.3、sigpending 3.信号的处理机制 3.1处理情况 3.2合适时机 4用户态与内核态 4.1、概念 4.2、…

Python:练习:编写一个程序,写入一个美金数量,然后显示出如何用最少的20美元、10美元、5美元和1美元来付款

案例&#xff1a; python编写一个程序&#xff0c;写入一个美金数量&#xff0c;然后显示出如何用最少的20美元、10美元、5美元和1美元来付款&#xff1a; Enter a dollar amout:93 $20 bills: 4 $10 bills: 1 $5 bills:0 $1 bills:3 思考&#xff1a; 写入一个美金数量&…

Android NDK底层BUG,记录:connect、socket(AF_INET, SOCK_STREAM, 0) 等系统套接字接口函数崩溃问题。

在 Android NDK 之中&#xff0c;看上去调用 connect、socket 函数是不会崩溃的&#xff0c;但这是否定的&#xff0c;它在特定的情况下存在必定的崩溃的问题。 但是这种情况放到MACOS、LINUX、WINDOWS都不会崩溃&#xff0c;而它崩溃的点出现在操作系统底层。 人们需要参考这…

设计推特(Leetcode355)

例题&#xff1a; https://leetcode.cn/problems/design-twitter/ 分析&#xff1a; 推特其实类似于微博&#xff0c;在微博中可以发送文章。 求解这类题目&#xff0c;我们需要根据题目需求&#xff0c;利用面向对象的思想&#xff0c;先对需求做一个抽象&#xff0c;看看能…

TDengine 研发分享:利用 Windbg 解决内存泄漏问题的实践和经验

内存泄漏是一种常见的问题&#xff0c;它会导致程序的内存占用逐渐增加&#xff0c;最终导致系统资源耗尽或程序崩溃。AddressSanitizer (ASan) 和 Valgrind 是很好的内存检测工具&#xff0c;TDengine 的 CI 过程就使用了 ASan 。不过这次内存泄漏问题发生在 Windows 下&#…

MYSQL01高级_Linux版安装、各级别字符集、字符集与比较规则、SQL大小写规范

文章目录 ①. MySQL - linux版安装②. 字符集的相关操作③. 各级别的字符集④. 字符集与比较规则(了解)⑤. SQL大小写规范⑥. sql_mode的合理设置 ①. MySQL - linux版安装 ①. 进入mysql官网,找到安装文件 ②. 将抽取出来的文件放在linux下的opt下 MySQL Community Serv…

视频在线压缩

video2edit 一款免费的在线视频编辑软件&#xff0c;可以进行视频合并、视频剪辑、视频压缩以及转换视频格式等。 链接地址&#xff1a;在线视频编辑器和转换器 - 编辑&#xff0c;转换和压缩视频文件 打开视频压缩页面&#xff0c;上传想要压缩视频&#xff0c;支持MP4&…

ffmpeg单张图片生成固定时长的视频

ffmpeg -r 25 -f image2 -loop 1 -i fps_1.jpg -vcodec libx264 -pix_fmt yuv420p -s 1080*1920 -r 25 -t 30 -y fps.mp4这个命令将 fps_1.jpg 图片转换为一个 30 秒长的视频&#xff0c;分辨率为 1920x1080&#xff0c;帧率为 25 帧/秒&#xff0c;并使用 libx264 编码器进行压…

1.3 vue ui框架-element-ui框架

1 前言 ElementUI是一套基于VUE2.0的桌面端组件库&#xff0c;ElementUI提供了丰富的组件帮助开发人员快速构建功能强大、风格统一的页面。 ElementUI官网 https://element.eleme.io 2 安装 运行命令 cnpm i element-ui -S -S表示只在该项目下安装&#xff0c;不是全局安…

C++指针(二)

个人主页&#xff1a;PingdiGuo_guo 收录专栏&#xff1a;C干货专栏 文章目录 1.数组指针 1.1数组指针的概念 1.2数组指针的用处 1.3数组指针的操作 1.4二维数组如何访问 1.5数组指针访问流程 1.6数组指针的练习题 2.指针数组 2.1指针数组的概念 2.2指针数组的用处 2…