From f2db9f782c0b23d1351212e5fca0cb4495aa5651 Mon Sep 17 00:00:00 2001 From: savitaashture Date: Mon, 18 Sep 2023 13:24:39 +0530 Subject: [PATCH] Add GitOps comments functionality to push request This commit enables PAC users to include GitOps comments for push request. Supported GitOps comments are - /test - /retest - /cancel - /test prname - /retest prname - /cancel prname Signed-off-by: Savita Ashture --- docs/content/docs/guide/running.md | 98 ++++++++- docs/content/docs/install/github_apps.md | 1 + .../gitops-comments-on-commit-cancel.png | Bin 0 -> 102822 bytes .../images/gitops-comments-on-commit.png | Bin 0 -> 102138 bytes pkg/cmd/tknpac/bootstrap/github.go | 1 + pkg/pipelineascode/cancel_pipelinerun_test.go | 80 ++++++- pkg/pipelineascode/cancel_pipelineruns.go | 19 +- pkg/provider/github/detect.go | 13 ++ pkg/provider/github/detect_test.go | 52 ++++- pkg/provider/github/github.go | 17 ++ pkg/provider/github/github_test.go | 44 ++++ pkg/provider/github/parse_payload.go | 64 ++++++ pkg/provider/github/parse_payload_test.go | 206 +++++++++++++++++- pkg/provider/provider.go | 46 ++++ pkg/provider/provider_test.go | 176 +++++++++++++++ test/github_push_retest_test.go | 96 ++++++++ test/github_push_test.go | 65 +----- test/pkg/github/pr.go | 48 ++++ test/testdata/pipelinerun-on-push.yaml | 2 +- 19 files changed, 934 insertions(+), 94 deletions(-) create mode 100644 docs/static/images/gitops-comments-on-commit-cancel.png create mode 100644 docs/static/images/gitops-comments-on-commit.png create mode 100644 test/github_push_retest_test.go diff --git a/docs/content/docs/guide/running.md b/docs/content/docs/guide/running.md index 185a5bb8c..1499b5ce0 100644 --- a/docs/content/docs/guide/running.md +++ b/docs/content/docs/guide/running.md @@ -114,12 +114,12 @@ entire suite of checks once again. ![github apps rerun check](/images/github-apps-rerun-checks.png) -### Gitops command on pull or merge request +### GitOps command on pull or merge request -If you are targeting a pull or merge request you can use `GitOps` comment +If you are targeting a push, pull or merge request you can use `GitOps` comment inside your pull request, to restart all or specific Pipelines. -For example you want to restart all your pipeline you can add a comment starting +For example, you want to restart all your pipeline you can add a comment starting with `/retest` and all PipelineRun attached to that pull or merge request will be restarted : @@ -141,6 +141,58 @@ roses are red, violets are blue. pipeline are bound to flake by design. /test ``` +### GitOps command on push request + +To trigger GitOps commands in response to a push request, you can include `GitOps` +comments within your commit messages. These comments can be used to restart +either all pipelines or specific ones. Here's how it works: + +For restarting all pipeline runs: + +1. Use `/retest` or `/test` within your commit message. + +For restarting a specific pipeline run: +2. Use `/retest ` or `/test ` within your +commit message. Replace `` with the specific name of the +pipeline run you want to restart. + +**Note:** + +When executing `GitOps` commands on a commit that exists in multiple branches +within a push request, the branch with the latest commit will be used. + +This means: + +1. If a user specifies commands like `/retest` or `/test` without any argument +in a comment on a branch, the test will automatically be performed on the **main** branch. + + Examples : + 1. `/retest` + 2. `/test` + 3. `/retest ` + 4. `/test ` + +2. If the user includes a branch specification such as `/retest branch:test` or +`/test branch:test`, the test will be executed on the commit where the comment is +located, with the context of the **test** branch. + + Examples : + 1. `/retest branch:test` + 2. `/test branch:test` + 3. `/retest branch:test` + 4. `/test branch:test` + +To add `GitOps` comments to a push request, follow these steps: + +1. Go to your repository. +2. Click on the **Commits** section. +3. Choose one of the individual **Commit**. +4. Click on the line number where you want to add a `GitOps` comment, as shown in the image below: + +![GitOps Commits For Comments](/images/gitops-comments-on-commit.png) + +Please note that this feature is supported for the GitHub provider only. + ## Cancelling the PipelineRun You can cancel a running PipelineRun by commenting on the PullRequest. @@ -159,7 +211,7 @@ It seems the infra is down, so cancelling the pipelineruns. If you have multiple `PipelineRun` and you want to target a specific `PipelineRun` you can use the `/cancel` comment with the PipelineRun name -Example: +Example : ```text roses are red, violets are blue. why to run the pipeline when the infra is down. @@ -170,3 +222,41 @@ roses are red, violets are blue. why to run the pipeline when the infra is down. On GitHub App the status of the Pipeline will be set to `cancelled`. ![pipelinerun canceled](/images/pr-cancel.png) + +### Cancelling the PipelineRun on push request + +You can cancel a running PipelineRun by commenting on the commit. +Here's how you can do it. + +Example : + +1. Use `/cancel` to cancel all PipeineRuns. +2. Use `/cancel ` to cancel a specific PipeineRun + +**Note:** + +When executing `GitOps` comments on a commit that exists in multiple branches +within a push request, the branch with the latest commit will be used. + +This means: + +1. If a user specifies commands like `/cancel` +without any argument in a comment on a branch, +it will automatically target the **main** branch. + + Examples : + 1. `/cancel` + 2. `/cancel ` + +2. If the user issues a command like `/cancel branch:test`, +it will target the commit where the comment was made but use the **test** branch. + + Examples : + 1. `/cancel branch:test` + 2. `/cancel branch:test` + +In the GitHub App, the status of the Pipeline will be set to `cancelled`. + +![GitOps Commits For Comments For PipelineRun Canceled](/images/gitops-comments-on-commit-cancel.png) + +Please note that this feature is supported for the GitHub provider only. diff --git a/docs/content/docs/install/github_apps.md b/docs/content/docs/install/github_apps.md index 39462a746..3a852736f 100644 --- a/docs/content/docs/install/github_apps.md +++ b/docs/content/docs/install/github_apps.md @@ -48,6 +48,7 @@ Alternatively, you could set up manually by following the steps [here](#setup-ma * Check run * Check suite * Issue comment + * Commit comment * Pull request * Push diff --git a/docs/static/images/gitops-comments-on-commit-cancel.png b/docs/static/images/gitops-comments-on-commit-cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..9325696efb4919896a00a89b255050a774a0048b GIT binary patch literal 102822 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