gitlab

零、说明

所有原创归原作者所有

一、介绍

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。安装方法是参考GitLab在GitHub上的Wiki页面。

特点:

1. Web框架使用Ruby on Rails
2. 基于MIT代码发布协议。
3. 需要gitolite协同工作。

二、部署安装

下载地址

https://about.gitlab.com/downloads/  # 官网
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ # 清华源

安装依赖

sudo yum install curl policycoreutils openssh-server openssh-clients    # 安装依赖包
sudo systemctl enable sshd                                              # 打开sshd
sudo systemctl start sshd                                               # 打开sshd
sudo yum install postfix                                                # 下载邮件
sudo systemctl enable postfix                                           # 打开邮件
sudo systemctl start postfix                                            # 打开邮件
sudo firewall-cmd --permanent --add-service=http                        # 
sudo systemctl reload firewalld

安装

wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-9.0.4-ce.0.el7.x86_64.rpm
rpm -ivh gitlab-ce-9.0.4-ce.0.el7.x86_64.rpm
# 修改配置文件
vim
/etc/gitlab/gitlab.rb
# 修改域名
external_url 'http://192.168.56.77' # 克隆时候的地址,改成可解析的域名或者直接IP地址
gitlab-ctl reconfigure # 重新加载配置文件

 

常用命令

gitlab-ctl status      # 查看状态
gitlab-ctl start       # 开启服务
gitlab-ctl stop        # 关闭服务
gitlab-ctl restart     # 重启服务
gitlab-ctl tail nginx  # 查看nginx组件的日志

组件

  • nginx:静态Web服务器
  • gitlab-shell:用于处理Git命令和修改authorized keys列表
  • gitlab-workhorse:轻量级的反向代理服务器
  • logrotate:日志文件管理工具
  • postgresql:数据库
  • redis:缓存数据库
  • sidekiq:用于在后台执行队列任务(异步执行)
  • unicorn:GitLab Rails应用是托管在这个服务器上面的。

常用目录

  • /var/opt/gitlab/git-data/repositories/root:库默认存储目录
  • /opt/gitlab:应用代码和相应的依赖程序
  • /var/opt/gitlab:gitlab-ctl reconfigure命令编译后的应用数据和配置文件,不需要人为修改配置
  • /etc/gitlab:配置文件目录
  • /var/log/gitlab:此目录下存放了gitlab各个组件产生的日志
  • /var/opt/gitlab/backups/:备份文件生成的目录

变更配置文件后需要以下操作

1、gitlab-ctl reconfigure                 # 重置配置文件
2、gitlab-ctl show-config                 # 验证配置文件
3、gitlab-ctl restart                     # 重启gitlab服务

三、权限管理,issue管理(以下知识有点乱)

总的概括

  • 创建gourps
  • 创建用户
  • 创建项目
  • 授权项目用户

进入管理区创建组

 

 

创建一个名为ago的,私有组

创建完成之后授权

 

创建用户

 

剩下不理会,直接创建账号。

 创建项目

 

 

命令参考创建项目之后会有提示如下:Command line instructions

Git global setup

git config --global user.name "Administrator"
git config --global user.email "admin@example.com"

Create a new repository

git clone http://root@192.168.56.77/ago/first-proj.git
cd first-proj
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

Existing folder

cd existing_folder
git init
git remote add origin http://root@192.168.56.77/ago/first-proj.git
git add .
git commit
git push -u origin master

Existing Git repository

cd existing_repo
git remote add origin http://root@192.168.56.77/ago/first-proj.git
git push -u origin --all
git push -u origin --tags

配置ssh-key

  • 个人SSH KEY
  • Deploy KEY
  • 创建SSH KEY
  • 将公钥导入用户SSHKEY
  • 创建deploy key
  • 将deploy key导入gitlab并在项目中允许
  • ssh key文件全局唯一

settings

开发者的key

 

创建密钥对

[ago@jenkins ~]# ssh-keygen 
Generating public/private rsa key pair.

Enter file in which to save the key (/home/ago/.ssh/id_rsa): Created directory '/home/ago/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/ago/.ssh/id_rsa.
Your public key has been saved in /home/ago/.ssh/id_rsa.pub.
The key fingerprint is:
7d:13:14:c9:c4:1a:7d:eb:54:c4:6f:ae:68:26:8f:f2 ago@jenkins
The key's randomart image is:
+--[ RSA 2048]----+
|           =+o o.|
|          ..= . o|
|           o.. o.|
|         ..  .o o|
|        S . oo o |
|           . .. .|
|             . . |
|        . ..+ .  |
|         oE=.    |
+-----------------+

[root@jenkins ~]# cd .ssh/
[root@jenkins .ssh]# cat id_rsa.pub  # 下面是公钥

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4M5Jdw47Y3Fu0d00L+nOkCWSk9uQpyKbGPmrHp7CnvhLcWDMcdjMyGpjnVnQkr4Il1rTEDnBouYn6Kew905lbYnKsMu1S37NP5MmW7Qak7GY8m+K+RMyapmhUXU5D22CARoPF11r1m4EyWMsudmdYEtkwWyI9v5JPaWFMWD+Bnmzk8hU1Oo71QJqYBhqJ6Xor93cKDorFKcbqMaLL2VBKRLmJgvlM5ABCr6Ketj7955jxNYGPagwoqWCjP4ioU9Mr6/KBbEiSvDDNghqfiylLxs/gZexxKjIYtgoPkrb5JFz7lBQoeQIYzRKQao4DZQCJwp23POyH5rNvfjKL1NMZ root@jenkins

单纯项目的权限添加

 

首先第一步,需要在gitlab网页上创建一个master,也就是创建一个file,才能进行git push。

打通windows和gitlab连接

创建密钥

然后查看公钥:

cd c:                                   # 用户家目录下面的.ssh目录下
cat Users/Administrator/.ssh/id_rsa.pub

 

deploy key只能下载代码,不能上传代码,配合jenkins使用。可以面向所有项目。

问题issue

 git commit -m "这里添加注释后  #编号就能自动关闭issue"

四、备份和恢复

备份

配置文件中加入
gitlab_rails['backup_path'] = '/data/backup/gitlab'
gitlab_rails['backup_keep_time'] = 604800
如果自定义备份目录需要赋予git权限
mkdir /data/backup/gitlab
chown -R git.git /data/backup/gitlab
定时任务Crontab中加入
0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create

策略建议:本地保留三到七天,在异地备份永久保存

恢复

停止数据写入服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

gitlab-rake gitlab:backup:restore BACKUP=1502616174_2017_08_13   # 时间戳,文件名的前半部分
date -d @1502616174
恢复完之后用
gitlab-ctl restart重启下服务

 

五、邮件配置

gitlab_rails['time_zone'] = 'Asia/Shanghai'
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'ago@126.com'
gitlab_rails['gitlab_email_display_name'] = 'gitlab'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.126.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "ago"
gitlab_rails['smtp_password'] = "your_password"
gitlab_rails['smtp_domain'] = "126.com"
gitlab_rails['smtp_authentication'] = "login"

 

posted @ 2017-08-11 16:45  汉克书  阅读(682)  评论(0编辑  收藏  举报