gitlab
零、说明
所有原创归原作者所有
一、介绍
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。安装方法是参考GitLab在GitHub上的Wiki页面。
特点:
二、部署安装
下载地址
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"