Here at Calyx, we’re using Redmine as our Issue Tracking System.
Recently we’ve started using it not only to handle our software development processes, but also administrative ones. With that, a very strong use case came up that is not supported by Redmine out of the box – scheduled/recurring tasks. And for a good reason, since that’s not a natural feature of a project management system.
So, I’ve searched for the best way to misuse the product.
Besides learning that a lot of people ask for that feature, I’ve googled up a plugin that can be installed into Redmine. Oddly enough, reading the installation instructions scared me off into a more h4x0r solution.
Turns out, Redmine has a REST API. For me, that screamed for a cron’d cURL. In order to use the API, enable it in your Redmine settings and get your API key from the web interface.
A sample API call looks like this:
curl --insecure -H "Content-Type: application/json" -X POST --data "@/path/to/scheduledJobs/newIssueData.json" -H "X-Redmine-API-Key: abcd0123abcd0123abcd0123abcd0123" https://your.redmine.installation/issues.json
All data needed to create the new issues is specified in the file /path/to/scheduledJobs/newIssueData.json, for example:
"subject": "Do this and that",
"description": "A description of this and that"
There’s much more to the Redmine REST API, but this served the purpose for my case.
All that was left to do was scheduling, a few crontab entries did the magic.