« Back to Index

Jenkins CI -> GitHub API

View original Gist on GitHub

jenkins-to-github-api.sh

printf "\nPOST result to GitHub\n\n"

if [ $(cat RUBOCOP_RESULT) == "0" ]; then
  RESULT="success"
else
  RESULT="failure"
fi

GITHUB_TOKEN=$(cat /etc/github_access_token)
GITHUB_STATUS_API="https://api.github.com/repos/FOO-ORG/FOO-REPO/contents/PATH/TO/status.sh"

curl --silent --location --header "Accept: application/vnd.github.v3.raw" --user $GITHUB_TOKEN:x-oauth-basic \
  $GITHUB_STATUS_API | bash -e -s -- "composition" $GIT_COMMIT "Rubocop" $RESULT "jenkins/rubocop"

status.sh

#!/bin/bash

function setStatus()
{
  local REPO=$1
  local COMMIT_HASH=$2
  local MESSAGE=$3
  local TYPE=pending
  local GITHUB_TOKEN=$(cat /etc/github_access_token)
  local CONTEXT=continuous-integration/jenkins

  if [ ! -z "$4" ]; then
    TYPE=$4
  fi

  if [ ! -z "$5" ]; then
    CONTEXT=$5
  fi

  GITHUB_STATUS_ENDPOINT=https://api.github.com/repos/FOO-ORG/$REPO/statuses
  STATUS="{\"state\": \"$TYPE\",\"target_url\": \"$BUILD_URL\",\"description\": \"$MESSAGE\",\"context\": \"$CONTEXT\"}"
  curl -u FOOUSER:$GITHUB_TOKEN -X POST -d "$STATUS" --header 'Content-Type: application/json' $GITHUB_STATUS_ENDPOINT/$COMMIT_HASH > /dev/null
}

setStatus "$1" "$2" "$3" "$4" "$5"