1. Docker 搭建 Gitlab 代码存储服务
1. git 与 gitlab 的区别
git 与 gitlab 的区别:
git 是一种版本控制的系统,用于代码的存储和 版本控制。
gitlab 是基于 git 实现的 web 远程仓库,用于给开发团队提供项目代码的存储,分享,发布的云存储场所。处 gitlab 之外,还有 github,gitee 等工具。
2. gitlab 镜像
在线安装:
查找 gitlab 镜像:
# 查找 gitlab 镜像 docker search gitlab在线拉取 gitlab 镜像:
# 在线拉取 gitlab 镜像 docker pull gitlab/gitlab-ce:latest离线安装:
因为 gitlab 镜像体积大,所以在线拉取时间会很长,所以如果有离线安装包,也可以进行离线安装,避免长时间等待。
先在有 gitlab 镜像的计算机上进行导出,再将镜像拷贝到目标计算机上进行导入即可。
# 导出镜像 docker save gitlab -o mygitlab.tar # 导入镜像 docker load -i mygitlab.tar3. 启动 gitlab 容器
执行命令:
docker run \ -itd \ -p 9980:80 \ -p 9922:22 \ -v /home/gitlab/etc:/etc/gitlab \ -v /home/gitlab/log:/var/log/gitlab \ -v /home/gitlab/opt:/var/opt/gitlab \ --restart always \ --privileged=true \ --name mygitlab \ gitlab/gitlab-ce命令解释:
- -i:以交互模式运行容器,通常与 -t 同时使用命令解释
- -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
- -d:后台运行容器,并返回容器ID
- -p 9980:80:将容器内80端口映射至宿主机9980端口,这是访问gitlab的端口
- -p 9922:22:将容器内22端口映射至宿主机9922端口,这是访问ssh的端口
- -v /home/gitlab/etc:/etc/gitlab:将容器/etc/gitlab目录挂载到宿主机/home/gitlab/etc目录下,若宿主机内此目录不存在将会自动创建,其他两个挂载同这个一样
- --restart always:容器自启动
- --privileged=true:让容器获取宿主机root权限
- --name gitlab:设置容器名称为gitlab
- gitlab/gitlab-ce:镜像的名称,这里也可以写镜像ID
4. 修改配置
修改 gitlab.rb 配置:
# 进入容器内部 docker exec -it mygitlab /bin/bash # 修改 gitlab.rb 配置 vim /etc/gitlab/gitlab.rb # 加入如下配置 # gitlab访问地址,可以写域名。如果端口不写的话默认为80端口 external_url 'http://192.168.47.128' # ssh主机ip gitlab_rails['gitlab_ssh_host'] = '192.168.47.128' # ssh连接端口 gitlab_rails['gitlab_shell_ssh_port'] = 9922 # 让配置生效 gitlab-ctl reconfigure注意 ip 地址,不要盲目复制,要按照实际的配置写。
修改 gitlab.yml 配置:
# 修改 http 和 ssh 配置 vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml # 文件内修改内容 gitlab: host: 192.168.47.128 port: 9980 # 这里改为9980 https: false重启:
# 重启gitlab gitlab-ctl restart # 退出容器 exit至此 gitlab 已经在 Linux 上面部署成功了,可以访问 192.168.47.128:9980 进行验证。
2. Gitlab 修改管理员登录密码
1. gitlab 修改管理员登录密码
1. 进入 gitlab 容器:
# 进入容器内部 docker exec -it mygitlab /bin/bash2. 进入 gitlab 控制台:
# 进入 gitlab 控制台 gitlab-rails console -e production3. 查询 id 为 1 的用户,为超级管理员:
# 查询 id 为 1 的用户, 超级管理员 user = User.where(id:1).first4. 修改密码:
# 修改密码 user.password='abc@123456'5. 保存并退出:
# 保存并退出 user.save! exit
访问 gitlab,用户名 root,密码 abc@123456:
![]()
3. Gitlab 创建个人账号
企业中,项目通常是多人协作完成的,因此需要给每个项目成员都创建个人账号,进行权限分级控制。
1. gitlab 创建个人账号
1. root 账号登录
2. 创建群组
3. 创建用户
4. 重置用户密码
5. 将用户添加到群组
6. 登录个人账号并重置密码
至此,gitlab 个人账号就创建完成了。
4. Git 本地安装及环境配置
1. git 本地安装
git 下载地址:https://git-scm.com/install/
git 安装比较简单,一直点击 next 按钮即可;
2. git 环境配置
配置环境变量:
将 git 安装目录下的 bin 目录,配置为环境变量:
使用 cmd 查看版本信息:
# 查看版本信息 git --versiongit 本地配置:
1. 生成 ssh 密钥:
# 1、生成ssh密钥,连续三次回车默认配置 ssh-keygen -t rsa -C "my_email@qq.com"2. git 用户的配置(首次使用需要配置):
# 2、全局配置git用户名邮箱 git config --global user.email "my_email@xx.com" git config --global user.name "your_name"3. 查看公钥和私钥:
# 查看私钥 cat /c/Users/26490/.ssh/id_rsa # 查看公钥 cat /c/Users/26490/.ssh/id_rsa.pub4. 配置个人账号的私钥和公钥:
添加公钥:
5. Git 代码托管
1. git 常用命令
新建代码库:
# 在当前目录, 新建代码库 git init # 新建一个目录, 并初始化为代码库 git init [project-name] # 克隆一个项目到本地 git clone [url]配置:
# 显示当前的Git配置 git config --list # 编辑Git配置文件 git config -e [--global] # 设置提交代码时的用户信息 git config [--global] user.name "[name]" git config [--global] user.email "[email address]"增加删除文件:
# 添加指定文件到暂存区 git add [file1] [file2] ... # 添加指定目录到暂存区,包括子目录 git add [dir] # 添加当前目录的所有文件到暂存区 git add . # 添加每个变化前,都会要求确认 # 对于同一个文件的多处变化,可以实现分次提交 git add -p # 删除工作区文件,并且将这次删除放入暂存区 git rm [file1] [file2] ... # 停止追踪指定文件,但该文件会保留在工作区 git rm --cached [file] # 改名文件,并且将这个改名放入暂存区 git mv [file-original] [file-renamed]代码提交:
# 提交暂存区到仓库区 git commit -m [message] # 提交暂存区的指定文件到仓库区 git commit [file1] [file2] ... -m [message] # 提交工作区自上次commit之后的变化,直接到仓库区 git commit -a # 提交时显示所有diff信息 git commit -v # 使用一次新的commit,替代上一次提交 # 如果代码没有任何新变化,则用来改写上一次commit的提交信息 git commit --amend -m [message] # 重做上一次commit,并包括指定文件的新变化 git commit --amend [file1] [file2] ...远程同步:
# 下载远程仓库的所有变动 git fetch [remote] # 显示所有远程仓库 git remote -v # 显示某个远程仓库的信息 git remote show [remote] # 增加一个新的远程仓库,并命名 git remote add [shortname] [url] # 取回远程仓库的变化,并与本地分支合并 git pull [remote] [branch] # 上传本地指定分支到远程仓库 git push [remote] [branch] # 强行推送当前分支到远程仓库,即使有冲突 git push [remote] --force # 推送所有分支到远程仓库 git push [remote] --all2. 自动化测试项目推送远程仓库
1. 新建 .gitignore 文件
.gitignore 的作用就是在执行 git add 操作的时候,忽略某些文件;
常用的 python 项目模板:
# system or IDE generated files __debug_bin .vscode/ .idea/ .DS_Store *.bak .commit.txt !.gitkeep # python files venv __pycache__ *.pyc dist *.egg-info .python-version .pytest_cache说明:* 表示所有,! 表示不忽略;
2. 项目推送到远程仓库
1. 新建项目:
项目创建好之后,记录克隆地址:
2. 创建 git 仓库:
打开项目,创建 git 仓库:
执行 add,将项目添加到暂存区:
执行 commit 提交到本地仓库:
推送到远程仓库:
将项目的克隆连接,放到 URL 输入框:
注意:填写 URL 的时候一定要带上 SSH:// 协议,否则无法推送成功;
创建合并请求:
批准合并请求:
立即合并:
完成之后,代码合并到主分支: