ci/ci-common.sh
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 23 Nov 2015 14:00:53 +0100
changeset 552 f79944e2bd85
parent 551 00ebb1b85f53
child 553 d83cb4945d5e
permissions -rw-r--r--
Use shared directory for test data on Jenkins ...in order to save bandwidth and disk space.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
549
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
#
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
# A set of functions to be used in PetitParser's CI jobs
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
#
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
# Set up some environment variables (if not set by CI)
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
if [ -z "$BUILD_NUMBER" ]; then
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
   BUILD_NUMBER=0
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
fi
552
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
     9
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
    10
# Environment variable PETITCOMPILER_DATA_DIRECTORY
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
    11
# should point to the directory where test data are
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
    12
# stored (or where they should be downloaded and 
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
    13
# unpacked. To save bandwidth and disk space, when run
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
    14
# on (CTU FIT) Jenkins, point them to the shared directory
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
    15
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
    16
case $(uname -n) in
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
    17
  swing-h-win64)
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
    18
    PETITCOMPILER_DATA_DIRECTORY="E:\\workspace\\petitcompiler_test_data"
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
    19
    ;;
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
    20
  swing-hudson-lin64)
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
    21
    PETITCOMPILER_DATA_DIRECTORY="/ws/workspace/petitcompiler_test_data"
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
    22
    ;;
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
    23
  *)
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
    24
    PETITCOMPILER_DATA_DIRECTORY=test-data
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
    25
    ;;
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
    26
esac 
549
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
PETITCOMPILER_BENCHMARK_REPORT=benchmark-results-$BUILD_NUMBER.json
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
function ci_download_and_unzip_file {
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
  local url=$1
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
  local where=$PETITCOMPILER_DATA_DIRECTORY
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
  local file=${url##*/}
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
  local directory=${file%.zip}
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
  local status=0
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
552
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
    36
  if [ ! -d "$where/$directory" ]; then
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
    37
    pushd "$where"
549
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
      wget -O "$file" "$url"
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
      set +e
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
      unzip -o "$file"
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
      status=$?
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
      set -e
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
      case "$status" in
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
        0)
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
          status=0
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
          ;;
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
        1)
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
          status=0
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
          ;;
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
        2)
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
          status=0
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
          ;;
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
        *)
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
          ;;
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
      esac
551
00ebb1b85f53 Fixed CI scripts on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 549
diff changeset
    56
      # This is weird, but on Windows, sometimes I got
00ebb1b85f53 Fixed CI scripts on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 549
diff changeset
    57
      # exit code 50 from unzip even though there's plenty
00ebb1b85f53 Fixed CI scripts on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 549
diff changeset
    58
      # of space. To workaround, simply ignore it here, sigh.
00ebb1b85f53 Fixed CI scripts on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 549
diff changeset
    59
      if [ "$OS" == "Windows_NT" ]; then
00ebb1b85f53 Fixed CI scripts on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 549
diff changeset
    60
	if [ "$status" == "50" ]; then
00ebb1b85f53 Fixed CI scripts on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 549
diff changeset
    61
	  status=0
00ebb1b85f53 Fixed CI scripts on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 549
diff changeset
    62
	fi
00ebb1b85f53 Fixed CI scripts on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 549
diff changeset
    63
      fi	
549
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
      rm -f "$file"
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
    popd
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
  else
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    echo "Skipped $directory (already present)"
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
  fi
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
  return "$status"
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
}
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
function ci_download_test_data {
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
	if [ ! -x "$PETITCOMPILER_DATA_DIRECTORY" ]; then
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
		mkdir -p "$PETITCOMPILER_DATA_DIRECTORY"
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
	fi
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
	ci_download_and_unzip_file http://scg.unibe.ch/download/jk/petit-compiler/java-src.zip
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
	ci_download_and_unzip_file http://scg.unibe.ch/download/jk/petit-compiler/smalltalk-src.zip
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
	ci_download_and_unzip_file http://scg.unibe.ch/download/jk/petit-compiler/ruby-src.zip
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
	ci_download_and_unzip_file http://scg.unibe.ch/download/jk/petit-compiler/python-src.zip
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
}
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
function ci_upload_benchmark_results {
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
	if [ -f "$PETITCOMPILER_BENCHMARK_REPORT" ]; then
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
  		url 'https://swing.fit.cvut.cz/calipel/imports/push-import'  \
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
		    --user "$CALIPEL_USER:$CALIPEL_PASSWORD" \
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
		    --compressed \
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
		    -H 'Content-Type: application/json' \
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
		    --data "@$PETITCOMPILER_BENCHMARK_REPORT"
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
	fi
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
}