omkarkhatavkar / jirasync

This CLI tool to sync and track GitHub issues, pr's, pr_reviews with Jira. Currently supported to only for create, update and close status.
MIT License
4 stars 3 forks source link

Discussion about the `unique-id` for task and multiple assignment #9

Closed rochacbruno closed 5 years ago

rochacbruno commented 5 years ago

issues

@omkarkhatavkar I think the unique id for the task on Jira, in case of issues should be only: <source_name>#<project>#<id>#

Examples: issue#robottelo#123# or pr#robottelo#123# or pulp#Docker Plugin#1234#

Then, we assure there is only one task on destination (Jira) for each issue on source (github/redmine).

On every run:

I think Title, Assignee, Status are the only fields we want to update in case of change.

Pull Request Reviews

For Pull Request Reviews the case is a bit different as we can have multiple assignees, so we need to use the unique:

<source_name>#<project>#<id>#assignee# example:

pr-review#robottelo#1234#rochacbruno pr-review#robottelo#1234#omkarkhatavkar

Then we have 2 review tasks on Jira for the same pr on github.

The problem with this scenario is that we need to do a different workflow:

omkarkhatavkar commented 5 years ago

Then, we assure there is only one task on destination (Jira) for each issue on the source (Github/Redmine).

On every run:

if the assignee changed on the source (GitHub/Redmine) then we need to update the assignee on Jira, @omkarkhatavkar ==> this already added by you in Redmine, This is pending in Github Side. I will work on it.

if status changed on the source, and we have a relation in Jira (for example "close -> Done") then we update the status. @omkarkhatavkar ==> This is currently exit in both Github and Redmine side in working condition

If the title of issue changed on the source then we update it on Jira. I think Title, Assignee, Status are the only fields we want to update in case of change.

@omkarkhatavkar ==> Nice Catch! @rochacbruno This is absent currently in workflow

omkarkhatavkar commented 5 years ago

The problem with this scenario is that we need to do a different workflow:

search query in the case of PR Review should include the assignee (otherwise will fetch 2 tasks, which is ok if we ensure to update both) @omkarkhatavkar ==> As we are adding Jira username Task will be unique only. As we iterating over users we will be looking for only for that user. For Github, We will sync only those reviewers who have approved/given suggestions (comments). In SatQE, we have the case that there are multiple reviewers are assigned for PR reviews. We can not create a task for all of them. (we want to avoid that case)

When PR is merged/closed on GitHub we will need to update the status of both tasks @omkarkhatavkar => Status currently changing in Github Side

If the title of the PR changes we will also need to update tasks (?) If requested reviewer declines the review and is removed from review list what do we do? (maybe nothing as it is a very corner case) @omkarkhatavkar => This is a corner case for sure. But If the user has not added any comments or approved PR then the contribution will not be added in Jira Task. In this case, the Jira Task should not be getting created a good case to test

rochacbruno commented 5 years ago

Closing this in favor of #15 where the workflows are being explored