2019-01-31 18:56:56 -05:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
|
|
# Suggested by Github actions to be strict
|
|
|
|
|
set -e
|
|
|
|
|
set -o pipefail
|
|
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
|
# Global Variables (we can't use GITHUB_ prefix)
|
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
|
|
API_VERSION=v3
|
|
|
|
|
BASE=https://api.github.com
|
|
|
|
|
AUTH_HEADER="Authorization: token ${GITHUB_TOKEN}"
|
|
|
|
|
HEADER="Accept: application/vnd.github.${API_VERSION}+json"
|
|
|
|
|
HEADER="${HEADER}; application/vnd.github.antiope-preview+json"
|
|
|
|
|
|
|
|
|
|
# URLs
|
|
|
|
|
REPO_URL="${BASE}/repos/${GITHUB_REPOSITORY}"
|
|
|
|
|
PULLS_URL=$REPO_URL/pulls
|
|
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
|
# Helper Functions
|
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
check_credentials() {
|
|
|
|
|
|
|
|
|
|
if [[ -z "${GITHUB_TOKEN}" ]]; then
|
|
|
|
|
echo "You must include the GITHUB_TOKEN as an environment variable."
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
check_events_json() {
|
|
|
|
|
|
|
|
|
|
if [[ ! -f "${GITHUB_EVENT_PATH}" ]]; then
|
|
|
|
|
echo "Cannot find Github events file at ${GITHUB_EVENT_PATH}";
|
|
|
|
|
exit 1;
|
|
|
|
|
fi
|
|
|
|
|
echo "Found ${GITHUB_EVENT_PATH}";
|
2019-01-31 19:12:16 -05:00
|
|
|
|
2019-01-31 18:56:56 -05:00
|
|
|
}
|
|
|
|
|
|
2019-02-01 13:31:55 -05:00
|
|
|
create_pull_request() {
|
|
|
|
|
|
|
|
|
|
SOURCE=${1} # from this branch
|
|
|
|
|
TARGET=${2} # pull request TO this target
|
|
|
|
|
|
|
|
|
|
TITLE="Update container ${SOURCE}"
|
|
|
|
|
BODY="This is an automated pull request to update the container collection ${SOURCE}"
|
|
|
|
|
|
|
|
|
|
# Post the pull request
|
|
|
|
|
DATA="{\"title\":\"${TITLE}\", \"base\":\"${TARGET}\", \"head\":\"${SOURCE}\"}"
|
|
|
|
|
echo "curl --user ${GITHUB_ACTOR} -X POST --data ${DATA} ${PULLS_URL}"
|
2019-02-01 13:36:57 -05:00
|
|
|
curl -sSL -H "${AUTH_HEADER}" -H "${HEADER}" --user "${GITHUB_ACTOR}" -X POST --data "${DATA}" ${PULLS_URL}
|
2019-02-01 13:31:55 -05:00
|
|
|
echo $?
|
|
|
|
|
}
|
|
|
|
|
|
2019-01-31 18:56:56 -05:00
|
|
|
|
|
|
|
|
main () {
|
|
|
|
|
|
|
|
|
|
# path to file that contains the POST response of the event
|
|
|
|
|
# Example: https://github.com/actions/bin/tree/master/debug
|
|
|
|
|
# Value: /github/workflow/event.json
|
|
|
|
|
check_events_json;
|
|
|
|
|
|
|
|
|
|
# User specified branch to PR to, and check
|
|
|
|
|
if [ -z "${BRANCH_PREFIX}" ]; then
|
|
|
|
|
echo "No branch prefix is set, all branches will be used."
|
|
|
|
|
BRANCH_PREFIX=""
|
2019-01-31 19:12:16 -05:00
|
|
|
echo "Branch prefix is $BRANCH_PREFIX"
|
2019-01-31 18:56:56 -05:00
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ -z "${PULL_REQUEST_BRANCH}" ]; then
|
|
|
|
|
PULL_REQUEST_BRANCH=master
|
|
|
|
|
fi
|
|
|
|
|
echo "Pull requests will go to ${PULL_REQUEST_BRANCH}"
|
|
|
|
|
|
|
|
|
|
# Get the name of the action that was triggered
|
|
|
|
|
BRANCH=$(jq --raw-output .ref "${GITHUB_EVENT_PATH}");
|
2019-01-31 19:12:16 -05:00
|
|
|
BRANCH=$(echo "${BRANCH/refs\/heads\//}")
|
2019-01-31 18:56:56 -05:00
|
|
|
echo "Found branch $BRANCH"
|
|
|
|
|
|
|
|
|
|
# If it's to the target branch, ignore it
|
2019-01-31 19:03:56 -05:00
|
|
|
if [[ "${BRANCH}" == "${PULL_REQUEST_BRANCH}" ]]; then
|
2019-01-31 18:56:56 -05:00
|
|
|
echo "Target and current branch are identical (${BRANCH}), skipping."
|
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
# If the prefix for the branch matches
|
|
|
|
|
if [[ $BRANCH == ${BRANCH_PREFIX}* ]]; then
|
|
|
|
|
|
|
|
|
|
# Ensure we have a GitHub token
|
|
|
|
|
check_credentials
|
2019-02-01 13:31:55 -05:00
|
|
|
create_pull_request $BRANCH $PULL_REQUEST_BRANCH
|
2019-01-31 18:56:56 -05:00
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
echo "==========================================================================
|
|
|
|
|
START: Running Pull Request on Branch Update Action!";
|
|
|
|
|
main;
|
|
|
|
|
echo "==========================================================================
|
|
|
|
|
END: Finished";
|