Skip to content

Skip commit and push when no replacement happens in EventWatcher #5310

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

Merged
merged 3 commits into from
Nov 6, 2024

Conversation

t-kikuc
Copy link
Member

@t-kikuc t-kikuc commented Nov 5, 2024

What this PR does:

  • Fix the following bug in EventWatcher by handling no-diff.

Why we need it:

  • Without this PR, when no diff occurs by an event, the event will fail.

Before fix: Failed to push changed files: err: exit status 128, out: fatal: invalid refspec ''
image

After fix: Nothing to commit
image

  • The cause is that when no diff occurs, branchName will be nil as below.

if len(changes) == 0 {
return "", nil
}

Which issue(s) this PR fixes:

Does this PR introduce a user-facing change?:

  • How are users affected by this change:
  • Is this breaking change:
  • How to migrate (if breaking change):

Copy link

codecov bot commented Nov 5, 2024

Codecov Report

Attention: Patch coverage is 0% with 18 lines in your changes missing coverage. Please review.

Project coverage is 25.26%. Comparing base (d7f4369) to head (7b155e6).
Report is 468 commits behind head on master.

Files with missing lines Patch % Lines
pkg/app/piped/eventwatcher/eventwatcher.go 0.00% 18 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #5310      +/-   ##
==========================================
+ Coverage   25.23%   25.26%   +0.03%     
==========================================
  Files         444      444              
  Lines       47480    47528      +48     
==========================================
+ Hits        11982    12010      +28     
- Misses      34556    34575      +19     
- Partials      942      943       +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@t-kikuc t-kikuc added the kind/bug Something isn't working as expected label Nov 6, 2024
khanhtc1202
khanhtc1202 previously approved these changes Nov 6, 2024
Copy link
Member

@khanhtc1202 khanhtc1202 left a comment

Choose a reason for hiding this comment

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

Got your point, thanks 👍

Copy link
Member

@ffjlabo ffjlabo left a comment

Choose a reason for hiding this comment

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

Thank you for the imporvement! I left an imo comment

@@ -388,7 +391,7 @@ func (w *watcher) execute(ctx context.Context, repo git.Repo, repoID string, eve
switch handler.Type {
case config.EventWatcherHandlerTypeGitUpdate:
branchName, err := w.commitFiles(ctx, latestEvent, matcher.Name, handler.Config.CommitMessage, e.GitPath, handler.Config.Replacements, tmpRepo, handler.Config.MakePullRequest)
if err != nil {
if err != nil && !errors.Is(err, errNoChanges) {
Copy link
Member

Choose a reason for hiding this comment

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

[IMO] How about using the bool variable like change to minimize the scope of the error variable and also for the readability?

Suggested change
if err != nil && !errors.Is(err, errNoChanges) {
noChange := false
if err != nil {
//
if errors.Is(err, errNoChanges) {
noChange = true
} else {
...
continue
}
}
if noChange {
handledEvent.StatusDescription = "Nothing to commit"
gitNoChangeEvents = append(gitNoChangeEvents, handledEvent)
} else {

Copy link
Member Author

Choose a reason for hiding this comment

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

thank you , got it, i fixed in 7b155e6

Copy link
Member

@ffjlabo ffjlabo left a comment

Choose a reason for hiding this comment

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

LGTM

Copy link
Member

@khanhtc1202 khanhtc1202 left a comment

Choose a reason for hiding this comment

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

LGTM

@t-kikuc t-kikuc merged commit 5898f42 into master Nov 6, 2024
17 of 18 checks passed
@t-kikuc t-kikuc deleted the fix-eventwatcher-nochange branch November 6, 2024 11:48
github-actions bot pushed a commit that referenced this pull request Nov 7, 2024
* fix: skip push if no diff exist

Signed-off-by: t-kikuc <[email protected]>

* modify message

Signed-off-by: t-kikuc <[email protected]>

* refactor: use noChange variable

Signed-off-by: t-kikuc <[email protected]>

---------

Signed-off-by: t-kikuc <[email protected]>
Signed-off-by: pipecd-bot <[email protected]>
ffjlabo added a commit that referenced this pull request Nov 7, 2024
* Add event context (#5295)

* Add contexts to the RegisterEventRequest

Signed-off-by: Yoshiki Fujikane <[email protected]>

* Add contexts to model.Event

Signed-off-by: Yoshiki Fujikane <[email protected]>

* Store event context in Control Plane

Signed-off-by: Yoshiki Fujikane <[email protected]>

* Add trailers when commiting on event watcher

Signed-off-by: Yoshiki Fujikane <[email protected]>

* Fix for failed build

Signed-off-by: Yoshiki Fujikane <[email protected]>

---------

Signed-off-by: Yoshiki Fujikane <[email protected]>
Signed-off-by: pipecd-bot <[email protected]>

* Add docs for pipectl event register --contexts on the event watcher usage page (#5299)

* Add docs for pipectl event register --contexts on the event watcher usage page

Signed-off-by: Yoshiki Fujikane <[email protected]>

* Fix docs

Signed-off-by: Yoshiki Fujikane <[email protected]>

* Fix command

Signed-off-by: Yoshiki Fujikane <[email protected]>

---------

Signed-off-by: Yoshiki Fujikane <[email protected]>
Signed-off-by: pipecd-bot <[email protected]>

* Clone manifests not to modify original manifests (#5306)

Signed-off-by: t-kikuc <[email protected]>
Signed-off-by: pipecd-bot <[email protected]>

* Lambda: clone manifests not to modify original manifests (#5308)

Signed-off-by: t-kikuc <[email protected]>
Signed-off-by: pipecd-bot <[email protected]>

* Skip commit and push when no replacement happens in EventWatcher (#5310)

* fix: skip push if no diff exist

Signed-off-by: t-kikuc <[email protected]>

* modify message

Signed-off-by: t-kikuc <[email protected]>

* refactor: use noChange variable

Signed-off-by: t-kikuc <[email protected]>

---------

Signed-off-by: t-kikuc <[email protected]>
Signed-off-by: pipecd-bot <[email protected]>

* Execute git clean partially when drift detection for every app is done (#5312)

* Execute git clean partially when drift detection for every app is done

Signed-off-by: Yoshiki Fujikane <[email protected]>

* Rename to CleanPath

Signed-off-by: Yoshiki Fujikane <[email protected]>

* Add test for the outside dir pattern

Signed-off-by: Yoshiki Fujikane <[email protected]>

---------

Signed-off-by: Yoshiki Fujikane <[email protected]>
Signed-off-by: pipecd-bot <[email protected]>

* Update RELEASE and docs to v0.49.3 (#5315)

Signed-off-by: Yoshiki Fujikane <[email protected]>
Signed-off-by: pipecd-bot <[email protected]>

---------

Signed-off-by: Yoshiki Fujikane <[email protected]>
Signed-off-by: pipecd-bot <[email protected]>
Signed-off-by: t-kikuc <[email protected]>
Co-authored-by: Yoshiki Fujikane <[email protected]>
Co-authored-by: Tetsuya Kikuchi <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/go cherry-pick kind/bug Something isn't working as expected v0.49.3
Projects
No open projects
Status: Done
Development

Successfully merging this pull request may close these issues.

3 participants