前言

维护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

这个方法很好,如果有哪里配置错了,也可以从报错信息里直观的看到

几个跟邮件有关的功能

  • 登录到你的 GitLab 实例。
  • 进入 Admin Area(管理员区域)。
  • 导航到 Settings > Integrations

这个页面的中文应该是“实例级集成管理”,我这个版本的 GitLab 有俩跟邮件有关的,分别是:

  • 推送时发送电子邮件
  • 流水线状态电子邮件

顾名思义,前面邮箱配置好了就可以启用这俩

之后满足条件就可以在指定邮箱接收到通知邮件了

重新使用 swag 来分配域名+https

在之前那篇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 流程

到时搞定之后再写文章记录

开启GitLab的邮件通知功能以及一些外观配置的更多相关文章

  1. gitlab配置邮件通知功能操作记录

    之前已经介绍了gitlab的部署http://www.cnblogs.com/kevingrace/p/5651402.html但是没有配置邮箱通知功能,今天这里介绍下gitlab安装后的邮箱配置操作 ...

  2. Django error信息邮件通知功能配置部署

    1. 最近QA成为项目的重点,除了突破依赖外部表的阻力开始启用单元测试,还有一点就是对在线的生产服务的错误信息启用这个邮件通知功能,下面简单说一下启用方法: 1.发送邮件账号配置配置: EMAIL_H ...

  3. jenkins邮件通知功能

    第部分:全局设置 第一步:进入jenkins的系统设置 第二步:设置管理员邮件地址: 第三步:下载email-ext插件并填写对应的内容: 第四部:填写邮件通知 第五步:以上就是系统管理里需要填写的全 ...

  4. 配置Redmine的邮件通知功能

    依据<Windows下安装Redmine 2.5.2不全然指南 >一文,我们搭建主要的 Redmine 平台.如今是时候做进一步的配置了. 作为一个项目管理平台,必须能够通知项目成员有关项 ...

  5. 设置jenkins的邮件通知功能

    1.进入系统配置页面配置邮件发送的SMTP 2. 进入项目配置页面,配置邮件通知:(每次不稳定构建时会邮件通知)

  6. SQL Server自动化运维系列——关于邮件通知那点事(.Net开发人员的福利)

    需求描述 在我们的生产环境中,大部分情况下需要有自己的运维体制,包括自己健康状态的检测等.如果发生异常,需要提前预警的,通知形式一般为发邮件告知. 邮件作为一种非常便利的预警实现方式,在及时性和易用性 ...

  7. Jenkins+Jmeter持续集成笔记(四:定时任务和邮件通知)

    通过前几篇文章,jmeter+ant+jenkins自动化持续构建的测试平台基本成型.既然要自动化平台,最基本的肯定要实现不经过人工干预,平台会在特定的条件下自动运行测试脚本,并在脚本运行结束后,发送 ...

  8. Jenkins 配置邮件通知步骤

    Jenkins 配置邮件通知前言 可以在Jenkins 中配置邮件通知,比如在构建失败时发送邮件通知项目组来及时修复问题. Jenkins 邮件通知功能的插件主要包括: Mailer Plugin ( ...

  9. Jenkins之邮件通知

    Jenkins默认有一个邮件通知功能,但功能比较单一,能自定义的东西很少,一般使用Extended E-mail Notification插件来发送邮件,EXT Email插件功能比较多,但设置也比较 ...

  10. Ossec 安装并配置邮件通知

    Ossec 安装并配置邮件通知 目录 Ossec 安装并配置邮件通知 1. 介绍 2. 软硬件环境 3. 安装步骤 3.1 Server 3.2 Agent 3.3 配置邮件通知 4. 参考资料 1. ...

随机推荐

  1. 在线电子表格编辑器 Luckysheet

    下载地址 不知道地址正不正经,我先用着,网上找的地址,不知道是不是可信任的,疑似官网的两个地址都打不开, https://github.com/dream-num/Luckysheet zip包  h ...

  2. EasyUI组件新增方法与事件

    以window组件为例 事件 扩展事件直接定义在options中,可以再初始化组件时定义事件,也可以使用时临时定义事件.这里是组件初始化后在添加的. 使用情景:添加,插入功能.主界面表格分别点击添加和 ...

  3. Vue Vue-Router params 传参 为空 path定义参数 参数 param is not repeatable

    我在Vue-Router4.0.3版本上出现这个问题 因为官方 在2022年8月22日时废除了未定义的传参方式,所以必须使用定义的params. 解决办法: 在配置路由时:path路径上带上传值的ke ...

  4. EL表达式与JSTL简单入门

    更多博文请关注:听到微笑的博客 EL概述 EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL出现的目的是要替代jsp页面中脚本的编写. 简单来说EL表达式 ...

  5. C#使用WebView2替代Electron

    C#想要实现Electron那样混合桌面程序可以用以下几个库.本文使用EdgeSharp NanUI​github.com/NetDimension/NanUI Photino​github.com/ ...

  6. Uni-app极速入门(一) - 第一个小程序

    Uni-app 介绍 官网:https://www.dcloud.io/index.html uni-app是为js开发者提供的一个全端开发框架,可以开发一次编译为web.App.小程序(微信/阿里/ ...

  7. 安装centos7模板机[lvm版]

    1. 安装centos 7模板机 准备好centos7的镜像 下载地址:http://mirrors.aliyun.com/centos/7/isos/x86_64/ 安装centos 自定义硬件: ...

  8. lodash已死?radash库方法介绍及源码解析 —— 随机方法 + 字符串篇

    前言 大家好,我是阿瓜.一个励志想成为艾弗森的前端瓜 ~ 我们已经分享了 radash 库中数组.对象等相关的方法,大家感兴趣的可以前往主页查看阅读: 或许你最近在某个地方听过或者看过 radash ...

  9. Autolayout 下面的 Layer.cornerRadius

    一.问题: 如何在Autolayout模式中设置一个UIView的layer.cornerRadius? 二.解决: UiView的layer目前还不支持Autolayout设置约束,因此如果想设置一 ...

  10. gin 使用 jwt

    作用 JWT 的主要作用是方便客戶端與伺服器之間的身份驗證. 使用JWT 可以在不需要每次登入的情況下,在客戶端與伺服器之間安全地傳遞封裝身份信息. 它還可以用於許多其他用途,例如串接多個服務,並將數 ...