GitLab 是一个强大的版本控制和协作平台,用于管理代码仓库、项目、问题跟踪、持续集成和部署等软件开发任务。下面是一个详细的 GitLab 使用教程,包括创建项目、添加成员、管理代码、问题跟踪和持续集成等方面的基本步骤。
GitLab 分为 社区版(Community Edition,缩写为 CE)和 企业版(Enterprise Edition,缩写为 EE)。社区版是免费的,而企业版包含一些收费服务,一般来说个人开发者用社区版就足够了。
一、安装启动
1.1 Docker 方式安装
sudo docker run --detach \
--name gitlab \
--restart always \
--publish 7797:443 --publish 7799:80 --publish 7798:22 \
--volume /home/zhangqin/mydata/gitlab/config:/etc/gitlab \
--volume /home/zhangqin/mydata/gitlab/log:/var/log/gitlab \
--volume /home/zhangqin/mydata/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
1.2 Docker Compose 文件
docker-compose.yml 文件
networks:
1panel-network:
external: true
services:
gitlab:
# 容器运行的镜像
image: registry.cn-shenzhen.aliyuncs.com/zhangqintech/gitlab-ce:17.3.0-ce.0
# 自定义容器名称
container_name: ${CONTAINER_NAME}
# 添加环境变量
environment:
TZ: Asia/Shanghai
# 容器总是重新启动
restart: always
# 端口映射
ports:
- 11022:22
- 11080:80
- 11443:443
# 配置容器连接的网络
networks:
- 1panel-network
# 以 root 用户身份运行容器
user: root
# 将主机的数据卷或着文件挂载到容器里
volumes:
- "/mydata/volumes/gitlab/config/ssh:/etc/ssh"
- "/mydata/volumes/gitlab/config/gitlab:/etc/gitlab"
- "/mydata/volumes/gitlab/data:/var/opt/gitlab"
- "/mydata/volumes/gitlab/log:/var/log/gitlab"
- "/mydata/volumes/gitlab/.ssh:/root/.ssh"
# 部署配置
deploy:
# 资源配置
resources:
limits:
cpus: ${CPU_LIMIT}
memory: ${MEMORY_LIMIT}
.env 文件
CONTAINER_NAME="cicd-gitlab"
CPU_LIMIT=0
MEMORY_LIMIT=0
1.3 默认账号密码
默认管理员账号:root
默认管理员密码:进入容器后查询 /etc/gitlab/initial_root_password 文件。
1.4 必要的配置
# 修改gitlab.rb
vi /etc/gitlab/gitlab.rb
# gitlab访问地址,可以写域名。如果端口不写的话默认为80端口
external_url 'http://192.168.3.17:11080'
# ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '192.168.3.17'
# ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 11022
# 让配置生效
gitlab-ctl reconfigure
# 重启gitlab
gitlab-ctl restart
二、常见功能
2.1 关闭用户注册
因为 Gitlab 默认开启了用户注册(需要管理员审核),建议关闭用户注册功能。记得取消勾选了Sign-up enabled,下拉点击保存按钮~~~
2.2 忘记管理员密码
# 进入容器内部
docker exec -it gitlab /bin/bash
# 进入控制台
gitlab-rails console -e production
# 查询id为1的用户,id为1的用户是超级管理员
user = User.where(id:1).first
# 修改密码为123456
user.password='123456'
# 保存
user.save!
# 退出
exit