diff --git a/ci.go b/ci.go index e6159c6..2ab6e9b 100644 --- a/ci.go +++ b/ci.go @@ -144,5 +144,23 @@ func githubActions() (ci CI, err error) { os.Getenv("GITHUB_RUN_ID"), ) ci.PR.Revision = os.Getenv("GITHUB_SHA") + pr := "" + if prNumber, ok := os.LookupEnv("PR_NUMBER"); !ok && prNumber != "" { + pr = prNumber + } else { + ref := os.Getenv("GITHUB_REF") + + if ref != "" { + prRegex := regexp.MustCompile(`refs/pull/\d*/merge`) + if prRegex.MatchString(ref) { + strLen := strings.Split(ref, "/") + pr = strLen[2] + } + } + } + if pr == "" { + return ci, nil + } + ci.PR.Number, err = strconv.Atoi(pr) return ci, err } diff --git a/ci_test.go b/ci_test.go index 7bd29bb..4a8db22 100644 --- a/ci_test.go +++ b/ci_test.go @@ -736,11 +736,28 @@ func TestGitHubActions(t *testing.T) { os.Setenv("GITHUB_SHA", "abcdefg") os.Setenv("GITHUB_REPOSITORY", "mercari/tfnotify") os.Setenv("GITHUB_RUN_ID", "12345") + os.Setenv("GITHUB_REF", "refs/pull/123/merge") }, ci: CI{ PR: PullRequest{ Revision: "abcdefg", - Number: 0, + Number: 123, + }, + URL: "https://github.com/mercari/tfnotify/actions/runs/12345", + }, + ok: true, + }, + { + fn: func() { + os.Setenv("GITHUB_SHA", "abcdefg") + os.Setenv("GITHUB_REPOSITORY", "mercari/tfnotify") + os.Setenv("GITHUB_RUN_ID", "12345") + os.Setenv("PR_NUMBER", "123") + }, + ci: CI{ + PR: PullRequest{ + Revision: "abcdefg", + Number: 123, }, URL: "https://github.com/mercari/tfnotify/actions/runs/12345", },