当前位置:首页 » 云服务器 » linuxgitlab服务器搭建

linuxgitlab服务器搭建

发布时间: 2024-03-16 01:31:36

1. Gitlab+Jenkins+Docker+Harbor+K8s集群搭建CICD平台

上帝借由各种途径使人变得孤独,好让我们可以走向自己。 ——赫尔曼·黑塞《德米安》

CI即为 持续集成(Continue Integration,简称CI) ,用通俗的话讲,就是 持续的整合版本库代码编译后制作应用镜像 。建立有效的持续集成环境可以减少开发过程中一些不必要的问题、 提高代码质量、快速迭代 等,

Jenkins :基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
Bamboo : 是一个企业级商用软件,可以部署在大规模生产环境中。

CD即持续交付Continuous Delivery和持续部署Continuous Deployment,用通俗的话说,即可以持续的部署到生产环境给客户使用,这里分为两个阶段,持续交付我理解为满足上线条件的过程,但是没有上线,持续部署,即为上线应用的过程

关于 CD环境 ,我们使用以前搭建好的 K8s集群 ,K8s集群可以实现应用的 健康 检测,动态扩容,滚动更新 等优点,关于K8s集群的搭建,小伙伴可以看看我的其他文章

拉取镜像,启动并设置开机自启

配置docker加速器

GitLab 不多介绍。一个基于Git的版本控制平台,,提供了Git仓库管理、代码审查、问题跟踪、活动反馈和wiki,当然同时也提供了

切记:这里的端口要设置成80,要不push项目会提示没有报错,如果宿主机端口被占用,需要把这个端口腾出来

external_url 'http://192.168.26.55’

gitlab_rails[‘gitlab_ssh_host’] = 餘.168.26.55’

gitlab_rails[gitlab_shell_ssh_port] = 222

修改完配置文件之后。直接启动容器

相关的git命令

下面我们要配置私有的docker镜像仓库,用到的机器为:

这里仓库我们选择 harbor ,因为有web页面,当然也可以使用 registry

首先需要设置selinux、防火墙

安装并启动docker并安装docker-compose,关于docker-compose,这里不用了解太多,一个轻量的docker编排工具

解压harbor 安装包:harbor-offline-installer-v2.0.6.tgz,导入相关镜像

修改配置文件

harbor.yml:设置IP和用户名密码

./prepare && ./install.sh

查看相关的镜像

访问测试

这里因为我们要在192.168.26.55(CI服务器)上push镜像到192.168.26.56(私仓),所有需要修改CI服务器上的Docker配置。添加仓库地址

修改后的配置文件

加载使其生效

CI机器简单测试一下

push一个镜像,可以在私仓的web页面查看

镜像jenkins拉取

这里为什么要改成 1000,是因为容器里是以 jenkins 用户的身份去读写数据,而在容器里jenkins 的 uid 是 1000,

更换国内清华大学镜像,Jenkins下载插件特别慢,更换国内的清华源的镜像地址会快不少

"http://www.google.com/" 替换为 "http://www..com/"

替换后查看

重启docker,获取登录密匙

需要修改jenkins绑定的docker的启动参数 , ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H fd:// --containerd=/run/containerd/containerd.sock

修改镜像库启动参数后需要重启docker

后面 gitlab 要和 jenkins 进行联动,所以必须要需要对 jenkins 的安全做一些设置,依次点击 系统管理-全局安全配置-授权策略,勾选"匿名用户具有可读权限"

添加 JVM 运行参数 -Dhudson.security.csrf..DISABLE_CSRF_PROTECTION=true 运行跨站请求访问

这里的话我们要通过jenkins上的kubectl客户端连接k8s,所以我们需要安装一个k8s的客户端kubectl,下载k8s客户端

然后拷贝kubeconfig 证书,k8s集群中查看证书位置,这里的证书是之前创建好的,小伙伴可以看看我之前的文章

命令测试没有问题

我们要部署 Nginx 来运行 hexo 博客系统, hexo 编译完后为一堆静态文件,所以我们需要创建一个 svc 和一个 deploy ,使用 SVC 提供服务,使用 deploy 提供服务能力,使用 Nginx+hexo的静态文件 构成的镜像

这里我们先用一个Nginx镜像来代替hexo博客的镜像

查看deployments和pod

访问测试没有问题,之后我们配置好jenkins上的触发器,直接替换就OK

我们通过 kubectl set 命令更新 deploy 的镜像时,获取的镜像是通过私仓获取的,所以需要在启动参数添加私仓地址

这里所有的节点都需要设置后重启docker

访问jenkins,接下来才是重点,我们要的jenkins上配置整个CICD流程,从而实现自动化

下面我们编译一下hexo,生成public的一个文件夹,然后上传gitlab

同时需要编写Dockerfile文件来创建镜像

2. Gitlab+Jenkins通过钩子实现自动部署web项目,图文详细教程

扩展参考:Jenkins+Gitlab通过脚本自动部署回滚web项目至集群

1):Gitlab服务器:ubuntu 192.168.152.131 ---参考搭建:Linux安装gitlab,docker安装gitlab教程

2):Jenkins服务器:ubunu 192.168.152.130 ---参考搭建:linux安装Jenkins,或docker安装Jenkins教程

在服务器上生成ssh-keygen,用于配置web服务器和Gitlab服务器。

3):web服务器:centos 192.168.152.150 ---已搭建好LNMP环境

4):开发者电脑:Windows+key密钥 (用于提交代码)

1:在gitlab创建项目Test Project

2.1): 配置一个开发者电脑的ssh公钥到gitlab

配置一个开发者电脑的ssh公钥到gitlab,这样才能模拟开发上传代码到gitlab。

windows生成key过程及git安装,可参考:Windows下git和github的使用图文详细教程_the丶only的博客-CSDN博客_github win

在windows测试clone,和提交代码。


注:最新版git 已经将默认分支master改为main了。所以看到main,而不是master不要太奇怪

测试成功,在gitlab也显示有index.html文件。

2.2): 配置jenkins公钥到gitlab

同理,同样需要jenkins公钥,因为jenkins也需要拉去gitlab的代码。

jenkins服务器 上查看公钥并复制添加到gitlab,并命名为jekins。

1:插件管理,安装插件

jenkins本身没什么功能,主要是依靠插件来实现各种强大的功能。

基本需要添加的插件:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab、Git Parameter

可以在 Manage Jenkins >> Manage Plugins 查看管理插件。在Available 选项搜索安装插件即可。

安装完成后,重启Jenkins。

2:添加需要部署的web主机

在 Manage Jenkins >> Configure System 中往下翻,找到 Publish over SSH 选项,点击add ssh server。

在Jenkins服务器上,查看私钥,注,是私钥,不是公钥。

将私钥填写在key位置,还有添加web服务器相关信息。

注:如果测试报错如下

Failed to connect or change directory
jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message [invalid privatekey: [B@2e54414f]

是因为默认用ssh-keygen命令,默认生成了OPENSSH 格式密钥。而Jenkins暂时不支持这种私钥,私钥开头结尾如下:

所以,需要生成rsa密钥格式的。用开头说的ssh-keygen加其他参数生成即可。

私钥开头结尾如下:

再次测试,显示success,则成功。然后点击save保存即可。

3:构建任务项目

首页创建任务或者一个项目

命名为web-project,选择为freestyle project 自由项目。然后ok确认。

3.1):源码管理 Source Code Management

选择源码管理,添加gitlab的项目clone地址。

注:最后路径选择分支,我gitlab主分支名字为main,如果是master,则写master,或者合并的其他分支。

在add添加用户

添加完成后,选择git用户,这时没有红色提醒,说明已成功连接

3.2):构建触发器 Build Triggers

现在Build Triggers,勾选build when....,其他默认,并记下链接 http://192.168.152.130:8080/project/web-project

点击高级 advance 选项。

勾选filter branches regex选择,填写分支,生产token。其他默认

3.3):构建 Build

选择Build 选项。选择ssh

添加web服务器

添加完毕,最后save保存。

1:添加钩子webhooks.

选择自己的项目Test Project,在设置setting里,选择钩子webhooks.

填写刚才记下的http://192.168.152.130:8080/project/web-project和token值。

最后Add webhook完成:

2:如添加失败,报错,更改Network

注:如填写失败提示Url is blocked: Requests to the local network are not allowed

还需更改Network选项。

3:测试钩子

添加完成后,下面会出现钩子选择。点击test中的,push event。

出现successful,即添加成功。

在Jenkins也可以看到刚才的测试时间信息。

在开发电脑上测试提交,我这里为Windows电脑测试。

打开Git Bash,输入以下命令:

提交成功,回到Jenkins,查看是否构建成功:

绿色显示构建成功,无错误显示。回到gitlab查看项目。

时间显示刚才也提交成功,无错误。最后在浏览器输入web地址测试,本人配置了web访问端口8082。所以输入IP加端口访问。

内容也已经自动更新成功。

完结撒花!!!

3. 如何在 Ubuntu/Fedora/Debian 中安装 GitLab

1. 安装先决条件
首先,我们需要安装 GitLab 所依赖的软件包。我们将安装 curl,用以下载我们所需的文件;安装openssh-server ,以此来通过 ssh 协议登录到我们的机器上;安装ca-certificates,用它来添加 CA 认证;以及 postfix,把它作为一个 MTA(Mail Transfer Agent,邮件传输代理)。
注: 若要安装 GitLab 社区版,我们需要一个至少包含 2 GB 内存和 2 核 CPU 的 linux 机器。

在 Ubuntu 14 .04/Debian 8.x 中
鉴于这些依赖包都可以在 Ubuntu 14.04 和 Debian 8.x 的官方软件仓库中获取到,我们只需通过使用 apt-get 包管理器来安装它们。为此,我们需要在一个终端或控制台中执行下面的命令:
#apt-get install curl openssh-server ca-certificates postfix

install dependencies gitlab ubuntu debian

在 Fedora 22 中
在 Fedora 22 中,由于 yum 已经被弃用了,默认的包管理器是 dnf。为了安装上面那些需要的软件包,我们只需运行下面的 dnf 命令:
# dnf install curl openssh-server postfix

install dependencies gitlab fedora

2. 打开并开启服务
现在,我们将使用我们默认的初始化系统来打开 sshd 和 postfix 服务。并且我们将使得它们在每次系统启动时被自动开启。

在 Ubuntu 14.04 中
由于在 Ubuntu 14.04 中安装的是 SysVinit 初始化系统,我们将使用 service 命令来开启 sshd 和 postfix 守护进程:
# service sshd start
# service postfix start
现在,为了使得它们在每次开机启动时被自动开启,我们需要运行下面的 update-rc.d 命令:
# update-rc.d sshd enable
# update-rc.d postfix enable

在 Fedora 22/Debian 8.x 中
鉴于 Fedora 22 和 Debian 8.x 已经用 Systemd 代替了 SysVinit 来作为默认的初始化系统,我们只需运行下面的命令来开启 sshd 和 postfix 服务:
#systemctl start sshd postfix
现在,为了使得它们在每次开机启动时可以自动运行,我们需要运行下面的 systemctl 命令:
#systemctl enable sshd postfix
Created symlink from/etc/systemd/system/multi-user.target.wants/sshd.service to /usr/lib/systemd/system/sshd.service.
Created symlink from/etc/systemd/system/multi-user.target.wants/postfix.service to /usr/lib/systemd/system/postfix.service.

3. 下载 GitLab
现在,我们将使用 curl 从官方的 GitLab 社区版仓库下载二进制安装文件。首先,为了得到所需文件的下载链接,我们需要浏览到该软件仓库的页面。为此,我们需要在运行着相应操作系统的 linux 机器上运行下面的命令。

在 Ubuntu 14.04 中
由于 Ubuntu 和 Debian 使用相同的 debian 格式的安装包,我们需要在 https://packages.gitlab.com/gitlab/gitlab-ce?filter=debs 下搜索所需版本的 GitLab,然后点击有着 ubuntu/trusty 标签的链接,即我们运行着的 Ubuntu 14.04。接着一个新的页面将会出现,我们将看到一个下载按钮,然后我们在它的上面右击,得到文件的链接,然后像下面这样使用 curl 来下载它。
# curl https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/trusty/gitlab-ce_8.1.2-ce.0_amd64.deb

Downloading Gitlab Ubuntu

在 Debian 8.x 中
与 Ubuntu 类似,我们需要在 https://packages.gitlab.com/gitlab/gitlab-ce?filter=debs 页面中搜索所需版本的 GitLab,然后点击带有 debian/jessie 标签的链接,即我们运行着的 Debian 8.x。接着,一个新的页面将会出现,然后我们在下载按钮上右击,得到文件的下载链接。最后我们像下面这样使用 curl 来下载该文件。
# curl https://packages.gitlab.com/gitlab/gitlab-ce/packages/debian/jessie/gitlab-ce_8.1.2-ce.0_amd64.deb/download

Downloading Gitlab Debian

在 Fedora 22 中
由于 Fedora 使用 rpm 文件来作为软件包,我们将在 https://packages.gitlab.com/gitlab/gitlab-ce?filter=rpms 页面下搜索所需版本的 GitLab,然后点击所需发行包的链接,这里由于我们运行的是 Fedora 22,所以我们将选择带有 el/7 标签的发行包。一个新的页面将会出现,在其中我们可以看到一个下载按钮,我们将右击它,得到所需文件的链接,然后像下面这样使用 curl 来下载它。
# curl https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-8.1.2-ce.0.el7.x86_64.rpm/download

Downloading Gitlab Fedora

4. 安装 GitLab
在相应的软件源被添加到我们的 linux 机器上之后,现在我们将使用相应 linux 发行版本中的默认包管理器来安装 GitLab 社区版。

在 Ubuntu 14.04/Debian 8.x 中
要在运行着 Ubuntu 14.04 或 Debian 8.x linux 发行版本的机器上安装 GitLab 社区版,我们只需运行如下的命令:
# dpkg -i gitlab-ce_8.1.2-ce.0_amd64.deb

Installing Gitlab Ubuntu Debian

在 Fedora 22 中
我们只需执行下面的 dnf 命令来在我们的 Fedora 22 机器上安装 GitLab。
# dnf install gitlab-ce-8.1.2-ce.0.el7.x86_64.rpm

Installing Gitlab Fedora

5. 配置和开启 GitLab
GitLab 社区版已经成功地安装在我们的 linux 系统中了,接下来我们将要配置和开启它了。为此,我们需要运行下面的命令,这在 Ubuntu、Debian 和 Fedora 发行版本上都一样:
# gitlab-ctl reconfigure

Reconfiguring Gitlab

6. 允许通过防火墙
假如在我们的 linux 机器中已经启用了防火墙程序,为了使得 GitLab 社区版的 web 界面可以通过网络进行访问,我们需要允许 80 端口通过防火墙,这个端口是 GitLab 社区版的默认端口。为此,我们需要运行下面的命令。

在 iptables 中
Ubuntu 14.04 默认安装和使用的是 iptables。所以,我们将运行下面的 iptables 命令来打开 80 端口:
# iptables -A INPUT -p tcp -m tcp --dport 80-j ACCEPT
# /etc/init.d/iptables save

在 firewalld 中
由于 Fedora 22 和 Debian 8.x 默认安装了 systemd,它包含了作为防火墙程序的 firewalld。为了使得 80 端口(http 服务) 能够通过 firewalld,我们需要执行下面的命令。
# firewall-cmd --permanent --add-service=http
success
# firewall-cmd --reload
success

7. 访问 GitLab Web 界面
最后,我们将访问 GitLab 社区版的 web 界面。为此,我们需要将我们的 web 浏览器指向 GitLab 服务器的网址,根据我们的配置,可能是 http://ip-address/ 或 http://domain.com/ 的格式。在我们成功指向该网址后,我们将会看到下面的页面。

Gitlab Login Screen
现在,为了登录进面板,我们需要点击登录按钮,它将询问我们的用户名和密码。然后我们将输入默认的用户名和密码,即 root 和 5iveL!fe 。在登录进控制面板后,我们将被强制要求为我们的 GitLab root 用户输入新的密码。

Setting New Password Gitlab

8. 创建仓库
在我们成功地更改密码并登录到我们的控制面板之后,现在,我们将为我们的新项目创建一个新的仓库。为此,我们需要来到项目栏,然后点击 新项目 绿色按钮。

Creating New Projects
接着,我们将被询问给我们的项目输入所需的信息和设定,正如下面展示的那样。我们甚至可以从其他的 git 仓库提供商和仓库中导入我们的项目。

Creating New Project
做完这些后,我们将能够使用任何包含基本 git 命令行的 Git 客户端来访问我们的 Git 仓库。我们可以看到在仓库中进行的任何活动,例如创建一个里程碑,管理问题,合并请求,管理成员,便签,Wiki 等。

Gitlab Menu

总结
GitLab 是一个用来管理 git 仓库的很棒的开源 web 应用。它有着漂亮的带有诸多酷炫功能的响应式界面。它还打包有许多酷炫功能,例如管理群组,分发密钥,持续集成,查看日志,广播消息,钩子,系统 OAuth 应用,模板等。(注:OAuth 是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。--- 摘取自 维基网络上的 OAuth 词条) 它还可以和大量的工具进行交互如 Slack,Hipchat,LDAP,JIRA,Jenkins,有很多类型的钩子和完整的 API。它至少需要 2 GB 的内存和 2 核 CPU 来流畅运行,支持多达 500 个用户,但它也可以被扩展到多个工作服务器上。

4. Jenkins Gitlab 前端构建发布

流程:通常是从gitlab/github拉取项目,构建,把产出文件发到服务器。

一、环境

创建任务之前,要先配置两项:

问题1:jenkins credentials配置SSH

系统管理 -> Manage Credentials -> 全局凭据 (unrestricted) ->添加或者编辑

注意:这里的key是个大坑,最开始我纠结是填私钥还是公钥,发现粘贴进去都不对。(粘贴私钥时我粘贴的是正文,没有复制首尾两行,导致一直报错。)最后把私钥整个粘贴进去就对了。

原因:

由于Jenkins的安全策略配置了CSRF跨站点保护。

解决方案:

进入Jenkins,系统管理-->全局安全配置,勾选匿名用户具有可读权限和去掉CSRF防止跨站点请求伪造:

在 /configure 下

这个插件是jenkins连接linux系统的时候使用。
以下针对插件的每个属性进行说明。

Name
SSH Server的Name属性就是你希望连接的服务器。

Source files
这里输入的是你希望传到服务器的文件夹和文件。路劲是相对jenkins的workspace的项目名称的。例如编译打包后的路径为dist文件夹下的jenkinszip.tar.gz,则Surce files填入dist/jenkinszip.tar.gz。

Remove prefix
如果Source files为dist/jenkinszip.tar.gz,但是不想把dist目录创建到服务器端,这个时候就可以在Remove prefix里填入dist

Remote directory
这里指定文件将被拷贝到服务器的路径。
PS:被拷贝文件在服务器上的完整路径=登录服务器账号的默认路径(就是全局设置的Remote Directory)+当前任务配置的Remote directory。
例如我的服务器路径是 /home/wwwroot/aaa
我全局配置Remote Directory 是 /home/wwwroot
当前任务配置的Remote Directory 是 /aaa/

Exec command
这里就是连接服务器之后需要执行的命令。

注意:这里配置的Secret token和 webhook要填写到gitlab里面,路径如下:

参考文章: https://blog.csdn.net/hou_ge/article/details/103507947

5. 使用Docker部署GitLab

查看是否拉取成功

编写内容

在该文件目录下,授予 gitlab_start.sh 执行权限

要注意端口是否被占用

修改 gitlab_start.sh 文件,将映射到宿主机的端口改为 8088 ,或者其它没被占用的端口

重新运行 ./gitlab_start.sh 文件,报错如下

这是因为之前的容器虽然没有运行起来,但是已经创建了,把它删除掉

重新运行 gitlab_start.sh 文件

可以看到容器成功启动

创建 docker-compose.yml 文件,并在该文件所在的文件夹目录下运行 docker-compose up -d
需要事先安装 docker-compose
安装docker-compose

:端口和映射目录可根据需要修改

若开放访问端口为 80 , external_url 可不加端口号,默认80

若以 3.1 方法创建,需要修改相关配置文件

在Gitlab容器 运行状态 时,重启服务,并远程访问网站测试

*若访问Gitlab出现502等错误,使用命令检查错误原因

e.g.

查看上述配置文件,查找错误原因

[图片上传失败...(image-e9789-1636370071222)]

虽然容器启动成功,但是却没办法根据 ip:port 访问gitlab

拉取tomcat镜像

为了测试8088端口是否可用,先把gitlab的容器暂停

启动tomcat容器,并将tomcat容器的8080端口映射到宿主机的8088端口

一切正常,访问ip:8088,还是和以前一样访问不了

因为之前系统的防火墙一直是关闭的并且其它的服务能正常访问,所以没有怀疑是防火墙的问题

把防火墙打开

访问之前能正常访问的服务,果然没法正常访问。

把该服务的端口开发,正常访问。

打开8088端口

再次访问

返回tomcat的404页面: HTTP Status 404 – Not Found

虽然是404页面,但是说明此时的端口是能正常访问的

把tomcat的容器停止运行,重新运行gitlab容器

虽然没启动成功,但离成功更进一步了:)

尝试把这个容器删除掉,再创建一次后还是得到这个错误。

还是访问不了,检查一下GitLab内部是否有问题

一切正常

我再次换成tomcat容器进行测试,发现8088端口访问不了了。

但是在宿主机内ping本机是可以的

但是,换成 ip:8088 则不行

根据以上两篇文章,提出 阿里云的内网eth0 网段正好跟Docker 的虚拟网卡都是 172 网段,有冲突

观察发现我使用的云服务器也是阿里云,并且通过 ifconfig 查看

并且查看阿里云的内网ip确实也是 172 开头。

编辑配置文件 /etc/docker/daemon.json ,若 daemon.json 文件不存在新建即可。

重新启动docker服务

可以看到docker0 的地址变了。

但是要注意,使用 docker 启动的服务会默认使用 docker0 ,如果是用 docker-compose 启动的服务则不会。上面的 br-12aa369ee4a6 对应的是docker-compose启动的服务,可以看到还是172的网段。

docker-compose up使用自定义的网段的两种方式(从其根源指定)

根据该文使用方法2,即修改 daemon.json 。但并不能成功访问,我的环境是: docker:20.10.7 , docker-compose:1.24.1

后面发现访问不成功的原因在于 docker 与防火墙之间的关系,可以关掉防火墙,开启 docker ,不能访问则打开防火墙。在它们之间来回试探 = =。
后面尝试过关闭 firewalld ,打开 iptables

在启用 iptables 时,一般关掉 iptables 可以正常访问,打开则不能正常访问。
在启用 firewalld 时,按照 docker firewalld 之间启动关闭的顺序不同,有时是开着防火墙能访问,有时是关了防火墙能访问。

但是容器内不能访问外部网络,该问题现在还未解决。 有一种迂回的解决方法就是容器使用 host 网络模式

问题 :怀疑是docker,firewalld与iptables之间的设置问题

Docker与IPtables

docker 端口映射 及外部无法访问问题

Docker and IPtables

还有一种访问不了GitLab的情况是端口映射和配置文件有误。

快速的解决方法:将宿主机端口号和容器号设置相同,可参考下面的博客。

利用GitLab Docker images安装GitLab(填坑)

[图片上传失败...(image-457ad3-1636370071221)]

如果系统环境正常,安装会十分顺利,一般不会有奇怪的问题。
我在不同的服务器安装过
阿里云 CentOS 7.6 : 访问正常,但是因内存不够出现502错误,容器内可正常连接外部网络
阿里云 Alibaba Cloud Linux 2 : 可能不能正常访问容器,容器内不能正常连接外部网络。怀疑是防火墙与docker的问题。

修改密码

6. GitLab搭建个人(或公司)版本控制系统

说明:Git,Github,GitLab三者关系。

Git - 是一款自由和开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。(svn是集中化的版本控制系统)。

GitHub - 是一个面向开源及私有软件项目的托管平台(也就一个网站),提供给用户空间创建git仓储,保存用户的一些数据文档或者代码等。它可以托管各种git库,并提供一个web界面。被戏称为“全世界最大的同性交流社区”。

GitLab - 基于Git的项目管理软件。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。

当然啦国内开源中国出的“码云”,第一次听得人还以为是“马云”。我酱紫。它跟Github功能差不多,都能建立公有和私有的仓库。不过嘛感觉有点封闭,社区没有Github热闹。

有的人就说啦,我完全可以在Github或者GitLab上做远端代码仓库,为啥还要倒腾GitLab自建代码托管系统?就一个字: “代码安全性”(公司保密规定)。 对于公司来说,GitLab让开发团队对他们的代码仓库拥有更多的控制,相比于GitHub,它有不少的特色:

一、自建代码托管系统都需要做些什么工作?

1. 选择开源软件

Git 大家族的 GitLab ,它提供了完善的用户权限管理,除了涵盖 Git 所有的功能,同时又提供方便的后台管理。分别有CE(社区版)、EE(企业版)、OM(RPM 包完整版)三个版本,目前市面上开发者们的普遍选择是使用 CE 版的源码,成本较低且相对方便。

2. 硬件设施方面

如果是对于中小型企业来讲,自建机房一般成本较高,所以除非是大型集团企业。现在市面上存在太多的云服务器厂商,平均价格多在 5000元/年以上,都是不错的选择。

可能遇到的坑:

3.由于个人眼界以及信息不对称,目前大部分公司都是在公司局域网内自行用GitLab搭建代码托管系统。部署Gitlab 是对服务器有配置要求的建议是CPU两核,内存4G以上。个人经验,勿喷啦。

二、搭建过程(这里仅是作者接触的,其实还有很多更高级的盘法)

Gitlab的服务构成

1.搭建方法分为:传统方式安装GitLab和Docker安装(推荐)。

2.传统安装过程(平台使用centos7安装)

安装和配置必要的依赖项:

安装Postfix以发送通知邮件:

在安装Postfix期间,可能会出现配置屏幕。选择“Internet Site”并按enter键。使用您的服务器的外部DNS以“mail name”并按enter。如果出现额外的屏幕,继续按enter键接受默认值。

添加GitLab镜像源并安装gitlab服务器:

注意这里设置的端口不能被占用,默认是8080端口,如果8080已经使用,请自定义其它端口,并在防火墙设置开放相对应得端口。

重置并启动GitLab:

访问 GitLab页面:如果没有域名,直接输入服务器ip和指定端口进行访问

获取/修改超级管理员root的密码:

最后我们使用默认的账号:root 和刚刚设置好的密码12345678进行登录。

后面的步骤配置SSH key,git Bash的global config等初始化设置跟GitHub一样。可是还有一点就是“汉化”。(英文不好的小伙伴)但是有一定风险,后面我打开报502错误。有两种方法:用git比对出英文与中文的补丁,将英文打补丁。第二是直接下载中文版,替换英文。

3.Docker安装(推荐)

(1)配置docker镜像

直接从 docker hub 获取的话速度非常慢,所以需要配置一个镜像。我使用的是 cloud.io提供的加速器,速度很快。

(2)获取 GitLab 镜像

下载完成后,查看镜像列表

(3)启动容器

3个--publish指定容器与主机的端口映射,分别是 http、https、ssh

3个--volume指定数据卷的映射,分别是 gitlab 的 配置、日志、数据

(4)配置外部访问 URL

修改 gitlab 配置文件:

找到 external_url 这一项修改为自己服务器的访问地址:

保存后,重启容器

(5)访问

初次访问时,gitlab 要求我们重置管理员密码,修改完成后登录。默认用户root。

当然以上为个人实验,公司里面大部分为CTO等大佬已经搭建完毕,我们主要是折腾。

最后推荐个人用很顺手的工具: SourceTree (可视化界面的Git),当然啦要想成为大牛或者装13也好,还是从Git Bash里敲命令行。

7. 本地服务器怎么使用gitlab pages

GitLab由Ruby语言发基于LinuxGit服务器我见强Git服务器发现立即决定Git服务器换GitLab
安装GitLab面临问题何服务器git项目直接导入GitLab前Git服务器由git+apache搭建(详见Linux用Apache搭建Git服务器)
网发现篇文档——Import bare repositories into your GitLab instance并按进行操作
1)设置存放代码库主目录
vi /etc/gitlab/gitlab.rb

比设置:git_data_dir "/gitlab/repos"
2)访问刚搭建GitLab站点创建group比cnblogs
/gitlab/repos 创建 /gitlab/repos/repositories/cnblogs 文件夹
/gitlab/repos/repositories/创建文件夹比cnblogs
3)现所git项目文件复制文件夹
cp -r /data/git/* /gitlab/repos/repositories/cnblogs

4)修改复制文件夹所者:
chown -R git:git /gitlab/repos/repositories/cnblogs

5)运行GitLab导入命令
cd /var/opt/gitlab
gitlab-rake gitlab:import:repos

等段间显示done却项目没导入进
经研究发现导入GitLab认文件夹名.git结尾项目于要导入项目文件夹名称加.git缀再进行导入
结显示导入功比:
Processing cnblogs/CNBlogsJob.git
* Created CNBlogsJob (cnblogs/CNBlogsJob.git)
Done!

GitLab站点却看已导入项目努力没能解决问题
实没办改手导入导入:
1)GitLab站点创建与要导入项目同名项目
2)进入刚创建项目文件夹
cd /gitlab/repos/repositories/cnblogs/项目名称.git

3)删除该文件所文件
rm -rf *

4)要导入项目文件夹所文件复制
cp -r /data/git/CNBlogsJob/* /gitlab/repos/repositories/cnblogs/CNBlogsJob.git

项目导入进
5)导入完修改导入所项目文件所者
chown -R git:git /gitlab/repos/repositories/cnblogs

修改所者客户端进行git push
手完现Git项目导入
备注:操作系统CentOS 6.2GitLab版本7.8.4

热点内容
龙村m脚本 发布:2024-11-29 17:38:10 浏览:781
linuxc配置文件 发布:2024-11-29 17:08:31 浏览:826
wow刷碎片脚本 发布:2024-11-29 15:58:24 浏览:592
明小子源码 发布:2024-11-29 15:15:30 浏览:145
苹果8plus什么配置 发布:2024-11-29 14:16:36 浏览:677
androidmvp结构 发布:2024-11-29 14:16:34 浏览:536
androidsqlite命令 发布:2024-11-29 14:04:38 浏览:156
信用卡分期算法 发布:2024-11-29 13:50:56 浏览:808
安卓手机dll文件为什么打不开 发布:2024-11-29 13:40:49 浏览:1003
百分之五十石碳酸怎么配置 发布:2024-11-29 13:38:56 浏览:974