gitlab配置邮件通知
来源:互联网 发布:ubuntu jira 汉化 编辑:程序博客网 时间:2024/05/16 10:18
gitlab配置邮件通知
配置用户提交评论、添加issue等的邮件通知:
Gitlab邮件提醒方便跟踪项目进度,在这里介绍两种方式,一种是用系统的sendmail发送邮件,另一种是GMAIL的stmp来发送邮件
第一种 用系统的sendmail发送邮件
cd /home/gitlab/gitlab/
vi config/environments/production.rb
将这行 # config.action_mailer.delivery_method = :sendmail
改为 config.action_mailer.delivery_method = :sendmail
保存config/environments/production.rb
编辑config/gitlab.yml
vi config/gitlab.yml
对应修改一下配置
web:
host: gitlab123.com
port: 80
https: false
email:
from: notify@gitlab123.com
protocol: http
host: gitlab123.com
git_host:
host: gitlab123.com
编辑/etc/hosts
加入你的ip对应gitlab123.com
10.0.0.71 gitlab123.com
第二种 GMAIL的stmp来发送邮件
cd /home/gitlab/gitlab/
vi config/environments/production.rb
在# config.action_mailer.delivery_method = :sendmail下加入
config.action_mailer.delivery_method = :smtp
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => 'gmail.com',
:user_name => 'account@gmail.com',
:password => 'password',
:authentication => :plain,
:enable_starttls_auto => true
}
#配置好你的邮箱和密码
编辑config/gitlab.yml
vi config/gitlab.yml
对应修改一下配置
email:
from: account@gmail.com
protocol: http
配置源码push到版本库时的通知:
0、先安装msmtp,参考http://www.cnblogs.com/hanxianlong/p/3474429.html
1、进入到repositories中,如/opt/gitlab-6.3.0-0/apps/gitlab/repositories/imagesys5/test.git
cd /opt/gitlab-6.3.0-0/apps/gitlab/repositories/imagesys5/test.git
2、到项目的hooks目录中,新建一个名为post-receive的hook软链接,指向到/usr/share/doc/git-1.7.1/contrib/hooks/post-receive-email
ln -s /usr/share/doc/git-1.7.1/contrib/hooks/post-receive-email hooks/post-receive
3、编辑项目的config文件
vim config
新增如下配置节:
[hooks]
mailinglist = "YOURMAIL1@MAILSERVER.COM,YOURMAIL2@MAILSERVER.COM"
emailprefix="[GIT]"
4、编辑项目的Description名称
vim description
修改内容为项目名称
5、修改/usr/share/doc/git-1.7.1/contrib/hooks/post-receive-email文件的send_mail函数(大约640行和642行),将/usr/sbin/sendmail替换为/usr/bin/msmtp
send_mail()
638 {
639 if [ -n "$envelopesender" ]; then
640 #/usr/sbin/sendmail -t -f "$envelopesender"
641 /usr/bin/msmtp -t -f "$envelopesender"
642 else
643 #/usr/sbin/sendmail -t
644 /usr/bin/msmtp -t
645 fi
646 }
##############################
Introduction
为Git repository 添加hook,每次commit 时发送一封diff email
Procedure
拷贝Git-core自带的post-receive-email Shell 脚本
mv YOUR_REPO_PATH/hooks/post-receive YOUR_REPO_PATH/hooks/post-receive.back cp PATH/TO/GIT-CORE/contrib/hooks/post-receive-email YOUR_REPO_PATH/hooks/post-receive chmod a+x YOUR_REPO_PATH/hooks/post-receive
设置 Git repository 的config
vi YOUR_REPO_PATH/config
[hooks] mailinglist = “Receive1@email.address,Receive2@email.address” emailprefix = “[git]” announcelist = envelopesender = “SenderSender@email.address” sendmail = /usr/sbin/sendmail showrev=
其中 mailinglist
为收件人,emailprefix
为邮件前缀,announce list
为repo创建tag时的汇总信息邮件收件人列表, evelopesender
为发件邮箱地址,sendmail
为发件程序地址,showrev
为Log打印格式。
然后推送一个提交试试。It's work!
More useful
Email Content formatted
发送的是纯文本的邮件,对于Diff信息很难辨识。我们可以通过修改post-receive
脚本自定义邮件样式。 [Making Git show post-receive emails as an HTML colour formatted diff]提供了这个脚本,我就直接拿来用。
但是标题我们要求是"[ProjectName][CommitAuthor][Action][Branch]CommitLog"
,所以还需要自己定制。 首先是获取ProjectName,因为我们是使用GitLab作为Git repository server,它集成 gitelitolite 了,自己负责创建项目,一些MetaData并没有保存在Repo中,而是在数据库中。比如ProjectName,它没有提供YOUR_REPO_PATH/description
这个文件,所以直接使用文章中的post-receive
会出现项目名称为空的情况。
我就将ProjectName
设置为Repo目录名称:
projectdesc=$(basename $(pwd))projectdesc=${projectdesc%.git*}
然后我们再修改邮件标题:
Subject: ${emailprefix}[$projectdesc][$(git log --pretty=format:"%cn" -1 $describe)][${change_type}d][$short_refname]$(git log --pretty=format:"%s" -1 $describe)
其中$(git log --pretty=format:"%s" -1 $describe
为获取提交日志,$describe
为Commit reversion。
好了自此,邮件内容格式问题解决了。
Integrate with Gitlab
并不是所有的Repo都需要邮件绑定,不过我们可以将这些配置放到YOUR_REPO_PATH/config
中作为开关。
此外Gitlab Dashboard的提交动态同样需要绑定post-receive
hook,所以需要将这两个脚本整合在一起。
我们直接将Gitlab工作的那一行逻辑复制到我们的脚本中。
这里发生一个事故,我直接粘贴rpush
那一行,导致其中变量引用错误,Gitlab 的默认版本不是$refname
,导致提交了部分脏数据到Gitlab中,最后通过删除那部分的events
数据解决。耗时半小时。
# --- Main loop# Allow dual mode: run from the command line just like the update hook, or# if no arguments are given then run as a hook scriptif [ -n "$1" -a -n "$2" -a -n "$3" ]; then # Output to the terminal in command line mode - if someone wanted to # resend an email; they could redirect the output to sendmail # themselves PAGER= generate_email $2 $3 $1else while read oldrev new rev refname do repo_path=`pwd` env -i redis-cli rpush "resque:gitlab:queue:post_receive" "{\"class\":\"PostReceive\",\"args\":[\"$repo_path\",\"$oldrev\",\"$newrev\",\"$refname\",\"$GL_USER\"]}" > /dev/null 2>&1 if [ -n "$recipients" ]; then # validate repo email notify information generate_email $oldrev $newrev $refname | send_mail fi donefi
然后将这个脚本替换Gitlab默认的post-receive . 以后的项目只需要添加YOUR_REPO_PATH/config
的hooks
邮件信息就可以触发。
##############################################
http://huangx.in/3/for-git-add-a-submit-message-notification
- gitlab配置邮件通知
- gitlab 邮件服务器配置
- gitlab邮件服务器配置
- docker gitlab邮件配置
- gitlab配置邮件
- gitlab邮件发送配置
- gitlab 邮件配置(smtp)
- redmine配置邮件通知
- git 配置邮件通知
- Gitblit 配置邮件通知
- Jenkins 配置邮件通知
- Jenkins 配置邮件通知
- iOS持续集成:jenkins+gitlab+蒲公英+邮件通知(Part 1)
- iOS持续集成:jenkins+gitlab+蒲公英+邮件通知(Part 2)
- 配置GitLab 用smtp发邮件 (gitlab-6.7.3)
- gitlab安装与邮件及域名配置
- MSSQL2008数据库邮件通知配置
- jenkins邮件通知的配置
- asp.net execl导入数据
- javaweb中的各种域对象
- JAVA POI上传excel文件到数据库并备份(上)
- kali linux 更新后Kernel 4.6VMWare Workstation无法启动的解决办法
- python的编码问题
- gitlab配置邮件通知
- Codeforces Round #420 (Div. 2) A. Okabe and Future Gadget Laboratory
- 多个directive定义在一个DOM元素上时的编译和链接顺序---执行顺序
- Leetcode: 477. Total Hamming Distance
- 面试题9—斐波那列数列
- LINUX 报错
- GitLab常用命令整理
- java工具 MyEclipse工程的建立、导入、删除
- Ansible的使用