GitLab

Git服务器

一、概念

  • C/S 架构的 Git 服务端
  • 是存放代码的公用平台
  • 是多人并行协作的核心部分
  • 通常单独部署在一台独立的服务器上
  • 客户端可以通过网络访问服务器上的仓库

GitLab搭建

一、部署

1、安装依赖包

[root@GitLab ~]# yum -y install policycoreutils-python-utils.noarch

2、安装gitlab-ce包

[root@GitLab ~]# rpm -ivh --nodeps --force gitlab-ce-12.4.6-ce.0.el7.x86_64.rpm
[root@GitLab ~]# rpm -qa | grep gitlab
gitlab-ce-12.4.6-ce.0.el7.x86_64

3、GitLab配置

# 重载GitLab应用配置
[root@GitLab ~]# gitlab-ctl reconfigure
...
Running handlers:
Running handlers complete
Chef Client finished, 527/1423 resources updated in 02 minutes 05 seconds
gitlab Reconfigured!

# 重启GitLab相关服务
[root@GitLab ~]# gitlab-ctl restart
ok: run: alertmanager: (pid 1975) 0s        //报警服务
ok: run: gitaly: (pid 1986) 1s              //Git后台服务
ok: run: gitlab-exporter: (pid 2014) 0s     //Prometheus数据采集器
ok: run: gitlab-workhorse: (pid 2020) 1s    //反向代理服务器
ok: run: grafana: (pid 2117) 0s             //数据可视化服务
ok: run: logrotate: (pid 2129) 0s           //日志文件管理服务
ok: run: nginx: (pid 2135) 1s               //静态WEB服务
ok: run: node-exporter: (pid 2142) 0s       //Prometheus数据采集器
ok: run: postgres-exporter: (pid 2148) 1s   //Prometheus数据采集器
ok: run: postgresql: (pid 2159) 0s          //数据库服务
ok: run: prometheus: (pid 2168) 0s          //Prometheus监控服务
ok: run: redis: (pid 2178) 1s               //缓存数据库服务
ok: run: redis-exporter: (pid 2183) 0s      //Prometheus数据采集器
ok: run: sidekiq: (pid 2192) 0s             //异步执行队列服务
ok: run: unicorn: (pid 2203) 0s             //Rails托管WEB服务

GitLab使用

一、GitLab初始化

管理员用户初始化

  • 管理员用户为root
  • 首次登陆需设置管理员密码
  • 登陆方式为浏览器访问
# GitLab主机确认80端口被监听
[root@GitLab ~]# ss -anptul | grep :80
tcp   LISTEN 0      511          0.0.0.0:80        0.0.0.0:*    users:(("nginx",pid=11166,fd=7),("nginx",pid=11165,fd=7),("nginx",pid=11164,fd=7))  
[root@GitLab ~]# 

二、GitLab使用

1、用户管理

  • 可以通过用户管理创建多个用户
  • 可以设置用户权限

2、组管理

  • 当用户非常多时可以将用户进行分组
  • 可以对组进行权限控制
  • 可以对组内用户身份控制

3、项目管理

  • 服务器上可以托管多个项目(仓库)

  • 可以设置项目归属

  • 可以对不同的项目做权限控制 

代码托管

一、GitLab与Git客户端关联

1、关联Git服务器与客户端

关联 Programer 主机的 myproject 仓库与 GitLab 服务器上创建的 myproject 项目

# 参考提示命令"推送已有Git仓库部分"
[root@Programer ~]# cd myproject/
# 查看远程仓库关联信息
[root@Programer myproject]# git remote -v
# 关联远程项目
[root@Programer myproject]# git remote add origin http://192.168.88.20/devops/myproject.git
# 查看远程仓库关联信息
[root@Programer myproject]# git remote -v
origin  http://192.168.88.20/devops/myproject.git (fetch)
origin  http://192.168.88.20/devops/myproject.git (push)
# 推送本地仓库所有分支
[root@Programer myproject]# git push -u origin --all
Username for 'http://192.168.88.20': mark       #用户名
Password for 'http://mark@192.168.88.20':       #密码
枚举对象中: 29, 完成.
对象计数中: 100% (29/29), 完成.
使用 2 个线程进行压缩
压缩对象中: 100% (19/19), 完成.
写入对象中: 100% (29/29), 2.21 KiB | 2.21 MiB/s, 完成.
总共 29(差异 5),复用 0(差异 0),包复用 0
remote: 
remote: To create a merge request for feature, visit:
remote:   http://gitlab.example.com/devops/myproject/merge_requests/new?merge_request%5Bsource_branch%5D=feature
remote: 
remote: To create a merge request for hotfix, visit:
remote:   http://gitlab.example.com/devops/myproject/merge_requests/new?merge_request%5Bsource_branch%5D=hotfix
remote: 
To http://192.168.88.20/devops/myproject.git
 * [new branch]      feature -> feature
 * [new branch]      hotfix -> hotfix
 * [new branch]      master -> master
分支 'feature' 设置为跟踪来自 'origin' 的远程分支 'feature'。
分支 'hotfix' 设置为跟踪来自 'origin' 的远程分支 'hotfix'。
分支 'master' 设置为跟踪来自 'origin' 的远程分支 'master'。

# 推送本地仓库所有标签
[root@Programer myproject]# git push -u origin --tags
Username for 'http://192.168.88.20': mark       #用户名
Password for 'http://mark@192.168.88.20':       #密码
总共 0(差异 0),复用 0(差异 0),包复用 0
To http://192.168.88.20/devops/myproject.git
 * [new tag]         v1 -> v1

二、关联后效果展示

三、客户端免密推送

1、配置HTTP访问免密推送

#每次推送都需要认证,可以设置免密推送
    #store:永久存储
    #cache:默认缓存15分钟,期间无需认证,可通过cache --timeout=3600设置超时时间
    #git remote add origin http://name:pass@192.168.88.20/devops/myproject.git
[root@Programer myproject]# git config --global credential.helper store #持久保存
[root@Programer myproject]# git push                        #推送代码(本次需要认证)
Username for 'http://192.168.88.20': mark   #用户名
Password for 'http://mark@192.168.88.20':   #密码
Everything up-to-date
[root@Programer myproject]# git push                        #再次推送测试免密
Everything up-to-date
[root@Programer myproject]# git config --list
user.name=mark
user.email=mark@tedu.cn
init.defaultbranch=master
credential.helper=store
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=http://192.168.88.20/devops/myproject.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.feature.remote=origin
branch.feature.merge=refs/heads/feature
branch.hotfix.remote=origin
branch.hotfix.merge=refs/heads/hotfix
branch.master.remote=origin
branch.master.merge=refs/heads/master
[root@Programer myproject]# cat ~/.git-credentials 
http://mark:1234.com@192.168.88.20

04-10
### GitLab 使用指南 GitLab 是一种用于版本控制和协作开发的工具,它提供了代码托管、持续集成/部署 (CI/CD) 和项目管理等功能。以下是关于如何使用 GitLab 的一些基本指导以及常见的问题解决方案。 #### 配置本地环境以连接到 GitLab 为了能够通过命令行访问远程仓库,需要配置 SSH 密钥来验证身份[^1]。 具体操作如下: 1. **生成 SSH 密钥** 如果尚未创建过密钥,则可以通过运行以下命令生成新的 SSH 密钥: ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 2. **添加公钥至 GitLab 账户** 将生成的 `.ssh/id_rsa.pub` 文件中的内容复制并粘贴到 GitLab 用户设置下的 “SSH Keys” 页面中[^2]。 3. **测试连接** 运行下面这条命令可以确认是否成功建立与服务器的安全通信链路: ```bash ssh -T git@gitlab.example.com ``` 如果一切正常的话,应该会收到一条欢迎消息表明已登录成功[^3]。 #### 创建新项目 当首次进入 GitLab 主页时,默认界面展示的是项目的列表视图。点击右上角绿色按钮“New Project”,按照提示填写必要的字段即可完成新建过程[^4]。 - 可选择从空白模板开始构建或者导入现有资源(GitHub/Gitea 等其他平台上的资料)。 - 设置可见性级别——公开(Public)/内部(Internal)/私有(Private),这决定了谁有权查看该项目及其相关内容[^5]。 #### 常见错误处理方法 ##### 错误一:无法推送更改至远端分支 可能原因包括权限不足或是网络异常等问题。尝试执行 `git remote -v` 查看当前关联地址是否正确;另外还需核实目标分支是否存在保护策略限制提交行为的发生[^6]。 解决办法可能是联系管理员获取适当授权或许可权调整相应规则允许个人实施更新动作[^7]。 ##### 错误二:Merge Request 审核状态卡住 有时即使所有检查都已完成,MR仍处于待定状态而未自动合并。此时应手动触发管道流程重新评估最新版源码质量指标满足标准后再继续推进后续步骤直至最终合入主干线程之中去[^8]。 ```yaml stages: - test - deploy test_job: stage: test script: - echo "Running tests..." deploy_job: stage: deploy script: - echo "Deploying application..." only: - main ``` 上述 YAML 片段展示了简单的 CI 流水作业定义文件结构形式之一,在实际应用当中可根据需求灵活定制更多复杂场景支持功能扩展可能性无限大哦[^9]! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值