ci/ci-common.sh
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 23 Nov 2015 11:14:30 +0100
changeset 551 00ebb1b85f53
parent 549 8ad6734770cd
child 552 f79944e2bd85
permissions -rw-r--r--
Fixed CI scripts on Windows For an unknown reason, unzip on Windows reports status code 50 (presumably "the disk is (or was) full during extraction.") even if there's plenty of space. To workaround this, simply ignore status code 50 on Windows. Sigh.
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
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
PETITCOMPILER_DATA_DIRECTORY=test-data
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
PETITCOMPILER_BENCHMARK_REPORT=benchmark-results-$BUILD_NUMBER.json
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
function ci_download_and_unzip_file {
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
  local url=$1
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
  local where=$PETITCOMPILER_DATA_DIRECTORY
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
  local file=${url##*/}
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
  local directory=${file%.zip}
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
  local status=0
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
  if [ ! -d "$PETITCOMPILER_DATA_DIRECTORY/$directory" ]; then
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
    pushd "$PETITCOMPILER_DATA_DIRECTORY"
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
      wget -O "$file" "$url"
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
      set +e
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
      unzip -o "$file"
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
      status=$?
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
      set -e
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
      case "$status" in
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
        0)
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
          status=0
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
          ;;
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
        1)
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
          status=0
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
          ;;
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
        2)
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
          status=0
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
          ;;
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
        *)
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
          ;;
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
      esac
551
00ebb1b85f53 Fixed CI scripts on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 549
diff changeset
    39
      # 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
    40
      # 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
    41
      # 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
    42
      if [ "$OS" == "Windows_NT" ]; then
00ebb1b85f53 Fixed CI scripts on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 549
diff changeset
    43
	if [ "$status" == "50" ]; then
00ebb1b85f53 Fixed CI scripts on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 549
diff changeset
    44
	  status=0
00ebb1b85f53 Fixed CI scripts on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 549
diff changeset
    45
	fi
00ebb1b85f53 Fixed CI scripts on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 549
diff changeset
    46
      fi	
549
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
      rm -f "$file"
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
    popd
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
  else
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
    echo "Skipped $directory (already present)"
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
  fi
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
  return "$status"
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
function ci_download_test_data {
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
	if [ ! -x "$PETITCOMPILER_DATA_DIRECTORY" ]; then
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
		mkdir -p "$PETITCOMPILER_DATA_DIRECTORY"
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
	fi
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
	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
    60
	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
    61
	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
    62
	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
    63
}
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
function ci_upload_benchmark_results {
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
	if [ -f "$PETITCOMPILER_BENCHMARK_REPORT" ]; then
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
  		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
    68
		    --user "$CALIPEL_USER:$CALIPEL_PASSWORD" \
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
		    --compressed \
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
		    -H 'Content-Type: application/json' \
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
		    --data "@$PETITCOMPILER_BENCHMARK_REPORT"
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
	fi
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
}