Skip to content

Instantly share code, notes, and snippets.

@zkan
Created April 19, 2020 15:56
Show Gist options
  • Save zkan/cf80abb32519a7f059f13d0396fd967a to your computer and use it in GitHub Desktop.
Save zkan/cf80abb32519a7f059f13d0396fd967a to your computer and use it in GitHub Desktop.
CircleCI trigger jobs script
# https://circleci.com/docs/2.0/api-job-trigger/
function trigger_job() {
job_name=$1
curl --user ${CIRCLE_API_TOKEN}: \
--data build_parameters[CIRCLE_JOB]=$job_name \
--data revision=$CIRCLE_SHA1 \
https://circleci.com/api/v1.1/project/github/$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/tree/$CIRCLE_BRANCH
}
# Always compare PR commit with the recent commmit in develop
export CIRCLE_BRANCH_MODIFIED=${CIRCLE_BRANCH/\//_}
if [[ $CIRCLE_BRANCH_MODIFIED == *"pull_"* ]]; then
git fetch origin
LAST_COMMIT=$(git rev-parse origin/develop)
fi
# When merge PR, we compare with the recent commit in develop
if [ $CIRCLE_COMPARE_URL ]; then
LAST_COMMIT=$(echo ${CIRCLE_COMPARE_URL##*/} | cut -d . -f 1)
elif [ ! $LAST_COMMIT ]; then
echo $(.circleci/scripts/s3simple get s3://pronto-circleci/$CIRCLE_PROJECT_REPONAME/last_commit_develop) > last_commit_develop
source last_commit_develop
fi
DASHBOARD=$(git diff --name-only ${LAST_COMMIT}...${CIRCLE_SHA1} | grep ^service-dashboard | awk '{print}' ORS='') || true
BANGKOK=$(git diff --name-only ${LAST_COMMIT}...${CIRCLE_SHA1} | grep ^service-bangkok | awk '{print}' ORS='') || true
if [ ! -z "$DASHBOARD" ]; then
trigger_job service_dashboard
fi
if [ ! -z "$BANGKOK" ]; then
trigger_job service_bangkok
fi
echo "export LAST_COMMIT=$CIRCLE_SHA1" > last_commit_$CIRCLE_BRANCH_MODIFIED
.circleci/s3simple put s3://pronto-circleci/$CIRCLE_PROJECT_REPONAME/last_commit_$CIRCLE_BRANCH_MODIFIED last_commit_${CIRCLE_BRANCH_MODIFIED}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment