-
Notifications
You must be signed in to change notification settings - Fork 18
/
ossPRsForbidForks.ts
27 lines (24 loc) · 1.25 KB
/
ossPRsForbidForks.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { danger, warn, fail } from "danger"
// Many OSS repos at Artsy have historically used PRs from branches on the repo,
// instead of PRs from forks. Our tooling still relies on this; PRs from forks
// won't even trigger CI builds on some of these projects, so we need to warn
// the authors via Peril.
const nonForkableRepos = ["eigen", "emission", "eidolon", "energy", "emergence", "rosalind"]
export default async () => {
const pr = danger.github.pr
const isNonForkableRepo = nonForkableRepos.filter(name => pr.base.repo.name.endsWith(name)).length > 0
if (isNonForkableRepo && pr.head.repo.fork) {
try {
// Are they a member of the Artsy GitHub org? This will throw if not.
await danger.github.api.orgs.checkMembership({ org: "artsy", username: pr.user.login })
fail(
"Artsy staff submitting PRs on this repo need to submit them from branches on the repo, and not from forks of the repo. This is a limitation of our CI infrastructure; please close this PR and re-open it from a branch."
)
} catch (error) {
// They are not.
warn(
"This PR is on a repo with limited CI support for open source contributors; the reviewers may need to check out your code locally to run the tests."
)
}
}
}