zoukankan      html  css  js  c++  java
  • GitLab企业级代码管理仓库

    GitLab服务器

    前面我们已经知道Git人人都是中心,那他们怎么交互数据呢? 
    使用GitHub或者码云等公共代码仓库 
    使用GitLab私有仓库

     

    GitLab是什么?

    是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。基础功能免费,高级功能收费。

     

    为什么要使用GitLab?

    基础功能开源,可自行搭建  
    可以进行权限控制,使得代码对部分人可见  
    gitlab使用方便

     

    GitLab搭建过程

    主机名IP备注特殊要求
    GitA 192.168.200.70 Git客户端
    GitB 192.168.200.90 GitLab服务器端 内存2G

    官方安装文档:https://about.gitlab.com/installation/#centos-7

    GitLab国内源下载地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

     

    初始环境

    cat /etc/redhat-release

    uname -r

    echo "gitb 127.0.0.1" >> /etc/hosts

    tail -1 /etc/hosts

    ls

    image_1cutskbqjoc31nfp1m1uoh21u47m.png-31kB

     

    GitLab软件包下载

    链接:https://pan.baidu.com/s/1TYJnh6M01MAVhLRXr-qfLw 
    提取码:mqxp

     

    在GitB上安装GitLab

    ls

    yum localinstall gitlab-ce-11.2.3-ce.0.el7.x86_64.rpm -y

    yum localinstall -y代表利用yum安装本地指定的rpm包,好处是自动解决依赖问题

    image_1cutt51616nt1n511mkphmtos713.png-190.1kB


    image_1cutt765jj0b1c891768118hh6t1g.png-44.3kB

     

    初始化GitLab,只需要执行一次

    gitlab-ctl reconfigure

    image_1cutt8n351gf1a7b32hv0g1ci21t.png-8.5kB

     

    查看gitlab启动状态

    gitlab-ctl status

    image_1cuttntcv19mc1qlb1hasv445bi2a.png-58.7kB

     

    查看gitlab版本号

    cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

    image_1cutto65c62b5cd1lq5osjdj32n.png-10.9kB

     

    在宿主机输入网址进行就可以访问了

    http://192.168.200.88

    linyaonie

    接下来设置管理员初始密码,最少8位

    image_1cuttotn2fdka2t1lnf1hq1h0d34.png-99.9kB

     

    登陆管理员账号:root,密码:linyaonie

    image_1cuttpr8m1cvprm11l6u1429tis3h.png-94kB

     

    登陆后,我们就可以选择如下功能使用了

    image_1cutuadqkuru1609ci418bp1j1v3u.png-110.5kB

     

    GitLab中文社区版补丁包安装

    GitLab中文社区:https://gitlab.com/xhang/gitlab/tree/11-2-stable-zh

     

    解压GitLab中文版补丁包

    ls

    tar xf gitlab-11-2-stable-zh.tar.gz

    image_1cutubl1no9q1po2c09mbbcv4b.png-25.6kB

     

    查看系统已经安装的GitLab版本号

    cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

    image_1cutuc59bhii1brj1q61ft0lm94o.png-10.6kB

     

    查看解压后的补丁版本号

    cat gitlab-11-2-stable-zh/VERSION

    特别提示:补丁包版本号和安装的GitLab版本号需要一致

    image_1cutucpslicvljc1fl8ej418rb55.png-20.1kB

     

    备份英文版GitLab

    cp -r /opt/gitlab/embedded/service/gitlab-rails{,.bak}

    image_1cutuf9b5slmejtrq51fdskui5i.png-20.7kB

     

    将中文补丁包的内容覆盖英文版

    /bin/cp -rf gitlab-11-2-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/

    特别提示:报错不需要管,因为已经设置过root密码,登陆过,所以会报错

    image_1cutuvred1aa6dcr169b1pt6nf49.png-34.3kB

     

    重新配置GitLab

    gitlab-ctl reconfigure

    image_1cutv34271tj63ne1ggdegv1a5k2s.png-8kB

     

    重新启动GitLab

    gitlab-ctl restart

    image_1cutv8l5i103l133bdv85jhei39.png-43.2kB

     

    重新刷新浏览器访问GitLab(中途掉线了,IP地址变了)

    http://192.168.200.90

    image_1cutvjvb44ui9kv5u6pdk1sf13m.png-103.2kB

     

    使用GitLab

     

    创建一个新项目

    image_1cutvktk11465bdu1grn1mh43tc43.png-91.9kB


    image_1cutvp5f09t71ekleqs1n6spaa4g.png-139.3kB


    image_1cutvu1t566qmod1umpvlo20j4t.png-148.2kB

     

    修改GitLab配置文件/etc/gitlab/gitlab.rb

    我们需要修改GitLab的默认域名(因为我们是在内网搭建的GitLab) 
    GitLab默认的监听端口为80,但是在企业中,这个端口经常被别的服务占用,所以我们还需要更换端口号

    cp /etc/gitlab/gitlab.rb{,.bak}

    cat -n /etc/gitlab/gitlab.rb.bak | sed -n '13p;943p'

    vim /etc/gitlab/gitlab.rb

     
    1. 13 external_url 'http://192.168.200.90:8888'
    2. 943 nginx['listen_port'] = 8888

    cat -n /etc/gitlab/gitlab.rb | sed -n '13p;943p'

    image_1cuu0g8627hs1753bm9erl1ncj5a.png-31.1kB

     

    重新配置GitLab

    gitlab-ctl reconfigure

    image_1cuu0i2941kon11k47mb1ohr19hv5n.png-8.1kB

     

    重新启动GitLab

    gitlab-ctl restart

    image_1cuu0ure01c3is2tb7f1hsrub364.png-44.3kB

     

    重新访问浏览器

    http://192.168.200.90:8888

    image_1cuu15trmql9buqi8411721u9h6h.png-67.8kB


    image_1cuu174l4ege1smk19bu1knh1vc26u.png-138.1kB

     

    尝试将本地仓库代码推送到私有GitLab

     

    在GitA客户端上

    cd /mycode

    ls

    git branch

    image_1cuu2645c19qek5pss45qr2n29.png-13.3kB

     

    添加远程GitLab仓库管理

    git remote add origin http://192.168.200.90:8888/root/yunjisuan.git

    git remote -v

    image_1cuu27hti1d901q0d1eun1l71ebfm.png-30kB

     

    推送本地仓库master分支到远程仓库GitLab上

    git push origin master

    输入账号root和密码linyaonie

    image_1cuu2jlj6m8s9d1pupevtunc2j.png-35.1kB

     

    推送本地仓库linux分支到远程仓库GitLab上

    git branch

    git checkout linux

    git push origin linux

    输入账号root和密码linyaonie

    image_1cuu37f7u1m821raud45c3j162b4a.png-66.9kB

     

    在推送本地仓库标签v1.0到远程仓库GitLab上

    git tag

    git push origin v1.0

    输入账号root和密码linyaonie

    image_1cuu2m9006721fgs19ad13uh7q73g.png-27.3kB

     

    重新刷新网页并查看

    image_1cuu399hc1f285sa38pv9o8da6q.png-145.7kB

     

    尝试在本地仓库克隆GitLab的项目Linux分支到本地仓库

     

    在GitA上创建Git工作目录

    mkdir /test

    cd /test

    image_1cuu3gui01m5r1ehb1v0p18j37f477.png-9.9kB

     

    克隆远程仓库GitLab的Linux分支

    git clone -b linux http://192.168.200.90:8888/root/yunjisuan.git 
    重要提醒:-b是指定分支,不写默认克隆master主分支

    输入账号root和密码linyaonie

    ls

    cd yunjisuan

    git branch

    image_1cuu3ics71o761qrdup31euermh7k.png-56.2kB

     

    配置GitLab的SSH密钥连接方式

     

    在GitA客户端生成密钥对

    ssh-keygen -t rsa -C '1123400300@qq.com' 
    全部回车

    cd /root/.ssh

    ls

    cat id_rsa.pub --->公钥内容,复制到GitLab上

     
    1. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3TJUkCCeQErxymS7o3QGAtlH00qyISMLUSLeIqEwtRrLi2MX5+mfg53sxcmuH78zazWO59c2q0+ocSK/VFuXbV2SToNVStCPwKA+UCafYkG3KxIznPlztb4rnKxuOYMDAVlM3JSlaLDCT2QUEZvp4YMsYZ3BIOMV09UQRYjVsX4Psq8hRNaTsWyM2ufIXaaS61lX3zWzx/98FuFPkJhnH0sgCdV5uE5KBiek02Gt97h8wgRZoIxFYbstklw86pVZnosaLoTACGIDU7Kvzn+UYZQy66AJuGbKj+47S2sxwvK4v5wzLEIWryHLpAeOyoQ8Giv166Ezl/ouJybZ6RCLN 1123400300@qq.com

    image_1cuu4elkfso817d9mlg12bdehm8e.png-105.8kB

     

    在浏览器打开GitLab

    image_1cuu46hei1h2g1h5c1io1vvb109681.png-88.6kB


    image_1cuu4g455etj16gb12ck1fvo1e6m8r.png-143.7kB


    image_1cuu4h47do1c1a2ura7136k169898.png-116.1kB


    image_1cuu4ignbgjo10j95ul17r71bmg9l.png-155.8kB

     

    在GitA客户端重新进行克隆测试

    mkdir /miyao

    cd /miyao

    git clone -b linux git@192.168.200.90:root/yunjisuan.git --->第一次需要记录主机所以需要输入yes

    image_1cuu4mdrs1c04ega1n5ovbk8nvbe.png-83.4kB

     

    在GitB上配置GitLab邮件服务

    配置邮箱服务的用途

    • 有合并请求时间,邮件通知

    • 账号注册时,邮件验证

    • 修改密码时,通过邮件修改

    配置步骤

    • 开启QQ邮箱的smtp服务

    • 修改gitlab配置

    • 测试邮件服务是否正常

     

    开启GitLab服务postfix服务并开启QQ邮箱的smtp服务

    systemctl start postfix

    systemctl enable postfix

    systemctl status postfix

    image_1cuu5knpg1t5n1erfrbj1b7r4vmd2.png-135.8kB


    image_1cuu53o3o1ehe1lrkvogd151rq8br.png-231.9kB


    jbcgbxbsatwzhegi

    image_1cuu55fg21omf391b8g4vcho5c8.png-45.4kB

     

    修改GitLab配置文件/etc/gitlab/gitlab.rb

    cat -n /etc/gitlab/gitlab.rb.bak | sed -n '53p;472,480p;618p'

    vim /etc/gitlab/gitlab.rb

    cat -n /etc/gitlab/gitlab.rb | sed -n '53p;472,480p;618p'

     
    1. 53 gitlab_rails['gitlab_email_from'] = '1123400300@qq.com' --->GitLab默认邮箱
    2. 472 gitlab_rails['smtp_enable'] = true --->开启功能
    3. 473 gitlab_rails['smtp_address'] = "smtp.qq.com" --->QQsmtp服务
    4. 474 gitlab_rails['smtp_port'] = 465
    5. 475 gitlab_rails['smtp_user_name'] = "1123400300@qq.com" --->smtp用户邮箱
    6. 476 gitlab_rails['smtp_password'] = "jbcgbxbsatwzhegi" --->开通QQsmtp时返回的字符串
    7. 477 gitlab_rails['smtp_domain'] = "qq.com" --->smtp域名
    8. 478 gitlab_rails['smtp_authentication'] = "login"
    9. 479 gitlab_rails['smtp_enable_starttls_auto'] = true
    10. 480 gitlab_rails['smtp_tls'] = true
    11. 618 user['git_user_email'] = "1123400300@qq.com" --->git用户邮箱

    image_1cuu5v3qo2bo7bb1q4k1dgsrjhdf.png-94.2kB

     

    重新加载GitLab配置文件

    gitlab-ctl reconfigure

    image_1cuu0i2941kon11k47mb1ohr19hv5n.png-8.1kB

     

    重新启动GitLab服务

    gitlab-ctl restart

    image_1cuu7vat24t1150k7ftvv1107dds.png-47.6kB

     

    进入GitLab控制台进行邮件发送测试

    gitlab-rails console --->开启GitLab控制台

    Notify.test_email('1123400300@qq.com','ceshi','hello').deliver_now

    特别说明:Notify.test_email('收件人邮箱','邮件标题','邮件内容')

    image_1cuu8c03i1uhf1a5b102e18va1l26e9.png-122.8kB

     

    进入QQ邮箱并查看

    image_1cuu8d7vu1lfk3tt1b0j9jubbrg6.png-182.3kB

     

    GitLab的账号注册及分组

     

    账户注册测试

    http://192.168.200.90:8888/users/sign_in

    image_1cuu8n73i1k4i1p0m11a31ks91hfkh3.png-108.4kB


    image_1cuu8uant1b9trmj1hm0irb1o57hg.png-97.8kB

    我们在注册的时候,用的是乱写的邮箱都能注册并登陆 
    显然这在企业里是绝对不允许的

     

    开启GitLab邮箱验证功能

    重新登陆管理员用户:root,密码:linyaonie,我们在进行如下操作

    image_1cuu97rm7105k1i0218231b1u8lrht.png-69.3kB

    退出时,别忘了保存修改

    image_1cuu9cqs81fh31bfbttm1ajqu9ia.png-118.8kB

     

    然后我们退出管理员进行重新注册

    image_1cuuanccu1b6a1j6s193v187dps4in.png-107.9kB


    image_1cuuao0lo1gpk12od1idn8qh12icj4.png-57kB


    image_1cuuapcvq5alr5q1o1o1hfop5djh.png-234.6kB


    image_1cuub3dnv1bv4lp7j9618ie9ltju.png-98.6kB


    image_1cuub3qrup5s7e62mbbbb1i7ikb.png-97.9kB

     

    创建一个项目组

    image_1cuubcj731e1b3a11ako9r3bbpko.png-68.1kB


    image_1cuubdpop1lhuv6dbrl114r1c0ml5.png-108.4kB


    image_1cuubjhurf1u70l1nso1sbm1254li.png-120.9kB

     

    给组添加成员并授权

    image_1cuubogig1a4opuv1ihjdnb4krmf.png-72kB


    image_1cuucg4711kq1tkn11ov4sn1mgems.png-131.3kB


    image_1cuucj1b3bic1t7vklre1f57ln9.png-150.6kB

    Guest访客 --->只能发表评论,不能读写项目库

    Reporter报告者 --->只能克隆代码(读),不能提交代码(修改)(产品测试)

    Deveioper开发人员 --->可以进行代码的读写,不能分支合并但可以提交请求(普通程序员)

    Master主程序员 --->可以添加项目成员,添加标签,创建和保护分支(产品经理)

    Owner所有者 --->拥有所有权限(一般不用此权限)

     

    添加权限成功后,GitLab会自动邮件通知这个用户

    image_1cuucmq5bund1cm11v9ci43fvhnm.png-195.1kB

     

    给项目组创建一个新项目

    image_1cuucp81t1j461oca8vua9h8nko3.png-134.4kB


    image_1cuucs8il1itobjo1vsr12egndip0.png-178.3kB


    image_1cuuctubct7cjam9cd1hetva9pd.png-163.2kB

     

    在GitA主机上创建环境并测试

    mkdir /benet

    cd /benet

    touch {1..5}

    git init

    git remote add test http://192.168.200.90:8888/dev/benet.git

    git remote -v

    git add *

    git commit -m "主程序员测试一下"

    git push -u test master

    输入账号:1123400300@qq.com,密码:linyaonie

    image_1cuudcvd91ddr1cah126d1mu1j86pq.png-101.2kB

     

    在网页上刷新并查看测试结果

    image_1cuudeobn1n1vch11j65bmu3tqq7.png-149.5kB

  • 相关阅读:
    各版本arm-gcc区别与安装【转】
    内存与文件系统【笔记】
    ramdisk文件系统的介绍与制作【转】
    浅谈linux中的根文件系统(rootfs的原理和介绍)【转】
    mybatis generator自动生成代码
    java no XXX in java.library.path怎么配置
    使用JNotify 监控文件变化
    javaFx中fxml的键盘事件
    okhttp同步异步下载文件,与http请求工具类
    JavaFx2 实现系统托盘SystemTray
  • 原文地址:https://www.cnblogs.com/linyaonie/p/11238296.html
Copyright © 2011-2022 走看看