diff options
author | psychocrypt <psychocrypt@users.noreply.github.com> | 2017-11-15 21:26:40 +0100 |
---|---|---|
committer | psychocrypt <psychocrypt@users.noreply.github.com> | 2017-11-15 21:26:40 +0100 |
commit | 138c2140b33e9cd3210e608550cbc16500352b9d (patch) | |
tree | b4b82007ab4880e85d0d45f98f3cf6cd44e203eb /CI | |
parent | 92dcd340d104c3d7ef8e5b386041f1a40184577a (diff) | |
download | xmr-stak-138c2140b33e9cd3210e608550cbc16500352b9d.zip xmr-stak-138c2140b33e9cd3210e608550cbc16500352b9d.tar.gz |
forbid PR to master branch
- forbid PR to master if not from our reposetory and named `dev` or `release-*`
- do not check forks
Diffstat (limited to 'CI')
-rwxr-xr-x | CI/checkPRBranch | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/CI/checkPRBranch b/CI/checkPRBranch new file mode 100755 index 0000000..11699aa --- /dev/null +++ b/CI/checkPRBranch @@ -0,0 +1,50 @@ +#!/usr/bin/env bash + + +# Disallow pull requests to `fireice-uk/xmr-stak` branch `master` +# +# - merging from `dev` or `release-...` located within our reposetory is allowed +# - merging to `master` within a fork is allowed +# - pull request to `dev` are allowed from everywhere +# +# See: https://docs.travis-ci.com/user/environment-variables/ +# https://developer.github.com/v3/pulls/#get-a-single-pull-request +# +# +# return 0 = OK, else false +# + +if [ "$TRAVIS" != "true" ] ; then + echo "Not in travis, so I have nothing to do :)" +else + xmrstak_slug="fireice-uk/xmr-stak" + + # check only pull requests to `master` + if [ "$TRAVIS_EVENT_TYPE" == "pull_request" ] && [ "$TRAVIS_BRANCH" == "master" ] ; then + # allow pull requests to forks + if [ "$TRAVIS_REPO_SLUG" == "$xmrstak_slug" ] ; then + echo "$TRAVIS_PULL_REQUEST_BRANCH" | grep -q "^dev$" + comingFromDev=$? + echo "$TRAVIS_PULL_REQUEST_BRANCH" | grep -q "^release-" + comingFromRelease=$? + # check origin + if [[ "$TRAVIS_PULL_REQUEST_SLUG" != "$xmrstak_slug" || ( $comingFromDev -ne 0 && $comingFromRelease -ne 0 ) ]] ; then + # the PR came from a fork owned by the first part of the slug + pr_author=$(echo "$TRAVIS_PULL_REQUEST_SLUG" | awk -F "/" '{print $1}') + pr_branch=$TRAVIS_PULL_REQUEST_BRANCH + echo "" + echo "Pull request opened to wrong branch!" + echo "" + echo "Pul requests need to go to our 'dev' branch but your pull-request from '"$TRAVIS_PULL_REQUEST_SLUG"' was" + echo "sent to 'master' which is only updated by our maintainers for new stable releases." + echo "" + echo "Please re-open your pull-request against our 'dev' branch:" + echo " https://github.com/fireice-uk/xmr-stak/compare/dev...$pr_author:$pr_branch?expand=1" + echo "" + echo "For further information, please see:" + echo " https://github.com/fireice-uk/xmr-stak/blob/dev/CONTRIBUTING.md" + exit 1 + fi + fi + fi +fi |