内容大纲
1 版本选择:
gitlab社区版是纯英文的,所以有时候不太方便
若需要汉化,有2种方法,但是目前看来,2种方法的汉化进度都还是很慢的:
① 直接 docker search gitlab-ce-zh 使用大佬汉化好的镜像包,但是一般版本都较低
② 去官网看看最新的汉化包是哪个大版本的,先部署对应版本的镜像,随后自己下载对应版本汉化包打补丁
如以下例子:
https://gitlab.com/xhang/gitlab
如上图,目前最新的汉化包是12.3 ,所以如果要汉化,我可以安装12.3的大版本,例如12.3.5
docker pull gitlab/gitlab-ce:12.3.5-ce.0
如果对汉化没有要求,那就随意了,但尽量不选最新的,我这里为了演示就随意了,直接latest搞起!
2 docker安装部署
2.1 安装
安装前确保docker run命令中用到的端口未被占用
mkdir -pv /data/gitlab
docker run --detach \
--hostname 10.8.8.6 \
-p 50443:443 \
-p 50080:80 \
-p 50022:22 \
--name gitlab \
--restart always \
-v /data/gitlab/config:/etc/gitlab \
-v /data/gitlab/logs:/var/log/gitlab \
-v /data/gitlab/data:/var/opt/gitlab \
-v /etc/localtime:/etc/localtime \
gitlab/gitlab-ce:latest
容器启动后,需要再等待一会,可以使用docker logs -f gitlab 查看实时进度
安装成功后用容器宿主机ip及映射的端口50080 在浏览器访问即可,如
http://10.1.1.1:50080/
初始用户是root,登陆后显示是administrator@root
初始密码在对应的config目录下initial_root_password中
登录后需要修改root密码
2.2 配置邮件服务
首先修改配置文件,由于之前已经映射到宿主机的 /data/gitlab 目录了,所以我直接修改宿主机文件
vim /data/gitlab/config/gitlab.rb
打开之后,/smtp 查找下,会跳转到大概的位置,简单修改即可,以下列举了几个基本的参数,更多的例如ssl证书之类的,以后用到再更新
配置参数 | 作用 |
---|---|
smtp_user_name | 指明邮箱账号 |
smtp_password | 指明密码或授权码(几乎所有的邮箱要在第三方客户端登录的话,都需要生成授权码) |
gitlab_email_from | 指明管理员邮箱账号,与上边的一致即可 |
gitlab_email_display_name | 发邮件的签名,看喜好填写 |
具体配置我复制了一份:
### GitLab email server settings
###! Docs: https://docs.gitlab.com/omnibus/settings/smtp.html
###! **Use smtp instead of sendmail/postfix.**
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "[email protected]"
gitlab_rails['smtp_password'] = "密码或授权码"
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
# gitlab_rails['smtp_pool'] = false
###! **Can be: 'none', 'peer', 'client_once', 'fail_if_no_peer_cert'**
###! Docs: http://api.rubyonrails.org/classes/ActionMailer/Base.html
# gitlab_rails['smtp_openssl_verify_mode'] = 'none'
# gitlab_rails['smtp_ca_path'] = "/etc/ssl/certs"
# gitlab_rails['smtp_ca_file'] = "/etc/ssl/certs/ca-certificates.crt"
### Email Settings
gitlab_rails['gitlab_email_enabled'] = true
##! If your SMTP server does not like the default 'From: [email protected]'
##! can change the 'From' with this setting.
gitlab_rails['gitlab_email_from'] = '[email protected]'
gitlab_rails['gitlab_email_display_name'] = 'gitlab'
# gitlab_rails['gitlab_email_reply_to'] = '[email protected]'
# gitlab_rails['gitlab_email_subject_suffix'] = ''
# gitlab_rails['gitlab_email_smime_enabled'] = false
# gitlab_rails['gitlab_email_smime_key_file'] = '/etc/gitlab/ssl/gitlab_smime.key'
# gitlab_rails['gitlab_email_smime_cert_file'] = '/etc/gitlab/ssl/gitlab_smime.crt'
# gitlab_rails['gitlab_email_smime_ca_certs_file'] = '/etc/gitlab/ssl/gitlab_smime_cas.crt'
修改完之后需要重启服务,可以直接用docker restart 重启容器,也可以用以下命令
docker exec -it gitlab bash # 进入容器
gitlab-rails console # 重启服务
重启完成后,可以到gitlab的控制台中进行简单测试
# 进入gitlab容器
docker exec -it gitlab bash
# 进入gitlab的控制台
gitlab-rails console
# 随后执行命令,发送测试邮件
Notify.test_email('[email protected]', '邮件主题', '邮件内容啊啊啊').deliver_now
打开收件邮箱,可以看到测试邮件已发送成功
3 使用介绍
3.1 基础使用
3.1.1 创建组
3.1.2 创建项目
如上图所示,项目和组都有3个级别的权限 Private、Internal、Public
Private | 只有组成员才能看到 |
---|---|
Internal | 只要登录的用户就能看到 |
Public | 所有人都能看到 |
另外开源项目和组设置的是Internal
3.1.3 创建用户
在memu中点击admin,进入管理员页面,其中可以新建其他用户
创建成功后,再次点击edit 进去才能看到修改密码的框,随便填入一个密码即可,该用户自己登录的时候,首次登录会要求更改密码
3.1.4 绑定上述,并配置权限
① 将用户添加至刚刚创建的组内,从而令用户可以访问项目
随后点击右下角的Manage access 即可管理用户,包括其权限等
② 修改用户权限
上图可以看到,Gitlab用户在组中有五种权限:Guest、Reporter、Developer、Master、Owner
Guest | 可以创建issue、发表评论,不能读写版本库 |
---|---|
Reporter | 可以克隆代码,不能提交,QA、PM可以赋予这个权限 |
Developer | 可以克隆代码、开发、提交、push,RD可以赋予这个权限 |
Maintainer (Master) | 可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限 |
Owner | 可以设置项目访问权限 – Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限 |
3.1.5 push代码
gitlab 默认会开启自带的cicd ,如果用不到的话可以直接禁用了
禁用有2种方式,全局禁用和项目禁用单
首先登录gitlab,确定项目已创建
随后将本地的项目push上去,因为没有配置ssh免密登录,所以需要输入账户密码
Really a topic that deserves to be republished, and I personally like to follow your site because I do not feel wasting my time in it. I will share the topic on my account on Facebook, Twitter and Linkedin
thank u