{"id":13478121,"url":"https://github.com/cncf/gitvote","last_synced_at":"2025-04-05T07:03:16.115Z","repository":{"id":36952960,"uuid":"498298288","full_name":"cncf/gitvote","owner":"cncf","description":"GitVote is a GitHub application that allows holding a vote on issues and pull requests","archived":false,"fork":false,"pushed_at":"2025-03-24T21:14:41.000Z","size":2799,"stargazers_count":121,"open_issues_count":3,"forks_count":15,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-29T06:03:25.416Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://gitvote.dev","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cncf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":"GOVERNANCE.md","roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-31T11:00:51.000Z","updated_at":"2025-03-19T17:10:04.000Z","dependencies_parsed_at":"2023-10-03T11:59:59.031Z","dependency_job_id":"e780534b-e4c8-4a56-adbb-67328f0367f5","html_url":"https://github.com/cncf/gitvote","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cncf%2Fgitvote","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cncf%2Fgitvote/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cncf%2Fgitvote/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cncf%2Fgitvote/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cncf","download_url":"https://codeload.github.com/cncf/gitvote/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247299831,"owners_count":20916190,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T16:01:52.793Z","updated_at":"2025-04-05T07:03:16.096Z","avatar_url":"https://github.com/cncf.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# GitVote\n\n[![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/gitvote)](https://artifacthub.io/packages/helm/gitvote/gitvote)\n\n**GitVote** is a GitHub application that allows holding a vote on *issues* and *pull requests*.\n\n## Usage\n\nThe first step is to install the [GitVote GitHub application](https://github.com/apps/git-vote) in the organization or repositories you'd like. Alternatively, you can deploy your own instance of the GitVote service by using [the Helm chart provided](https://artifacthub.io/packages/helm/gitvote/gitvote) (some organizations may prefer this option for private repositories).\n\nOnce the application has been installed we can proceed with its configuration.\n\n### Configuration\n\nTo create votes, you'll first need to add a [.gitvote.yml](https://github.com/cncf/gitvote/blob/main/docs/config/.gitvote.yml) configuration file. GitVote will look for it in the following locations (in order of precedence):\n\n- At the root of the repository where the vote was created\n- At the root of the `.github` repository, for organization wide configuration\n\n\u003e [!IMPORTANT]\n\u003e Please note that the configuration file is **required** and no commands will be processed if it cannot be found. Once a vote is created, the configuration it will use during its lifetime will be the one present at the vote creation time.\n\nFor more information about the configuration file format please see the [reference documentation](https://github.com/cncf/gitvote/blob/main/docs/config/.gitvote.yml).\n\n### Creating votes\n\nVotes can be created by calling the `/vote` command on an *issue* or *pull request*. This can be done by:\n\n- adding the **/vote** command to the *issue* or *pull request* body at creation time\n- adding a new comment to an existing *issue* or *pull request* with the **/vote** command in it\n\nThe command **must** be on a line by itself. Please note that GitVote only detects commands in issues or pull requests bodies when they are opened, or when comments are created, *not when any of them are edited*.\n\n![create-vote](docs/screenshots/create-vote.png)\n\nAlternatively, if you have setup multiple configuration profiles, you can also start votes using any of them with the command `/vote-PROFILE`.\n\n\u003e [!NOTE]\n\u003e Only repositories collaborators can create votes. For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners.\n\nShortly after the comment with the `/vote` command is posted, the vote will be created and the bot will post a new comment to the corresponding issue or pull request with the vote instructions.\n\n![vote-created](docs/screenshots/vote-created.png)\n\n#### Automation\n\nGitVote allows votes to be created automatically on pull requests when any of the files affected matches certain predefined patterns. For more information about how to set it up, please see the automation section in the [reference documentation](https://github.com/cncf/gitvote/blob/main/docs/config/.gitvote.yml).\n\n### Voting\n\nUsers can cast their votes by reacting to the `git-vote` bot comment where the vote was created (screenshot above).\n\nIt is possible to vote `in favor`, `against` or to `abstain`, and each of these options can be selected with the following reactions:\n\n| In favor | Against | Abstain |\n| :------: | :-----: | :-----: |\n|    👍     |    👎    |    👀    |\n\nOnly votes from users with a binding vote as defined in the configuration file will be counted.\n\n\u003e [!WARNING]\n\u003e Voting multiple options is not allowed and those votes won't be counted.\n\n### Checking votes\n\nIt is possible to check the status of a vote in progress by calling the `/check-vote` command:\n\n![vote-status](docs/screenshots/vote-status.png)\n\n\u003e [!NOTE]\n\u003e This command can only be called once a day per vote (additional calls will be ignored).\n\n### Closing votes\n\nOnce the vote time is up, the vote will be automatically closed and the results will be published in a new comment.\n\n![vote-closed](docs/screenshots/vote-closed.png)\n\n### Cancelling votes\n\nIt is possible to cancel a vote in progress by calling the `/cancel-vote` command:\n\n![vote-cancelled](docs/screenshots/vote-cancelled.png)\n\n### Checks in pull requests\n\nWhen a vote on a pull request is closed, GitVote will add a check to the head commit with its result. If the vote passes, the result of the check will be *success*, whereas if it doesn't pass, it'll be *failure*. When used in combination with `protected branch`, this feature can be used to *require* a vote in favor before a pull request can be merged.\n\n![check-passed](docs/screenshots/check-passed.png)\n\n### Announcements\n\nGitVote is able to post announcements on GitHub discussions. When this feature is enabled, a new discussion will be created with the results of the vote once it is closed.\n\nAnnouncements can be configured per vote profile, by adding the `announcements` configuration section to the `.gitvote.yml` file.\n\n```yaml\nannouncements:\n  discussions:\n    category: announcements  # Category slug (i.e. spaces are replaced by hyphens)\n```\n\n\u003e [!NOTE]\n\u003e This feature requires some extra permissions to be able to read and write discussions in your repositories. If you installed the GitVote GitHub application before this feature was available (June 2024), you should receive an email from GitHub requesting you to approve these new permissions. Please note that announcements won't be created until those permissions are granted.\n\n## Adopters\n\nPlease see [ADOPTERS.md](./ADOPTERS.md) for more details.\n\n## Contributing\n\nPlease see [CONTRIBUTING.md](./CONTRIBUTING.md) for more details.\n\n## Code of Conduct\n\nThis project follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md).\n\n## License\n\nGitVote is an Open Source project licensed under the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcncf%2Fgitvote","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcncf%2Fgitvote","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcncf%2Fgitvote/lists"}