{"id":26256406,"url":"https://github.com/openshift-pipelines/pac-boussole","last_synced_at":"2025-06-22T06:33:51.411Z","repository":{"id":275628287,"uuid":"926669221","full_name":"openshift-pipelines/pac-boussole","owner":"openshift-pipelines","description":"The PAC Boussole - Control Pull Requests via Gitops commands","archived":false,"fork":false,"pushed_at":"2025-03-03T16:52:08.000Z","size":175,"stargazers_count":2,"open_issues_count":4,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-28T14:52:29.705Z","etag":null,"topics":["github","pipelines-as-code","tekton","tekton-pipelines"],"latest_commit_sha":null,"homepage":"","language":"Python","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/openshift-pipelines.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-03T16:59:13.000Z","updated_at":"2025-04-07T09:19:12.000Z","dependencies_parsed_at":"2025-02-03T18:38:33.659Z","dependency_job_id":"17de20c6-26c7-4748-a787-ab513e036fdc","html_url":"https://github.com/openshift-pipelines/pac-boussole","commit_stats":null,"previous_names":["openshift-pipelines/pipelines-as-code-prow","openshift-pipelines/pac-boussole"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/openshift-pipelines/pac-boussole","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-pipelines%2Fpac-boussole","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-pipelines%2Fpac-boussole/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-pipelines%2Fpac-boussole/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-pipelines%2Fpac-boussole/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openshift-pipelines","download_url":"https://codeload.github.com/openshift-pipelines/pac-boussole/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift-pipelines%2Fpac-boussole/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261248725,"owners_count":23130453,"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":["github","pipelines-as-code","tekton","tekton-pipelines"],"created_at":"2025-03-13T20:17:56.252Z","updated_at":"2025-06-22T06:33:46.394Z","avatar_url":"https://github.com/openshift-pipelines.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PAC Boussole - A GitOps Command Tool for GitHub PRs\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Boussole logo\" src=\"https://github.com/user-attachments/assets/1fef492b-3b40-4ef8-a934-b9a76517973e\" width=\"25%\" height=\"25%\"\u003e\n\u003c/p\u003e\n\n\u003e [!CAUTION]\n\u003e This product is not supported by OpenShift Pipelines and is provided on an \"as-is\" basis, without any official support or guarantees.\n\n## Overview\n\n**PAC Boussole** extends GitHub Pull Requests with command-based automation\npowered by [Tekton Pipelines](https://tekton.dev/). Inspired by\n[Prow](https://github.com/kubernetes/test-infra/tree/master/prow), Boussole\nlets you interact with PRs using predefined GitHub comments to trigger\nautomated actions.\n\n### Key Features\n\n- Automate PR actions such as merging, assigning reviewers, labeling, and more.\n- Works seamlessly with Pipelines-as-Code and Tekton.\n- Uses GitHub comments to trigger actions, reducing manual intervention.\n- Designed for teams leveraging GitOps workflows.\n\n## Supported Commands\n\n| Command                      | Description                                                      |\n|------------------------------|------------------------------------------------------------------|\n| `/assign user1 user2`        | Assigns users for review to the PR                              |\n| `/unassign user1 user2`      | Removes assigned users                                          |\n| `/label bug feature`         | Adds labels to the PR                                           |\n| `/unlabel bug feature`       | Removes labels from the PR                                      |\n| `/cherry-pick target-branch` | Cherry-picks the PR changes to the target branch on merge      |\n| `/lgtm`                      | Approves the PR if at least one org member has commented `/lgtm` |\n| `/merge [method]`            | Merges the PR if it has enough `/lgtm` approvals. Optional method: `merge`, `squash`, or `rebase` |\n| `/rebase`                    | Rebases the PR branch on the base branch                        |\n| `/help`                      | Displays available commands                                     |\n\n\u003e **Note:**\n\u003e\n\u003e - Each command must be issued as a separate comment (no multiple commands per\n\u003e   comment yet).\n\u003e - The command must be at the start of the comment; any preceding text will be\n\u003e   ignored.\n\n## Usage\n\nTo enable Boussole, add the following `PipelineRun` configuration to your `.tekton` directory:\n\n```yaml\napiVersion: tekton.dev/v1\nkind: PipelineRun\nmetadata:\n  name: boussole\n  annotations:\n    pipelinesascode.tekton.dev/pipeline: \"https://raw.githubusercontent.com/openshift-pipelines/pac-boussole/main/pipeline-boussole.yaml\"\n    pipelinesascode.tekton.dev/on-comment: \"^/(help|rebase|lgtm|cherry-pick|assign|merge|unassign|label|unlabel)\"\n    pipelinesascode.tekton.dev/max-keep-runs: \"2\"\nspec:\n  params:\n    - name: trigger_comment\n      value: |\n        {{ trigger_comment }}\n    - name: repo_owner\n      value: \"{{ repo_owner }}\"\n    - name: repo_name\n      value: \"{{ repo_name }}\"\n    - name: pull_request_number\n      value: \"{{ pull_request_number }}\"\n    - name: pull_request_sender\n      value: \"{{ body.issue.user.login }}\"\n    - name: git_auth_secret\n      value: \"{{ git_auth_secret }}\"\n    - name: comment_sender\n      value: \"{{ sender }}\"\n    #\n    # Optional parameters (value is the default):\n    #\n    # The key in git_auth_secret that contains the token (default: git-provider-token)\n    # - name: git_auth_secret_key\n    #   value: git-provider-token\n    #\n    # The /lgtm threshold needed of approvers for a PR to be approved (default: 1)\n    # - name: lgtm_threshold\n    #   value: \"1\"\n    #\n    # The permissionms the user need to trigger a lgtm\n    # - name: lgtm_permissions\n    #   value: \"admin,write\"\n    #\n    # The review event  when lgtm is triggered, can be APPROVE,\n    # REQUEST_CHANGES, or COMMENT if setting to empty string it will be set as\n    # PENDING\n    # - name: lgtm_review_event\n    #   value: \"APPROVE\"\n    #\n    # The merge method to use. Can be one of: merge, squash, rebase\n    # - name: merge_method\n    #   value: \"rebase\"\n  pipelineRef:\n    name: boussole\n```\n\n### Without Pipelines-as-Code\n\nYou can also use this pipeline independently via Tekton Triggers. Simply\nconfigure a `TriggerTemplate` with the required parameters.\n\n(Contributions welcome! Feel free to add examples for alternative usage.)\n\n## Contributing\n\nWe welcome contributions! Feel free to open issues or submit pull requests.\n\n### Development Setup\n\n1. Install [uv](https://github.com/astral-sh/uv).\n2. Use the provided Makefile targets for common tasks.\n3. Set up pre-commit hooks:\n\n   ```sh\n   pre-commit install\n   ```\n\n   This ensures your commits adhere to project guidelines.\n\n## FAQ\n\n### Why the name \"Boussole\"?\n\n**Boussole** is French for *\"compass,\"* reflecting its role in guiding PR workflows. The name also pays homage to [La\nBoussole](\u003chttps://en.wikipedia.org/wiki/French_ship_Boussole_(1782)\u003e, a ship from the ill-fated La Pérouse expedition that disappeared\nin the Pacific—an analogy that may feel more or less fitting, depending on your experience with this project. 😉  \n\n**Pronunciation:** *Boussole* is pronounced **\"boo-SOHL\"** (/buˈsɔl/).  \n\n- Sounds like **\"boo-soul\"** in English.  \n- The **\"bou\"** rhymes with *boo* (as in *boost* or *book*).  \n- The **\"ssole\"** sounds like *soul*, but with a softer \"L\" at the end.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Boussole logo\" src=\"https://github.com/user-attachments/assets/2224611a-6bb9-4c5c-9426-77efc996b6ca\" width=\"25%\" height=\"25%\"\u003e\n\u003c/p\u003e\n\n## License\n\nPAC Boussole is licensed under [Apache-2.0](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenshift-pipelines%2Fpac-boussole","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenshift-pipelines%2Fpac-boussole","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenshift-pipelines%2Fpac-boussole/lists"}