4.3 KiB
4.3 KiB
Стратегия по email
- В задаче в redmine делается любое изменение - смена статуса, обновление описания, добавление нового комментария.
- Redmine отправляет сообщение о факте обновления задачи по email
- Pinkmine читает новые письма протоколу imap, находит в заголовках номер задачи с помощью регулярного выражения
- Pinkmine помещает номер задачи в очередь для выполнения обновления
Параметры работы стратегии задаются в конфигурационном файле configs/issue-event-emitter-config.jsonc в секции mailListener:
{
// ...
"mailListener": {
// регулярное выражение для определения номера задачи в заголовке письма:
"issueNumberParser": "\\b(?<=#)\\d+\\b",
// параметры для доступа к почте через протокол imap:
"imapSimpleConfig": {
"imap": {
"user": "",
"password": "",
"host": "",
"port": 143,
// tls: true,
"autotls": "always",
"authTimeout": 5000
}
},
// интервал через который происходит проверка почты:
"updateInterval": 180000, // 3 min
// имя папки в которой следует искать входящие письма
"boxName": "INBOX"
},
// ...
}
Стратегия через cron-таски
- Pinkmine загружает данные из преднастроенных query-запросов в redmine в формате csv. Выбирает данные по двум полям - id задачи и "обновлено" (дата+время обновления задачи)
- Pinkmine проверяет какие задачи в своём кеше (CouchDB) уже успели устареть
- Номера устаревших задач кладёт в очередь для дальнейшего обновления
Параметры работы стратегии задаются в конфигурационном файле configs/issue-event-emitter-config.jsonc в секциях csvListener и rootIssueListener:
{
// ...
// таски для синхронизации по преднастроенным запросам:
"csvListener": {
"tasks": [
{
// расписание для выполнения задачи (синтаксис crontab)
"schedule": "* * * * *",
// поле в csv-файле с датой и временем обновления задачи
"updatedAtFieldName": "Обновлено",
// формат даты и времени
"dateTimeFormat": "dd.MM.yyyy HH:mm",
// ссылки на предстароенные запросы выборки задач в формате csv
"csvLinks": [
"https://<redmine_host>/projects/proj/issues.csv?utf8=%E2%9C%93&query_id=2"
]
}
]
},
// таски для синхронизации корневых и суммирующих задач:
"rootIssueListener": {
"tasks": [
{
// расписание для выполнения задачи (синтаксис crontab)
"schedule": "15 6,12 * * *",
// номера задач
"rootIssues": [
1,
3,
7,
11
]
}
]
},
// ...
}
Эта стратегия позволяет догружать данные, которые не пришли по email рассылке: закрытые задачи, shady-mode, изменение структуры дерева при смене привязки к родительской задаче и т.п.

