Merge pull request #9212 from jryans/ci-forks

Support CI for matching branches on forks
This commit is contained in:
J. Ryan Stinnett 2019-03-20 09:57:03 +00:00 committed by GitHub
commit 82d7457168
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -6,7 +6,7 @@
# the branch the current checkout is on, use that branch. Otherwise, # the branch the current checkout is on, use that branch. Otherwise,
# use develop. # use develop.
set -e set -ex
GIT_CLONE_ARGS=("$@") GIT_CLONE_ARGS=("$@")
[ -z "$defbranch" ] && defbranch="develop" [ -z "$defbranch" ] && defbranch="develop"
@ -33,27 +33,39 @@ function clone() {
} }
function dodep() { function dodep() {
org=$1 deforg=$1
repo=$2 defrepo=$2
rm -rf $repo rm -rf $defrepo
# Try the PR author's branch in case it exists on the deps as well. # Try the PR author's branch in case it exists on the deps as well.
# Try the target branch of the push or PR. # Try the target branch of the push or PR.
# Use the default branch as the last resort. # Use the default branch as the last resort.
if [[ "$BUILDKITE" == true ]]; then if [[ "$BUILDKITE" == true ]]; then
clone $org $repo $BUILDKITE_BRANCH || # If BUILDKITE_BRANCH is set, it will contain either:
clone $org $repo $BUILDKITE_PULL_REQUEST_BASE_BRANCH || # * "branch" when the author's branch and target branch are in the same repo
clone $org $repo $defbranch || # * "author:branch" when the author's branch is in their fork
# We can split on `:` into an array to check.
BUILDKITE_BRANCH_ARRAY=(${BUILDKITE_BRANCH//:/ })
if [[ "${#BUILDKITE_BRANCH_ARRAY[@]}" == "2" ]]; then
prAuthor=${BUILDKITE_BRANCH_ARRAY[0]}
prBranch=${BUILDKITE_BRANCH_ARRAY[1]}
else
prAuthor=$deforg
prBranch=$BUILDKITE_BRANCH
fi
clone $prAuthor $defrepo $prBranch ||
clone $deforg $defrepo $BUILDKITE_PULL_REQUEST_BASE_BRANCH ||
clone $deforg $defrepo $defbranch ||
return $? return $?
else else
clone $org $repo $ghprbSourceBranch || clone $deforg $defrepo $ghprbSourceBranch ||
clone $org $repo $GIT_BRANCH || clone $deforg $defrepo $GIT_BRANCH ||
clone $org $repo `git rev-parse --abbrev-ref HEAD` || clone $deforg $defrepo `git rev-parse --abbrev-ref HEAD` ||
clone $org $repo $defbranch || clone $deforg $defrepo $defbranch ||
return $? return $?
fi fi
echo "$repo set to branch "`git -C "$repo" rev-parse --abbrev-ref HEAD` echo "$defrepo set to branch "`git -C "$defrepo" rev-parse --abbrev-ref HEAD`
} }
############################## ##############################