维护GitLab的同事离职了
刚好又有新实习生需要申请账号
只能我来出手了
其实之前安装了 GitLab 之后一直还是用得比较粗糙的
属于是勉强能用的水平,有些配置都还没改好
这次把邮件功能、域名、外观啥的配置好了,写篇文章记录一下
先来回顾一下 GitLab 的目录结构
我们的 GitLab 是使用 docker 部署的
gitlab
├── config
├── data
├── logs
├── shell
└── docker-compose.yml
具体的目录结构也是看具体的配置
本文就以这个目录结构为例,进行具体的配置
修改 config/gitlab.rb
文件
话说 GitLab 居然是 ruby 写的?(难怪觉得卡卡的)
编辑邮件配置这一块
这里以腾讯企业邮箱为例
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "gitlab@codelab.com"
gitlab_rails['smtp_password'] = "email-password"
gitlab_rails['smtp_domain'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = false
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_ssl'] = true
gitlab_rails['smtp_pool'] = false
gitlab_rails['gitlab_email_from'] = "gitlab@codelab.com"
配置完成保存一下
进入 GitLab 容器
docker compose exec gitlab bash
执行命令
gitlab-ctl reconfigure
gitlab-ctl restart
搞定
对了,还有个额外配置可以改一下,我这里就只修改了 gitlab_email_from
其他的有需要的同学可以改一下
### Email Settings
# gitlab_rails['gitlab_email_enabled'] = true
##! If your SMTP server does not like the default 'From: gitlab@gitlab.example.com'
##! can change the 'From' with this setting.
gitlab_rails['gitlab_email_from'] = 'example@example.com'
gitlab_rails['gitlab_email_display_name'] = 'Example'
gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'
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'
我用的方法是进入 ruby console 手动发送
在 GitLab 实例的前台页面没找到有什么测试发送的地方
首先进入 GitLab 容器的 shell
docker compose exec gitlab bash
之后启动 ruby console
gitlab-rails console
输入命令发邮件
Notify.test_email('your-email@example.com', 'Test Email', 'This is a test email.').deliver_now
这个方法很好,如果有哪里配置错了,也可以从报错信息里直观的看到
Admin Area
(管理员区域)。Settings
> Integrations
。这个页面的中文应该是“实例级集成管理”,我这个版本的 GitLab 有俩跟邮件有关的,分别是:
顾名思义,前面邮箱配置好了就可以启用这俩
之后满足条件就可以在指定邮箱接收到通知邮件了
在之前那篇GitLab安装的文章里,我是直接把几个端口都映射出来
现在改成swag做反代,需要修改一下几个地方
例如要分配给 GitLab 的域名是 gitlab.dealiaxy.com
首先修改 docker-compose 配置,把容器加入 swag 网络
version: "3"
services:
gitlab:
image: gitlab/gitlab-ee:latest
restart: always
hostname: gitlab
container_name: gitlab
ports:
- 9443:443
- 9022:22
networks:
- swag
volumes:
- /etc/localtime:/etc/localtime
- ./config:/etc/gitlab
- ./logs:/var/log/gitlab
- ./data:/var/opt/gitlab
networks:
swag:
name: swag
external: true
重启容器
在 swag 里做 GitLab 容器的 80 端口反代
然后 config/gitlab.rb
配置里修改一下
external_url "http://gitlab.dealiaxy.com"
这里使用 HTTP 就好,https 在 swag 那边会配置,如果这里写了 https ,那么会要在 GitLab 里提供证书配置,比较麻烦。
然后 ssh host 也得改一下
gitlab_rails['gitlab_ssh_host'] = gitlab.dealiaxy.com
搞定
同样在 Admin Area 里,有个“外观”配置
里面可以修改logo、登录页面的图片、说明(而且还支持markdown)啥的
我稍微改了一下,效果是这样
然后还有 New Project Guidelines 和 Profile Image Guidelines
分别是创建项目和用户修改头像时左侧的引导提示
随便写一点或者用大模型生成就完事了
这样配置下来就有模有样
使用 docker-compose pull
命令来拉取最新的镜像后
先 down 然后再 up 就可以使更新生效了~
如果只是 restart 就只会重新启动现有的容器
本文主要还是记录了邮件配置
还有一些比较零散的配置
接下来还要继续完善一下 CICD 流程
到时搞定之后再写文章记录