From 2d7e23e98c9aa6d13db96fda88da303a0d2fbb4f Mon Sep 17 00:00:00 2001 From: haya14busa Date: Sun, 29 Sep 2019 13:39:32 +0000 Subject: [PATCH 1/9] Implement new reporter: github-check Fix #332 --- cmd/reviewdog/doghouse.go | 4 +- cmd/reviewdog/main.go | 17 ++++-- doghouse/server/doghouse.go | 27 +++++---- doghouse/server/doghouse_test.go | 97 ++++++++++++++++++++++++++++++-- doghouse/service.go | 2 +- 5 files changed, 126 insertions(+), 21 deletions(-) diff --git a/cmd/reviewdog/doghouse.go b/cmd/reviewdog/doghouse.go index 0128b4fba6..f712b51a56 100644 --- a/cmd/reviewdog/doghouse.go +++ b/cmd/reviewdog/doghouse.go @@ -20,12 +20,12 @@ import ( "golang.org/x/sync/errgroup" ) -func runDoghouse(ctx context.Context, r io.Reader, w io.Writer, opt *option, isProject bool) error { +func runDoghouse(ctx context.Context, r io.Reader, w io.Writer, opt *option, isProject bool, allowNonPR bool) error { ghInfo, isPr, err := cienv.GetBuildInfo() if err != nil { return err } - if !isPr { + if !isPr && !allowNonPR { fmt.Fprintln(os.Stderr, "reviewdog: this is not PullRequest build.") return nil } diff --git a/cmd/reviewdog/main.go b/cmd/reviewdog/main.go index 0a678e040b..806cf74be4 100644 --- a/cmd/reviewdog/main.go +++ b/cmd/reviewdog/main.go @@ -67,12 +67,15 @@ const ( runnersDoc = `comma separated runners name to run in config file. default: run all runners` levelDoc = `report level currently used for github-pr-check reporter ("info","warning","error").` guessPullRequestDoc = `guess Pull Request ID by branch name and commit SHA` - reporterDoc = `reporter of reviewdog results. (local, github-pr-check, github-pr-review, gitlab-mr-discussion, gitlab-mr-commit) + reporterDoc = `reporter of reviewdog results. (local, github-check, github-pr-check, github-pr-review, gitlab-mr-discussion, gitlab-mr-commit) "local" (default) Report results to stdout. - "github-pr-check" (experimental) - Report results to GitHub PullRequest Check tab. + "github-check" (experimental) + Report results to GitHub Check. It works both for Pull Requests and commits + and this reporter reports all results regardless of it's new result or not. + You can see report results in GitHub PullRequest Check tab for Pull Request. + There are two options to use this reporter. Option 1) Run reviewdog from GitHub Actions w/ secrets.GITHUB_TOKEN @@ -91,6 +94,10 @@ const ( Note: Token is not required if you run reviewdog in Travis CI. + "github-pr-check" (experimental) + Same as github-check reporter but it only supports Pull Requests and + reports only new results which is in diff. + "github-pr-review" Report results to GitHub review comments. @@ -198,8 +205,10 @@ See -reporter flag for migration and set -reporter="github-pr-review" or -report switch opt.reporter { default: return fmt.Errorf("unknown -reporter: %s", opt.reporter) + case "github-check": + return runDoghouse(ctx, r, w, opt, isProject, true) case "github-pr-check": - return runDoghouse(ctx, r, w, opt, isProject) + return runDoghouse(ctx, r, w, opt, isProject, false) case "github-pr-review": if os.Getenv("REVIEWDOG_GITHUB_API_TOKEN") == "" { fmt.Fprintln(os.Stderr, "REVIEWDOG_GITHUB_API_TOKEN is not set") diff --git a/doghouse/server/doghouse.go b/doghouse/server/doghouse.go index 4986f020c8..154c3a3565 100644 --- a/doghouse/server/doghouse.go +++ b/doghouse/server/doghouse.go @@ -38,9 +38,16 @@ func NewChecker(req *doghouse.CheckRequest, gh *github.Client) *Checker { } func (ch *Checker) Check(ctx context.Context) (*doghouse.CheckResponse, error) { - filediffs, err := ch.diff(ctx) - if err != nil { - return nil, fmt.Errorf("fail to parse diff: %v", err) + + filterByDiff := ch.req.PullRequest != 0 + + var filediffs []*diff.FileDiff + if ch.req.PullRequest != 0 { + var err error + filediffs, err = ch.pullRequestDiff(ctx, ch.req.PullRequest) + if err != nil { + return nil, fmt.Errorf("fail to parse diff: %v", err) + } } results := annotationsToCheckResults(ch.req.Annotations) @@ -60,7 +67,7 @@ func (ch *Checker) Check(ctx context.Context) (*doghouse.CheckResponse, error) { return nil, fmt.Errorf("failed to create check: %v", err) } - checkRun, err := ch.postCheck(ctx, check.GetID(), filtered) + checkRun, err := ch.postCheck(ctx, check.GetID(), filtered, filterByDiff) if err != nil { return nil, fmt.Errorf("failed to post result: %v", err) } @@ -70,10 +77,10 @@ func (ch *Checker) Check(ctx context.Context) (*doghouse.CheckResponse, error) { return res, nil } -func (ch *Checker) postCheck(ctx context.Context, checkID int64, checks []*reviewdog.FilteredCheck) (*github.CheckRun, error) { +func (ch *Checker) postCheck(ctx context.Context, checkID int64, checks []*reviewdog.FilteredCheck, filterByDiff bool) (*github.CheckRun, error) { var annotations []*github.CheckRunAnnotation for _, c := range checks { - if !c.InDiff { + if !c.InDiff && filterByDiff { continue } annotations = append(annotations, ch.toCheckRunAnnotation(c)) @@ -215,8 +222,8 @@ func (ch *Checker) toCheckRunAnnotation(c *reviewdog.FilteredCheck) *github.Chec return a } -func (ch *Checker) diff(ctx context.Context) ([]*diff.FileDiff, error) { - d, err := ch.rawDiff(ctx) +func (ch *Checker) pullRequestDiff(ctx context.Context, pr int) ([]*diff.FileDiff, error) { + d, err := ch.rawPullRequestDiff(ctx, pr) if err != nil { return nil, err } @@ -227,8 +234,8 @@ func (ch *Checker) diff(ctx context.Context) ([]*diff.FileDiff, error) { return filediffs, nil } -func (ch *Checker) rawDiff(ctx context.Context) ([]byte, error) { - d, err := ch.gh.GetPullRequestDiff(ctx, ch.req.Owner, ch.req.Repo, ch.req.PullRequest) +func (ch *Checker) rawPullRequestDiff(ctx context.Context, pr int) ([]byte, error) { + d, err := ch.gh.GetPullRequestDiff(ctx, ch.req.Owner, ch.req.Repo, pr) if err != nil { return nil, err } diff --git a/doghouse/server/doghouse_test.go b/doghouse/server/doghouse_test.go index 3fa7a3fb43..a978485a70 100644 --- a/doghouse/server/doghouse_test.go +++ b/doghouse/server/doghouse_test.go @@ -204,8 +204,97 @@ func TestCheck_OK_multiple_update_runs(t *testing.T) { } } +func TestCheck_OK_nonPullRequests(t *testing.T) { + const ( + name = "haya14busa-linter" + owner = "haya14busa" + repo = "reviewdog" + sha = "1414" + reportURL = "http://example.com/report_url" + conclusion = "neutral" + wantCheckID = 1414 + ) + + req := &doghouse.CheckRequest{ + // Do not set PullRequest + Name: name, + Owner: owner, + Repo: repo, + SHA: sha, + Annotations: []*doghouse.Annotation{ + { + Path: "sample.new.txt", + Line: 2, + Message: "test message", + RawMessage: "raw test message", + }, + { + Path: "sample.new.txt", + Line: 14, + Message: "test message2", + RawMessage: "raw test message2", + }, + }, + Level: "warning", + } + + cli := &fakeCheckerGitHubCli{} + cli.FakeGetPullRequestDiff = func(ctx context.Context, owner, repo string, number int) ([]byte, error) { + t.Errorf("GetPullRequestDiff should not be called") + return nil, nil + } + cli.FakeCreateCheckRun = func(ctx context.Context, owner, repo string, opt github.CreateCheckRunOptions) (*github.CheckRun, error) { + return &github.CheckRun{ID: github.Int64(wantCheckID)}, nil + } + cli.FakeUpdateCheckRun = func(ctx context.Context, owner, repo string, checkID int64, opt github.UpdateCheckRunOptions) (*github.CheckRun, error) { + if checkID != wantCheckID { + t.Errorf("UpdateCheckRun: checkID = %d, want %d", checkID, wantCheckID) + } + annotations := opt.Output.Annotations + if len(annotations) == 0 { + if *opt.Conclusion != conclusion { + t.Errorf("UpdateCheckRunOptions.Conclusion = %q, want %q", *opt.Conclusion, conclusion) + } + } else { + wantAnnotaions := []*github.CheckRunAnnotation{ + { + Path: github.String("sample.new.txt"), + StartLine: github.Int(2), + EndLine: github.Int(2), + AnnotationLevel: github.String("warning"), + Message: github.String("test message"), + Title: github.String("[haya14busa-linter] sample.new.txt#L2"), + RawDetails: github.String("raw test message"), + }, + { + Path: github.String("sample.new.txt"), + StartLine: github.Int(14), + EndLine: github.Int(14), + AnnotationLevel: github.String("warning"), + Message: github.String("test message2"), + Title: github.String("[haya14busa-linter] sample.new.txt#L14"), + RawDetails: github.String("raw test message2"), + }, + } + if d := cmp.Diff(annotations, wantAnnotaions); d != "" { + t.Errorf("Annotation diff found:\n%s", d) + } + } + return &github.CheckRun{HTMLURL: github.String(reportURL)}, nil + } + checker := &Checker{req: req, gh: cli} + res, err := checker.Check(context.Background()) + if err != nil { + t.Fatal(err) + } + + if res.ReportURL != reportURL { + t.Errorf("res.reportURL = %q, want %q", res.ReportURL, reportURL) + } +} + func TestCheck_fail_diff(t *testing.T) { - req := &doghouse.CheckRequest{} + req := &doghouse.CheckRequest{PullRequest: 1} cli := &fakeCheckerGitHubCli{} cli.FakeGetPullRequestDiff = func(ctx context.Context, owner, repo string, number int) ([]byte, error) { return nil, errors.New("test diff failure") @@ -224,7 +313,7 @@ func TestCheck_fail_diff(t *testing.T) { func TestCheck_fail_invalid_diff(t *testing.T) { t.Skip("Parse invalid diff function somehow doesn't return error") - req := &doghouse.CheckRequest{} + req := &doghouse.CheckRequest{PullRequest: 1} cli := &fakeCheckerGitHubCli{} cli.FakeGetPullRequestDiff = func(ctx context.Context, owner, repo string, number int) ([]byte, error) { return []byte("invalid diff"), nil @@ -242,7 +331,7 @@ func TestCheck_fail_invalid_diff(t *testing.T) { } func TestCheck_fail_check(t *testing.T) { - req := &doghouse.CheckRequest{} + req := &doghouse.CheckRequest{PullRequest: 1} cli := &fakeCheckerGitHubCli{} cli.FakeGetPullRequestDiff = func(ctx context.Context, owner, repo string, number int) ([]byte, error) { return []byte(sampleDiff), nil @@ -260,7 +349,7 @@ func TestCheck_fail_check(t *testing.T) { } func TestCheck_fail_check_with_403(t *testing.T) { - req := &doghouse.CheckRequest{} + req := &doghouse.CheckRequest{PullRequest: 1} cli := &fakeCheckerGitHubCli{} cli.FakeGetPullRequestDiff = func(ctx context.Context, owner, repo string, number int) ([]byte, error) { return []byte(sampleDiff), nil diff --git a/doghouse/service.go b/doghouse/service.go index b6c77dd44b..313982be43 100644 --- a/doghouse/service.go +++ b/doghouse/service.go @@ -8,7 +8,7 @@ type CheckRequest struct { // Required. SHA string `json:"sha,omitempty"` // PullRequest number. - // Required. + // Optional. PullRequest int `json:"pull_request,omitempty"` // Owner of the repository. // Required. From dde68cade580b8319d6c90f8d4805dd3b6cf5a61 Mon Sep 17 00:00:00 2001 From: haya14busa Date: Sun, 29 Sep 2019 13:42:26 +0000 Subject: [PATCH 2/9] Add on: push GitHub Actions workflow and run reviewdog with -reporter=github-check --- .github/workflows/reviewdog.yml | 2 +- .github/workflows/reviewdog_on_push.yml | 35 +++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/reviewdog_on_push.yml diff --git a/.github/workflows/reviewdog.yml b/.github/workflows/reviewdog.yml index a2e6278022..8a7fa03ce9 100644 --- a/.github/workflows/reviewdog.yml +++ b/.github/workflows/reviewdog.yml @@ -1,4 +1,4 @@ -name: reviewdog on GitHub Action +name: reviewdog on Pull Request on: [pull_request] jobs: reviewdog: diff --git a/.github/workflows/reviewdog_on_push.yml b/.github/workflows/reviewdog_on_push.yml new file mode 100644 index 0000000000..e358fbf5d4 --- /dev/null +++ b/.github/workflows/reviewdog_on_push.yml @@ -0,0 +1,35 @@ +name: reviewdog on Push +on: [push] +jobs: + reviewdog: + name: reviewdog + runs-on: ubuntu-latest + steps: + - name: Set up Go + uses: actions/setup-go@v1 + with: + go-version: 1.13 + id: go + + - name: Add $GOPATH/bin + run: | + echo ::add-path::$(go env GOPATH)/bin + + - name: Check out code into the Go module directory + uses: actions/checkout@v1 + + - name: Install linters + run: '( cd linters && go get golang.org/x/lint/golint )' + + - name: Setup reviewdog + run: | + # mkdir -p $HOME/bin && curl -sfL https://raw.githubusercontent.com/reviewdog/reviewdog/master/install.sh| sh -s -- -b $HOME/bin + # echo ::add-path::$HOME/bin + go install ./cmd/reviewdog + + - name: Run reviewdog + env: + REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + reviewdog -reporter=github-check -runners=golint,govet + From 711f8a911fc59bed502a562bf0de698687a5c439 Mon Sep 17 00:00:00 2001 From: haya14busa Date: Sun, 29 Sep 2019 13:46:46 +0000 Subject: [PATCH 3/9] chagne tool name for golint with reviewdog on push --- .github/workflows/reviewdog_on_push.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/reviewdog_on_push.yml b/.github/workflows/reviewdog_on_push.yml index e358fbf5d4..394bf42b99 100644 --- a/.github/workflows/reviewdog_on_push.yml +++ b/.github/workflows/reviewdog_on_push.yml @@ -31,5 +31,5 @@ jobs: env: REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - reviewdog -reporter=github-check -runners=golint,govet + golint ./... | reviewdog -f=golint -name=golint-on-push -reporter=github-check From 6983ba1c32e9774d3e1ed9f32c562e8821d9fa02 Mon Sep 17 00:00:00 2001 From: haya14busa Date: Sun, 29 Sep 2019 13:47:21 +0000 Subject: [PATCH 4/9] Dump GitHub Context in on push workflow --- .github/workflows/reviewdog_on_push.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/reviewdog_on_push.yml b/.github/workflows/reviewdog_on_push.yml index 394bf42b99..89051f98c2 100644 --- a/.github/workflows/reviewdog_on_push.yml +++ b/.github/workflows/reviewdog_on_push.yml @@ -5,6 +5,11 @@ jobs: name: reviewdog runs-on: ubuntu-latest steps: + - name: Dump GitHub Context + env: + GITHUB_CONTEXT: ${{ toJson(github) }} + run: echo "${GITHUB_CONTEXT}" + - name: Set up Go uses: actions/setup-go@v1 with: From 85a2d300018ef3b6252a92706d652ea9e24a5305 Mon Sep 17 00:00:00 2001 From: haya14busa Date: Sun, 29 Sep 2019 13:57:51 +0000 Subject: [PATCH 5/9] cienv: support on push GitHub Actions workflow --- cienv/_testdata/github_event_push.json | 224 +++++++++++++++++++++++++ cienv/github_actions.go | 6 + cienv/github_actions_test.go | 11 ++ 3 files changed, 241 insertions(+) create mode 100644 cienv/_testdata/github_event_push.json diff --git a/cienv/_testdata/github_event_push.json b/cienv/_testdata/github_event_push.json new file mode 100644 index 0000000000..29fe5f9bab --- /dev/null +++ b/cienv/_testdata/github_event_push.json @@ -0,0 +1,224 @@ +{ + "after": "febdd4bf26c6e8856c792303cfc66fa5e7bc975b", + "base_ref": null, + "before": "7a17ca64b1febe0a4479161cbe72978d6666f424", + "commits": [ + { + "added": [], + "author": { + "email": "haya14busa@gmail.com", + "name": "haya14busa", + "username": "haya14busa" + }, + "committer": { + "email": "haya14busa@gmail.com", + "name": "haya14busa", + "username": "haya14busa" + }, + "distinct": true, + "id": "8bc5e712cca1bf1b2e35df4a87405b16e085a084", + "message": "chagne tool name for golint with reviewdog on push", + "modified": [ + ".github/workflows/reviewdog_on_push.yml" + ], + "removed": [], + "timestamp": "2019-09-29T13:46:46Z", + "tree_id": "84b30c9ea4a8ca1aba03c85ffcd1b9f225d56a66", + "url": "https://github.com/reviewdog/reviewdog/commit/8bc5e712cca1bf1b2e35df4a87405b16e085a084" + }, + { + "added": [], + "author": { + "email": "haya14busa@gmail.com", + "name": "haya14busa", + "username": "haya14busa" + }, + "committer": { + "email": "haya14busa@gmail.com", + "name": "haya14busa", + "username": "haya14busa" + }, + "distinct": true, + "id": "febdd4bf26c6e8856c792303cfc66fa5e7bc975b", + "message": "Dump GitHub Context in on push workflow", + "modified": [ + ".github/workflows/reviewdog_on_push.yml" + ], + "removed": [], + "timestamp": "2019-09-29T13:47:21Z", + "tree_id": "83e3cb65fa825f47f618fd1b9c49d5d949831d6f", + "url": "https://github.com/reviewdog/reviewdog/commit/febdd4bf26c6e8856c792303cfc66fa5e7bc975b" + } + ], + "compare": "https://github.com/reviewdog/reviewdog/compare/7a17ca64b1fe...febdd4bf26c6", + "created": false, + "deleted": false, + "forced": false, + "head_commit": { + "added": [], + "author": { + "email": "haya14busa@gmail.com", + "name": "haya14busa", + "username": "haya14busa" + }, + "committer": { + "email": "haya14busa@gmail.com", + "name": "haya14busa", + "username": "haya14busa" + }, + "distinct": true, + "id": "febdd4bf26c6e8856c792303cfc66fa5e7bc975b", + "message": "Dump GitHub Context in on push workflow", + "modified": [ + ".github/workflows/reviewdog_on_push.yml" + ], + "removed": [], + "timestamp": "2019-09-29T13:47:21Z", + "tree_id": "83e3cb65fa825f47f618fd1b9c49d5d949831d6f", + "url": "https://github.com/reviewdog/reviewdog/commit/febdd4bf26c6e8856c792303cfc66fa5e7bc975b" + }, + "organization": { + "avatar_url": "https://avatars2.githubusercontent.com/u/48765237?v=4", + "description": "", + "events_url": "https://api.github.com/orgs/reviewdog/events", + "hooks_url": "https://api.github.com/orgs/reviewdog/hooks", + "id": 48765237, + "issues_url": "https://api.github.com/orgs/reviewdog/issues", + "login": "reviewdog", + "members_url": "https://api.github.com/orgs/reviewdog/members{/member}", + "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ4NzY1MjM3", + "public_members_url": "https://api.github.com/orgs/reviewdog/public_members{/member}", + "repos_url": "https://api.github.com/orgs/reviewdog/repos", + "url": "https://api.github.com/orgs/reviewdog" + }, + "pusher": { + "email": "hayabusa1419@gmail.com", + "name": "haya14busa" + }, + "ref": "refs/heads/github-check-reporter", + "repository": { + "archive_url": "https://api.github.com/repos/reviewdog/reviewdog/{archive_format}{/ref}", + "archived": false, + "assignees_url": "https://api.github.com/repos/reviewdog/reviewdog/assignees{/user}", + "blobs_url": "https://api.github.com/repos/reviewdog/reviewdog/git/blobs{/sha}", + "branches_url": "https://api.github.com/repos/reviewdog/reviewdog/branches{/branch}", + "clone_url": "https://github.com/reviewdog/reviewdog.git", + "collaborators_url": "https://api.github.com/repos/reviewdog/reviewdog/collaborators{/collaborator}", + "comments_url": "https://api.github.com/repos/reviewdog/reviewdog/comments{/number}", + "commits_url": "https://api.github.com/repos/reviewdog/reviewdog/commits{/sha}", + "compare_url": "https://api.github.com/repos/reviewdog/reviewdog/compare/{base}...{head}", + "contents_url": "https://api.github.com/repos/reviewdog/reviewdog/contents/{+path}", + "contributors_url": "https://api.github.com/repos/reviewdog/reviewdog/contributors", + "created_at": 1476705514, + "default_branch": "master", + "deployments_url": "https://api.github.com/repos/reviewdog/reviewdog/deployments", + "description": ":dog: Automated code review tool integrated with any code analysis tools regardless of programming language", + "disabled": false, + "downloads_url": "https://api.github.com/repos/reviewdog/reviewdog/downloads", + "events_url": "https://api.github.com/repos/reviewdog/reviewdog/events", + "fork": false, + "forks": 70, + "forks_count": 70, + "forks_url": "https://api.github.com/repos/reviewdog/reviewdog/forks", + "full_name": "reviewdog/reviewdog", + "git_commits_url": "https://api.github.com/repos/reviewdog/reviewdog/git/commits{/sha}", + "git_refs_url": "https://api.github.com/repos/reviewdog/reviewdog/git/refs{/sha}", + "git_tags_url": "https://api.github.com/repos/reviewdog/reviewdog/git/tags{/sha}", + "git_url": "git://github.com/reviewdog/reviewdog.git", + "has_downloads": true, + "has_issues": true, + "has_pages": false, + "has_projects": true, + "has_wiki": true, + "homepage": "https://medium.com/@haya14busa/reviewdog-a-code-review-dog-who-keeps-your-codebase-healthy-d957c471938b#.8xctbaw5u", + "hooks_url": "https://api.github.com/repos/reviewdog/reviewdog/hooks", + "html_url": "https://github.com/reviewdog/reviewdog", + "id": 71133469, + "issue_comment_url": "https://api.github.com/repos/reviewdog/reviewdog/issues/comments{/number}", + "issue_events_url": "https://api.github.com/repos/reviewdog/reviewdog/issues/events{/number}", + "issues_url": "https://api.github.com/repos/reviewdog/reviewdog/issues{/number}", + "keys_url": "https://api.github.com/repos/reviewdog/reviewdog/keys{/key_id}", + "labels_url": "https://api.github.com/repos/reviewdog/reviewdog/labels{/name}", + "language": "Go", + "languages_url": "https://api.github.com/repos/reviewdog/reviewdog/languages", + "license": { + "key": "mit", + "name": "MIT License", + "node_id": "MDc6TGljZW5zZTEz", + "spdx_id": "MIT", + "url": "https://api.github.com/licenses/mit" + }, + "master_branch": "master", + "merges_url": "https://api.github.com/repos/reviewdog/reviewdog/merges", + "milestones_url": "https://api.github.com/repos/reviewdog/reviewdog/milestones{/number}", + "mirror_url": null, + "name": "reviewdog", + "node_id": "MDEwOlJlcG9zaXRvcnk3MTEzMzQ2OQ==", + "notifications_url": "https://api.github.com/repos/reviewdog/reviewdog/notifications{?since,all,participating}", + "open_issues": 27, + "open_issues_count": 27, + "organization": "reviewdog", + "owner": { + "avatar_url": "https://avatars2.githubusercontent.com/u/48765237?v=4", + "email": null, + "events_url": "https://api.github.com/users/reviewdog/events{/privacy}", + "followers_url": "https://api.github.com/users/reviewdog/followers", + "following_url": "https://api.github.com/users/reviewdog/following{/other_user}", + "gists_url": "https://api.github.com/users/reviewdog/gists{/gist_id}", + "gravatar_id": "", + "html_url": "https://github.com/reviewdog", + "id": 48765237, + "login": "reviewdog", + "name": "reviewdog", + "node_id": "MDEyOk9yZ2FuaXphdGlvbjQ4NzY1MjM3", + "organizations_url": "https://api.github.com/users/reviewdog/orgs", + "received_events_url": "https://api.github.com/users/reviewdog/received_events", + "repos_url": "https://api.github.com/users/reviewdog/repos", + "site_admin": false, + "starred_url": "https://api.github.com/users/reviewdog/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/reviewdog/subscriptions", + "type": "Organization", + "url": "https://api.github.com/users/reviewdog" + }, + "private": false, + "pulls_url": "https://api.github.com/repos/reviewdog/reviewdog/pulls{/number}", + "pushed_at": 1569764859, + "releases_url": "https://api.github.com/repos/reviewdog/reviewdog/releases{/id}", + "size": 4533, + "ssh_url": "git@github.com:reviewdog/reviewdog.git", + "stargazers": 1217, + "stargazers_count": 1217, + "stargazers_url": "https://api.github.com/repos/reviewdog/reviewdog/stargazers", + "statuses_url": "https://api.github.com/repos/reviewdog/reviewdog/statuses/{sha}", + "subscribers_url": "https://api.github.com/repos/reviewdog/reviewdog/subscribers", + "subscription_url": "https://api.github.com/repos/reviewdog/reviewdog/subscription", + "svn_url": "https://github.com/reviewdog/reviewdog", + "tags_url": "https://api.github.com/repos/reviewdog/reviewdog/tags", + "teams_url": "https://api.github.com/repos/reviewdog/reviewdog/teams", + "trees_url": "https://api.github.com/repos/reviewdog/reviewdog/git/trees{/sha}", + "updated_at": "2019-09-29T11:53:30Z", + "url": "https://github.com/reviewdog/reviewdog", + "watchers": 1217, + "watchers_count": 1217 + }, + "sender": { + "avatar_url": "https://avatars0.githubusercontent.com/u/3797062?v=4", + "events_url": "https://api.github.com/users/haya14busa/events{/privacy}", + "followers_url": "https://api.github.com/users/haya14busa/followers", + "following_url": "https://api.github.com/users/haya14busa/following{/other_user}", + "gists_url": "https://api.github.com/users/haya14busa/gists{/gist_id}", + "gravatar_id": "", + "html_url": "https://github.com/haya14busa", + "id": 3797062, + "login": "haya14busa", + "node_id": "MDQ6VXNlcjM3OTcwNjI=", + "organizations_url": "https://api.github.com/users/haya14busa/orgs", + "received_events_url": "https://api.github.com/users/haya14busa/received_events", + "repos_url": "https://api.github.com/users/haya14busa/repos", + "site_admin": false, + "starred_url": "https://api.github.com/users/haya14busa/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/haya14busa/subscriptions", + "type": "User", + "url": "https://api.github.com/users/haya14busa" + } +} diff --git a/cienv/github_actions.go b/cienv/github_actions.go index 9bf5b6d240..464384d1e8 100644 --- a/cienv/github_actions.go +++ b/cienv/github_actions.go @@ -19,6 +19,9 @@ type GitHubEvent struct { After string `json:"after"` PullRequests []GitHubPullRequest `json:"pull_requests"` } `json:"check_suite"` + HeadCommit struct { + ID string `json:"id"` + } `json:"head_commit"` } type GitHubPullRequest struct { @@ -60,6 +63,9 @@ func getBuildInfoFromGitHubActionEventPath(eventPath string) (*BuildInfo, bool, info.Branch = pr.Head.Ref info.SHA = pr.Head.Sha } + if info.SHA == "" { + info.SHA = event.HeadCommit.ID + } return info, info.PullRequest != 0, nil } diff --git a/cienv/github_actions_test.go b/cienv/github_actions_test.go index 9856c88750..33c2bedc54 100644 --- a/cienv/github_actions_test.go +++ b/cienv/github_actions_test.go @@ -27,3 +27,14 @@ func TestGetBuildInfoFromGitHubActionEventPath_rerunevent(t *testing.T) { t.Errorf("result has diff:\n%s", diff) } } + +func TestGetBuildInfoFromGitHubActionEventPath_pushevent(t *testing.T) { + got, _, err := getBuildInfoFromGitHubActionEventPath("_testdata/github_event_push.json") + if err != nil { + t.Fatal(err) + } + want := &BuildInfo{Owner: "reviewdog", Repo: "reviewdog", SHA: "febdd4bf26c6e8856c792303cfc66fa5e7bc975b"} + if diff := cmp.Diff(got, want); diff != "" { + t.Errorf("result has diff:\n%s", diff) + } +} From 4aa17de771c25846e7f09920212d84624c40d3b7 Mon Sep 17 00:00:00 2001 From: haya14busa Date: Sun, 29 Sep 2019 14:04:15 +0000 Subject: [PATCH 6/9] debug: add test code --- reviewdog.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/reviewdog.go b/reviewdog.go index 51542eab95..3d82ba633f 100644 --- a/reviewdog.go +++ b/reviewdog.go @@ -10,6 +10,8 @@ import ( "github.com/reviewdog/reviewdog/diff" ) +var X = 14 + // Reviewdog represents review dog application which parses result of compiler // or linter, get diff and filter the results by diff, and report filtered // results. From 52ef9ae7382a7f479135669f81e02844817cddc6 Mon Sep 17 00:00:00 2001 From: haya14busa Date: Sun, 29 Sep 2019 14:08:17 +0000 Subject: [PATCH 7/9] rename workflow to distinguish on pull-request and on push workflow --- .github/workflows/reviewdog_on_push.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reviewdog_on_push.yml b/.github/workflows/reviewdog_on_push.yml index 89051f98c2..5b82c96fab 100644 --- a/.github/workflows/reviewdog_on_push.yml +++ b/.github/workflows/reviewdog_on_push.yml @@ -1,8 +1,8 @@ name: reviewdog on Push on: [push] jobs: - reviewdog: - name: reviewdog + reviewdog-on-push: + name: reviewdog-on-push runs-on: ubuntu-latest steps: - name: Dump GitHub Context From 027992da0d2fc2d337f364fb8057b32241d54177 Mon Sep 17 00:00:00 2001 From: haya14busa Date: Sun, 29 Sep 2019 14:27:19 +0000 Subject: [PATCH 8/9] use golint as warning --- .github/workflows/reviewdog_on_push.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/reviewdog_on_push.yml b/.github/workflows/reviewdog_on_push.yml index 5b82c96fab..f25e2ec1dc 100644 --- a/.github/workflows/reviewdog_on_push.yml +++ b/.github/workflows/reviewdog_on_push.yml @@ -36,5 +36,4 @@ jobs: env: REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - golint ./... | reviewdog -f=golint -name=golint-on-push -reporter=github-check - + golint ./... | reviewdog -f=golint -name=golint-on-push -reporter=github-check -level=warning From ba1320125a34e465ab9ac5d3e38556fa7e1f4ba6 Mon Sep 17 00:00:00 2001 From: haya14busa Date: Sun, 29 Sep 2019 14:28:00 +0000 Subject: [PATCH 9/9] tweak name --- .github/workflows/reviewdog_on_push.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/reviewdog_on_push.yml b/.github/workflows/reviewdog_on_push.yml index f25e2ec1dc..8efdbf5ea5 100644 --- a/.github/workflows/reviewdog_on_push.yml +++ b/.github/workflows/reviewdog_on_push.yml @@ -1,8 +1,8 @@ name: reviewdog on Push on: [push] jobs: - reviewdog-on-push: - name: reviewdog-on-push + reviewdog-: + name: reviewdog- runs-on: ubuntu-latest steps: - name: Dump GitHub Context @@ -36,4 +36,4 @@ jobs: env: REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - golint ./... | reviewdog -f=golint -name=golint-on-push -reporter=github-check -level=warning + golint ./... | reviewdog -f=golint -name=golint-github-check -reporter=github-check -level=warning