Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Contributor project automations via workflows #2584

Merged

Conversation

sam20908
Copy link
Contributor

@sam20908 sam20908 commented Feb 20, 2022

Fixes #960

This PR adds automation for contributors to move their PR between "Work In Progress" and "Initial Review".

Previous attempt by #829 was very close, but it needed pull_request_target to allow fork PRs to access secrets. This technically builds upon that (even I didn't know there was a previous attempt when I implemented this).

Automation So Far

  • /pr wip moves the PR card to "Work In Progress". It only searches through "Initial Review" and "Final Review" for now (because the assumption right now is that PRs that got through those reviews are ready to go), can change if requested.
  • /pr review moves the PR card to "Initial Review", it only searches through "Work In Progress" for the PR card.

Other Automation Ideas

  • Automatically adds PR as a card to "Initial Review" in "Code Reviews" project when the PR is submitted
  • Drafted PRs automatically puts the PR into "work in progress" status, same effect as /pr wip

Design Comments

  • No idea if a secret is really needed for STL (at least I didn't, tested with a separate account to fork the experimental repository and created a PR).
  • Moving the card requires JavaScript as there is no capable Actions to handle the way its being triggered, although there is https://github.com/alex-page/github-project-automation-plus, but it requires getting triggered through issues, and another workflow adding label wouldn't trigger it by default.
  • There was no API to get the project and card the PR is assigned to, so majority of moving card code was to find out where the corresponding card is related through API calls.

Experimentation repository can be found here: https://github.com/sam20908/STL-PR-Workflow

@sam20908 sam20908 requested a review from a team as a code owner February 20, 2022 00:28
Copy link
Contributor Author

@sam20908 sam20908 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some of the JavaScript questions so far.

.github/workflows/move-ready-for-review-prs.yml Outdated Show resolved Hide resolved
.github/workflows/move-ready-for-review-prs.yml Outdated Show resolved Hide resolved
.github/workflows/move-ready-for-review-prs.yml Outdated Show resolved Hide resolved
Copy link
Contributor Author

@sam20908 sam20908 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

New places of FIXME's.

.github/workflows/move-ready-for-review-prs.yml Outdated Show resolved Hide resolved
.github/workflows/move-work-in-progress-prs.yml Outdated Show resolved Hide resolved
.github/workflows/move-work-in-progress-prs.yml Outdated Show resolved Hide resolved
@StephanTLavavej StephanTLavavej added the infrastructure Related to repository automation label Feb 24, 2022
@StephanTLavavej StephanTLavavej added this to Initial Review in Code Reviews via automation Feb 24, 2022
@StephanTLavavej StephanTLavavej moved this from Initial Review to Work In Progress in Code Reviews Feb 24, 2022
@StephanTLavavej
Copy link
Member

While the Code Reviews project has a Work In Progress column, we deleted the "work in progress" label a few months ago as it seemed to be redundant. We can re-add it at any time, though.

@sam20908
Copy link
Contributor Author

Sure, I'll just remove the automation to add/remove the label for now.

@sam20908
Copy link
Contributor Author

This is officially ready for review, with everything addressed and the description updated.

@StephanTLavavej StephanTLavavej moved this from Work In Progress to Initial Review in Code Reviews Mar 2, 2022
@StephanTLavavej StephanTLavavej self-assigned this Mar 9, 2022
@strega-nil-ms strega-nil-ms self-assigned this Aug 24, 2022
Copy link
Contributor Author

@sam20908 sam20908 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One comment about the additional complexity to add logging for moving from 'Initial Review' or 'Final Review' column to 'Work in Progress' column.

Copy link
Contributor

@strega-nil-ms strega-nil-ms left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There're some clean ups possible

.github/workflows/move-ready-for-review-prs.yml Outdated Show resolved Hide resolved
.github/workflows/move-ready-for-review-prs.yml Outdated Show resolved Hide resolved
.github/workflows/move-ready-for-review-prs.yml Outdated Show resolved Hide resolved
.github/workflows/move-ready-for-review-prs.yml Outdated Show resolved Hide resolved
Code Reviews automation moved this from Initial Review to Work In Progress Sep 12, 2022
@strega-nil-ms strega-nil-ms moved this from Work In Progress to Final Review in Code Reviews Sep 12, 2022
Copy link
Member

@StephanTLavavej StephanTLavavej left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! I'll validate and push changes, one moment...

.github/workflows/move-ready-for-review-prs.yml Outdated Show resolved Hide resolved
.github/workflows/move-work-in-progress-prs.yml Outdated Show resolved Hide resolved
.github/workflows/move-work-in-progress-prs.yml Outdated Show resolved Hide resolved
.github/workflows/move-work-in-progress-prs.yml Outdated Show resolved Hide resolved
@StephanTLavavej
Copy link
Member

I pushed a conflict-free merge with main, followed by minor typo fixes, semicolons, and adjusting the conditions to be short-circuit friendly, validating that the commenter is the same user as the PR author, and changing the commands to be easier to remember. I was unable to fully validate this in my repo since I don't have a classic project and can't make one anymore, but @CaseyCarter was able to help me validate the same-user check which is the part I was worried about (also this validated the YAML line wrapping I used; > drops newlines in the middle but keeps one at the end).

Note that the if condition is a GitHub expression, so it uses a double equal, not the triple equal that's desirable in JS.

In the future, it may be desirable to fuse these two actions into one YAML file. Also, if we migrate to GitHub's modern projects, this code will need to change (no plans at the moment though).

@StephanTLavavej StephanTLavavej removed their assignment Oct 25, 2022
@StephanTLavavej StephanTLavavej moved this from Final Review to Ready To Merge in Code Reviews Oct 25, 2022
@StephanTLavavej StephanTLavavej self-assigned this Oct 25, 2022
@StephanTLavavej
Copy link
Member

I'm mirroring this to the MSVC-internal repo - please notify me if any further changes are pushed.

@StephanTLavavej StephanTLavavej merged commit c1c21e9 into microsoft:main Oct 26, 2022
Code Reviews automation moved this from Ready To Merge to Done Oct 26, 2022
@StephanTLavavej
Copy link
Member

Thank you for this major workflow improvement - this will be incredibly useful for contributors! 😻 💯 🥇

@sam20908 sam20908 deleted the contributor-project-automation branch February 5, 2023 19:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
infrastructure Related to repository automation
Projects
No open projects
Development

Successfully merging this pull request may close these issues.

GitHub Actions: Can PR authors be given the ability to move cards between Project columns?
4 participants