Define custom automated workflow

Added by Benjamin Kiepke about 1 month ago

Hello,

I'm completely new to redmine. If this is the wrong forum push me to the correct one, please.

So far I installed redmine using the latest docker-image with mysql as backend.
I installed some plugins (free versions): agile and checklist which work quite well.
Additionally I configured a software repository which could be browsed and redmine is updated by a post-commit-hook whenever a commit happened.
Also the commit is assigned to a ticket.

What I want to achieve is an automated workflow for our software development group.

I want configure the rights of group "developer" so members of this group will only be able to change status of a ticket
i. from "new" to "in progress"
ii. from "in progress" to "declined" in case the request doesn't make sense or is not possible in the opinion of the developer
iii. from "in progress" to "feedback" in case the request is full-filled
especially group "developer" should not be able to close a ticket.

Is it possible?
How can I achieve that?

1. As soon as a developer change the status of an issue-ticket from "new" to "in progress" the following things should happen in the background:
a. in the project-repository a branch should be created from "trunk" which is named after the pattern "project"-"tracker"-"issue-id"-"issue-title"
b. in our build-server a job is created with the same name as the branch. After creation job is executed.

2. As soon as a developer change the status of an issue-ticket from "in progress" to "feedback" the following things should happen in the background:
a. all contacts of group "reviewer" will be emailed that there is a new review to do.
b. our build-server runs the pre-defined job again.

At this point it should not be possible to change the status of an issue-ticket.
Now there are two things that can happen:
1. Each "reviewer" agree the development, also the build-server reports a "SUCCESS" -> ticket is closed automatically
2. One or more "reviewer" disagree the development or the build-server reports a "FAILURE" -> ticket is moved back to "in progress"

I can do the following things manually by a script utilizing the REST-API of our build-server and command-line programs of our software repository.
1. create a new branch
2. create a new build-job
3. run the build-job

I looked through all the plugins listed in the redmine-wiki, but could not find one that seems to the described requirements.
I can hardly image that I'm the first person trying to do this.

1. Does the described workflow make sense to you? Do you see any caveats or drawbacks?
2. Are there any plugins, which run on the latest redmine, let me configure such things on a project-base?
i. Maybe a plugin which triggers a script (ruby, bash, perl, python ...) by an event would be sufficient.

As I couldn't find a plugin doing what I need, I thought about developing such a plugin myself. So far I read the book "Redmine Plugin Extension and Development" of packt.
This book describes the fundamental process by creation of the plugin "Knowledgebase".
I'm totally new to ruby and rails, so I surely miss a lot of information and have to learn a lot of things about redmine.

Thanks for sharing this great software!

Replies (5)

RE: Define custom automated workflow - Added by Humphries Parker about 1 month ago

Deleted spam. (Bernhard Rohloff)

RE: Define custom automated workflow - Added by Benjamin Kiepke about 1 month ago

Hello,

sorry I can't see how your answer is related to my questions. Could you provide insights or tutorials?

RE: Define custom automated workflow - Added by Bernhard Rohloff about 1 month ago

Hi Benjamin,

first of all welcome to the Redmine community!

Benjamin Kiepke wrote:

Hello,

sorry I can't see how your answer is related to my questions. Could you provide insights or tutorials?

I think that's just another dumb SEO spam entry. It's completely unrelated to your post.

So here are my spam free 2cts... :)

I think you can achieve most of your needs utilizing the REST API and Redmine's workflow and fields permissions engine.
It has the advantage of keeping your Redmine "vanilla" and you can access is with a language of your choice.

After setting the status to "feedback" your background job could do:
- Create a subissue for the testjob (separate tracker "test" for example with specific fields for the test job service)
- Create a subissue for review (separate tracker with own review workflow; could be one issue assinged to the group or a couple of issues for every member of the reviewers group)
- Track if all the subissues are closed or set to a specific status and afterwards close the issue or set it back to "in progress"

If German isn't a problem for you, there's a really good basic ruby course at OpenHPI.

For further questions don't be afraid to ask. :)

Kind regards,

Bernhard

PS: By the way, we also have an unofficial discord channel: https://discord.gg/tHgdVSj

RE: Define custom automated workflow - Added by Benjamin Kiepke 29 days ago

Hi Bernhard,

thanks for the link to HPI- german will not be a problem :-)

If I did get you right, it does mean utilizing a program, maybe periodically triggered by a cron-job? So it will not be event-driven. So I don't have to fiddle with the internals of redmine - correct?

RE: Define custom automated workflow - Added by Bernhard Rohloff 29 days ago

Benjamin Kiepke wrote:

If I did get you right, it does mean utilizing a program, maybe periodically triggered by a cron-job? So it will not be event-driven. So I don't have to fiddle with the internals of redmine - correct?

Yes, that's exactly what I've meant. Just a cron job (or some more) which filters the issues lists after specific patterns and works through them. With Redmine's REST_API you are able to get the issue information and you can change it i within your specified workflow. As I'm a huge fan of Python I would do it with the Redmine Python Lib.

So IMHO a deep dive into Redmine isn't really necessary for this job.

(1-5/5)