Advertisement
connaryscott

JenkinsJobsSh

Apr 10th, 2011
452
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.30 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. DEFAULT_JENKINS_URL="http://localhost:8080"
  4. CURL_EXEC=$(which curl)
  5. if [ ! -x $CURL_EXEC ]
  6. then
  7.    echo "cannot find curl" 1>&2
  8.    exit 1
  9. fi
  10.  
  11. usage() {
  12.    echo "jenkins-jobs load [--load-options]" 1>&2
  13.    echo "   jenkins-jobs load [--url http://localhost:8080 ] [--overwrite] --file <file> --name <name> --username <username> --password <password>" 1>&2
  14.    echo "       where <file> is a valid jenkins job config.xml" 1>&2
  15.    echo "jenkins-jobs delete [--delete-options]" 1>&2
  16.    echo "   jenkins-jobs delete [--url http://localhost:8080 ] --name <name> --username <username> --password <password>" 1>&2
  17.    exit 1
  18. }
  19.  
  20. parseCommon() {
  21.    while [ $# -gt 0 ]
  22.    do
  23.       case $1 in
  24.          "--name")
  25.             if [ $# -eq 0 ]
  26.             then
  27.                usage
  28.             fi
  29.             shift
  30.             name=$1
  31.             ;;
  32.          "--username")
  33.             if [ $# -eq 0 ]
  34.             then
  35.                usage
  36.             fi
  37.             shift
  38.             username=$1
  39.             ;;
  40.          "--password")
  41.             if [ $# -eq 0 ]
  42.             then
  43.                usage
  44.             fi
  45.             shift
  46.             password=$1
  47.             ;;
  48.          "--url")
  49.             if [ $# -eq 0 ]
  50.             then
  51.                usage
  52.             fi
  53.             shift
  54.             url=$1
  55.             ;;
  56.       esac
  57.  
  58.       shift
  59.    done
  60.  
  61.    if [ -z $url ]
  62.    then
  63.       url=$DEFAULT_JENKINS_URL
  64.    fi
  65.  
  66. }
  67.  
  68. parseLoad() {
  69.  
  70.    parseCommon $*
  71.  
  72.     if [ -z $name ]
  73.     then
  74.        usage
  75.     fi
  76.     if [ -z $username ]
  77.     then
  78.        usage
  79.     fi
  80.     if [ -z $password ]
  81.     then
  82.        usage
  83.     fi
  84.  
  85.  
  86.    OVERWRITE=false
  87.    while [ $# -gt 0 ]
  88.    do
  89.       case $1 in
  90.          "--file")
  91.             if [ $# -eq 0 ]
  92.             then
  93.                usage
  94.             fi
  95.             shift
  96.             file=$1
  97.             ;;
  98.          "--overwrite")
  99.             OVERWRITE=true
  100.             ;;
  101.        esac
  102.        shift
  103.    done
  104.  
  105.    if [ -z "$file" ]
  106.    then
  107.       usage
  108.    fi
  109. }
  110.  
  111. parseDelete() {
  112.  
  113.     if [ -z $name ]
  114.     then
  115.        usage
  116.     fi
  117.     if [ -z $username ]
  118.     then
  119.        usage
  120.     fi
  121.     if [ -z $password ]
  122.     then
  123.        usage
  124.     fi
  125.  
  126.     parseCommon $*  
  127.  
  128. }
  129.  
  130. performDelete() {
  131.    parseDelete $*
  132.  
  133.  
  134.    $CURL_EXEC -S -f --user ${username}:${password} -H 'Content-Type: text/xml' -s --data /dev/null "${url}/job/${name}/doDelete"
  135.  
  136. }
  137.  
  138. performLoad() {
  139.    parseLoad $*
  140.  
  141.    if [ "$OVERWRITE" = true ]
  142.    then
  143.       $CURL_EXEC  -f --user ${username}:${password} -H 'Content-Type: text/xml' -s --data /dev/null "${url}/job/${name}/doDelete" > /dev/null 2>&1
  144.    fi
  145.    $CURL_EXEC -S -f --user ${username}:${password} -H "Content-Type: text/xml" -s --data "@${file}" "${url}/createItem?name=${name}"
  146.  
  147. }
  148.  
  149. performList() {
  150.    parseCommon $*
  151.    #$CURL_EXEC -s -f "${url}/api/xml?tree=jobs\[name\]" | sed -e 's,<name>,^,g' -e 's,</name>,^,g'  |tr '^' '\n' |grep -v '^<'
  152.    $CURL_EXEC -s -f "${url}/api"
  153. }
  154.  
  155.  
  156. subCmd=$1
  157. case $subCmd in
  158.    "list")
  159.       shift
  160.       performList $*
  161.       ;;
  162.    "load")
  163.       shift
  164.       performLoad $*
  165.       ;;
  166.    "delete")
  167.       shift
  168.       performDelete $*
  169.       ;;
  170.    *)
  171.       usage
  172.       ;;
  173. esac
  174.  
  175. if [ $? -ne 0 ]
  176. then
  177.    echo "$0 $subCmd $* failed" 1>&2
  178.    exit 1
  179. fi
  180.  
  181. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement