Open mowies opened 10 months ago
An option would be to take kubernetes prow and somehow put it into a composite github action https://github.com/kubernetes/test-infra/tree/master/prow There's also such a project out there already: https://github.com/jpmcb/prow-github-actions/tree/main
@mowies can I try setting up the action
this ticket is still work-in-progress and not ready for development yet
Hey @mowies I'm interested in this project for Google Summer of Code. At the moment, I'm researching and thinking about ideas, and I'm also writing a proposal. I believe this bot could be very useful for Keptn, making it easier for new people to join in and also helping to keep track of issues.
Let me know if you have any thoughts! I'm eager to hear your thoughts and suggestions on how we can move forward with this
Awesome that you want to apply! We're open for anybody to apply but keep in mind that you will not be the only one ;)
Hey, @mowies, I'm interested in applying for this project for the summer of code term. I would love to work on this project and be mentored by you. I will draft the proposal and send it to you for review in the forthcoming weeks. Thank you :)
Hey! I am interested in working on this issue and I've already started diving into the details and researching the approach to implement the self-service issue assignment bot for GitHub contributors. Moreover, I'm really interested in applying for this project for the summer of code term. I believe it's a fantastic opportunity to contribute meaningfully to the community. Thank you!
cc: @mowies @odubajDT @bacherfl
Hello @mowies ,
I'm super interested in contributing to this project idea during GSoC'24. With a decent background in utilizing the GitHub API, I believe my experience equips me well to build this bot under your guidance.
Thank you!
Hi @mowies I have a few questions regarding the bot
Configuration: Should the bot store the configuration inside workflow.yaml or something else?
We can pass the configs like max_issue_per_contributor
and max_pr_per_contributor
inside the workflow to interactively change the configuration.
Command Structure: Are we looking at predefined commands such as /lgtm
and /assign
or should they be set in workflow.yaml (as done in prow)
Future Scope: Is this project designed specifically for Keptn organisation, or are we keeping in mind adaptability for open source community with similar needs as well?
About Language preference: Although the exact data needs intensive benchmarking between TypeScript and Golang, I think Golang would be an ideal choice for this purpose because Golang is generally believed to be faster than TS and in this case where a workflow is triggered every comment, every ms of CPU usage matters
- Configuration: Should the bot store the configuration inside workflow.yaml or something else? We can pass the configs like
max_issue_per_contributor
andmax_pr_per_contributor
inside the workflow to interactively change the configuration.
For the MVP I would go for configuration directly in the workflow.yml file, if there's more time, I would add something like a yml file in the root of the repo as an option for users.
- Command Structure: Are we looking at predefined commands such as
/lgtm
and/assign
or should they be set in workflow.yaml (as done in prow)
I think predefined commands are good enough, no need for extra configuration options here.
- Future Scope: Is this project designed specifically for Keptn organisation, or are we keeping in mind adaptability for open source community with similar needs as well?
It will be designed for Keptn but the problem that it solves is a more general one, so other projects can definitely also use it and contribute to it.
About Language preference: Although the exact data needs intensive benchmarking between TypeScript and Golang, I think Golang would be an ideal choice for this purpose because Golang is generally believed to be faster than TS and in this case where a workflow is triggered every comment, every ms of CPU usage matters
I really don't think that speed it very important. Also, there's no official API library for Go. I would go with one of the supported languages.
I really don't think that speed it very important. Also, there's no official API library for Go. I would go with one of the supported languages.
about the official API library , google seems to have a very popular library called go-github , for writing github bots in go, seems pretty reliable to me. Although it still requires a third party sdk for github actions.
@mowies Actually I want to ask on what basis we will be deciding the issue is a draft
and what will be the basis for issue to be labelled as ready-for-refinement
?
draft
is put on an issue manually when it's not ready for any other pairs of eyes yet.
When an issue is done being described, the ready-for-refinement
label is put on manually to pick it up in one of the following community meetings and refine and estimate it.
So the bot should be able to add/delete these issues automatically or these will be added/removed manually only and the bot should just track if the issue is draft or read-for-refinement?
We will refine the issue definition further and then get back to you with some more and better answers, hope that's ok :)
Yes that's not an issue.
We refined the description of the issue again, please check if it makes sense. I hope that this will clear up some things.
Thanks for the update. It helps a lot and makes the issue easier to understand.
Hello @mowies
I hope this message finds you well. My name is Rakesh Valasala, and I am writing to express my keen interest in contributing to the development of the Self-Service Issue Assignment Bot project.
Having recently discovered your project on GitHub, I found the goals and challenges outlined to be remarkably aligned with my experience and ongoing work. Currently, I am deeply involved in the development of COMMSPACE, a project that shares similar objectives in terms of GitHub API integration and workflow automation.
Relevant Experience:
GitHub API Integration: My hands-on experience in working with GitHub APIs and webhooks has been honed through the ongoing development of COMMSPACE. This proficiency positions me well for contributing to the self-service issue assignment bot. Configuration Management: As part of the COMMSPACE project, I actively engage in configuring and managing applications using YAML files. This experience directly translates into my ability to handle the configuration needs outlined in your project. Workflow Automation: Our ongoing efforts with COMMSPACE involve setting up workflows and actions, giving me a strong understanding of GitHub Action workflows and their seamless integration with continuous integration (CI) processes. Language Proficiency: I am proficient with TypeScript, providing flexibility in language choice for implementing the bot. This proficiency has been pivotal in the development of COMMSPACE, contributing to the success of the project.
COMMSCAPE Overview: COMMSCAPE is a dynamic collaboration platform that seamlessly integrates Discord's communication features with robust GitHub repository management. This project harnesses the power of Discord's familiar environment, providing chat, voice channels, and more, alongside advanced GitHub integration features. Users can effortlessly manage GitHub repositories, track issues, and collaborate seamlessly within a unified space. The project is currently in the development stage, with a focus on refining the user experience, enhancing collaboration, and ensuring robust GitHub integration.
In the coming weeks, I plan to share the final work of the COMMSCAPE project, providing insights into the unique features and advancements achieved during its development.
I am excited about the prospect of contributing to your project and sharing insights gained from the ongoing development of COMMSPACE. Please let me know if there are any specific next steps or tasks to get involved in the Self-Service Issue Assignment Bot project.
Thank you for considering my interest, and I am eager to contribute to the success of the Self-Service Issue Assignment Bot.
Best regards, Rakesh Valasala valasalarakesh1254@gmail.com
As a result of the New Contributor Meeting on March 11th, I added some more information that was asked there. Specifically, information about the GitHub token needed for authorization and a default configuration for external users who don't have a role assigned.
@mowies Right , I think I forgot to put an alert for yesterday's meeting , do you by chance record these? Thanks.
Yes, there's a recording. You can expect it to be uploaded to our youtube channel in the coming days
Hey @mowies I am interested in contributing to the issue and work with the cncf organization to develop innovative cloud native tools in the open-source. I am participate in GSoC 2024. I have given a my past work in the above message.
Great that you're interested! You will need to submit your application directly with GSoC when the time comes. Application period will start March 18th (source).
Hi @mowies I am interested in contributing and being mentored. Please, how do i go about this
Hi @timilehin2000, we are very happy to hear that! You should be able to submit a contributor proposal to the GSoC 2024. The deadline is April 2nd. For more information about the neccessary steps please go to the official GSoC page https://summerofcode.withgoogle.com/
Hi @mowies
Apologies for commenting on this late! I was working on this project proposal behind the scenes and would like to get mentored in GSoC 2024. I will submit the proposal before the mentioned deadline :)
Goal
The goal is to create a self-service issue assignment bot for GitHub contributors who would like to work on issues. The bot should be able to check if the user is part of the organization, examine if the pre-conditions for self-assignment are met (configurable labels or rules about number of issues already assigned/PRs opened), and assign the issue. Additionally, the bot should be able to track the state of the issue by adding/removing specific labels. The bot should be part of the CI and executed as an action on an issue change.
Details
Set up a GitHub action workflow that acts upon an issue comment containing
/assign
or/assign <some-gh-user>
. The action should support multiple roles, which are configurable, including a default role as a fallback. Additionally, there should be a possibility to define a set of rules to each role via configuration file. The configuration file allows the admin to define status labels for the supported states to track the status of the issue. Additionally, a GitHub token will be supplied as an input secret for the action so that it is authorised to access the needed GitHub APIs.The states should be:
The bot should accept a
maintainers.yaml
file with a list of users and their roles.An example of configuration yaml file defining the set of rules for a role:
An example of a
maintainers.yaml
file with a list of users and their roles. Any user that's not in one of the roles will get the fallback configuration applied.The possible configurable rules for each role for the bot should be:
According to the configuration file, the action should be also able to track the state of the issue just by adding/removing labels. The action should support at least the following states:
The bot should be able to unassign the issue by
/unassign
ofunassign <name>
.The bot can be implemented by using Golang or TypeScript.
DoD
Useful links