また、私の作っているRedmine XLSX format issue exporterは、RedmineのCSVエクスポート機能と同等を目指しているので、変更に追随するようにしています。
Redmine本体へのコミットは、MastodonやDiscordのBOTで確認できますが、流してみる感じになるので見逃してしまいがちです。
CIで失敗する場合はいいのですが、スルーしてなんか動きがおかしくなったり、本体側のバグ修正をプラグイン側にも反映すべき場合があったりが続いたので、対策を考えて見ました、の結果です。
今回はGoogle Apps Scriptを使って見ました。Google Apps Scriptを使うと、cron的なトリガーでスクリプトを動かすことができます。
設定画面はこんな感じ。

作成したスクリプトは、redmine.orgのリポジトリページへアクセスして、今日のコミットがあればメールするというものです。
以下のような感じ。targetsにURLを追加していけば、複数のソースをチェックできます。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function CheckRedmineNewCommits() { | |
var targets = ['http://www.redmine.org/projects/redmine/repository/changes/trunk/app/views/issues/index.html.erb', | |
'http://www.redmine.org/projects/redmine/repository/changes/trunk/app/views/timelog/index.html.erb', | |
'http://www.redmine.org/projects/redmine/repository/changes/trunk/app/views/timelog/index.html.erb', | |
'http://www.redmine.org/projects/redmine/repository']; | |
var today = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd"); | |
var msg = ''; | |
for(var i = 0; i < targets.length; i++) { | |
if (isCommitedToday(targets[i], today)) { | |
msg = msg + '\n' + targets[i]; | |
} | |
} | |
if (msg !== '') { | |
GmailApp.sendEmail('twopackas@gmail.com', '[New Commit]Redmine New Commit Checker ' + today, | |
'Following urls has new commit.\n' + msg); | |
} | |
} | |
function isCommitedToday(url, today) { | |
return getLastCommitDate(url).substring(0, 10) == today; | |
} | |
function getLastCommitDate(url) { | |
var html = UrlFetchApp.fetch(url) | |
.getContentText() | |
.replace('<!DOCTYPE html>', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'); | |
var root = XmlService.parse(html).getRootElement(); | |
return parser.getElementsByClassName(root, 'committed_on')[0].getValue(); | |
} |
これでちょっとは見逃しが少なくなるといいんですが。。。
0 件のコメント:
コメントを投稿