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

文章目录


前言

代码版本管理,git模式应该是目前最流行的代码管理软件。目前支持git的管理软件有很多。

Gitblit是一个小型的代码仓库管理软件,功能不是很多,优点是:小巧、CPU和内存占用比较少,对于小团队来说基本够用。Gitblit官网点击这里


一、Gitblit的安装和使用

1、本地安装

进入官网,如下图,根据对应的系统选择合适的版本:

这里我们下载Linux下的最新版本:gitblit-1.9.3.tar.gz

解压:

bash 复制代码
tar -xzvf gitblit-1.9.3.tar.gz

进入目录查看文件信息:

bash 复制代码
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中的内容如下:

bash 复制代码
#!/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可以不用修改

启动项目:

bash 复制代码
sh gitblit.sh

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

注意:

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

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

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

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

bash 复制代码
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下面

bash 复制代码
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】里面,我们查看文件

bash 复制代码
cat users.conf

如下所示:

bash 复制代码
[user "admin"]
        password = admin
        role = "#admin"
        role = "#notfederated"

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

登录成功后,下面我们创建一个仓库来演示如何使用

点击创建版本库

点击创建

然后点击仓库可查看详情

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

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

bash 复制代码
git clone http://test@192.168.101.170:8083/r/test.git

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

bash 复制代码
git clone http://admin@192.168.101.170:8083/r/test.git

运行结果:

bash 复制代码
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. 查看当前仓库的分支情况:
bash 复制代码
git branch 

结果:

bash 复制代码
* master
  1. 切换到master
bash 复制代码
git checkout master

结果:

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

结果:

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

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

结果:

bash 复制代码
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下进行配置:

bash 复制代码
# 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和内存占用都很少。对于小公司来说,人员很少的情况下还是很实用,只是功能确实不是很多,而且有些地方操作起来还是不方便。

相关推荐
czlczl2002092522 分钟前
Guava Cache 原理与实战
java·后端·spring
yangminlei24 分钟前
Spring 事务探秘:核心机制与应用场景解析
java·spring boot
西***634725 分钟前
打破部署桎梏!编码器两大核心架构(NVR/PoE)深度解析
服务器·音视频·视频编解码
BlueBirdssh1 小时前
linux 内核通过 dts 设备树 配置pcie 控制器 各种参数和中断等, 那freeRTOS 是通过直接设置PCIe寄存器吗
linux
小目标一个亿1 小时前
Windows平台Nginx配置web账号密码验证
linux·前端·nginx
记得开心一点嘛1 小时前
Redis封装类
java·redis
实战项目1 小时前
软件测试自动化框架的设计与实现
运维·自动化
007php0071 小时前
mySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据
数据库·redis·git·mysql·面试·职场和发展·php
lkbhua莱克瓦241 小时前
进阶-存储过程3-存储函数
java·数据库·sql·mysql·数据库优化·视图
Aotman_2 小时前
Element-UI Message Box弹窗 使用$confirm方法自定义模版内容,修改默认样式
linux·运维·前端