ci/ci-common.sh
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sat, 19 Mar 2016 00:12:47 +0100
changeset 556 51c6afba5c91
parent 554 9d8a84bb2ed2
permissions -rw-r--r--
CI: Use VM provided by Pharo team on both Linux and Windows. Hand-crafter Pharo VM is no longer needed as the Linux slave in SWING build farm has been upgraded so it has compatible GLIBC. This makes CI scripts simpler and more usable for other people.
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)
553
d83cb4945d5e Oops, forgot to export PETITCOMPILER_DATA_DIRECTORY variable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 552
diff changeset
    18
    export PETITCOMPILER_DATA_DIRECTORY="E:\\workspace\\petitcompiler_test_data"
552
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)
553
d83cb4945d5e Oops, forgot to export PETITCOMPILER_DATA_DIRECTORY variable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 552
diff changeset
    21
    export PETITCOMPILER_DATA_DIRECTORY="/ws/workspace/petitcompiler_test_data"
552
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
  *)
553
d83cb4945d5e Oops, forgot to export PETITCOMPILER_DATA_DIRECTORY variable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 552
diff changeset
    24
    export PETITCOMPILER_DATA_DIRECTORY=test-data
552
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
553
d83cb4945d5e Oops, forgot to export PETITCOMPILER_DATA_DIRECTORY variable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 552
diff changeset
    29
549
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
function ci_download_and_unzip_file {
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
  local url=$1
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
  local where=$PETITCOMPILER_DATA_DIRECTORY
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
  local file=${url##*/}
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
  local directory=${file%.zip}
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
  local status=0
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
552
f79944e2bd85 Use shared directory for test data on Jenkins
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 551
diff changeset
    37
  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
    38
    pushd "$where"
549
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
      wget -O "$file" "$url"
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
      set +e
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
      unzip -o "$file"
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
      status=$?
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
      set -e
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
      case "$status" in
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
        0)
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
          status=0
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
          ;;
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
        1)
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
          status=0
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
          ;;
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
        2)
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
          status=0
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
          ;;
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
      esac
551
00ebb1b85f53 Fixed CI scripts on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 549
diff changeset
    57
      # 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
    58
      # 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
    59
      # 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
    60
      if [ "$OS" == "Windows_NT" ]; then
00ebb1b85f53 Fixed CI scripts on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 549
diff changeset
    61
	if [ "$status" == "50" ]; then
00ebb1b85f53 Fixed CI scripts on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 549
diff changeset
    62
	  status=0
00ebb1b85f53 Fixed CI scripts on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 549
diff changeset
    63
	fi
00ebb1b85f53 Fixed CI scripts on Windows
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 549
diff changeset
    64
      fi	
549
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
      rm -f "$file"
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    popd
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
  else
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    echo "Skipped $directory (already present)"
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
  fi
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
  return "$status"
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
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
function ci_download_test_data {
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
	if [ ! -x "$PETITCOMPILER_DATA_DIRECTORY" ]; then
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
		mkdir -p "$PETITCOMPILER_DATA_DIRECTORY"
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
	fi
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/java-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/smalltalk-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/ruby-src.zip
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
	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
    81
}
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
function ci_upload_benchmark_results {
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
	if [ -f "$PETITCOMPILER_BENCHMARK_REPORT" ]; then
554
9d8a84bb2ed2 Oops, another type (`url`, should be `curl`)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 553
diff changeset
    85
  		curl 'https://swing.fit.cvut.cz/calipel/imports/push-import'  \
549
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
		    --user "$CALIPEL_USER:$CALIPEL_PASSWORD" \
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
		    --compressed \
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
		    -H 'Content-Type: application/json' \
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
		    --data "@$PETITCOMPILER_BENCHMARK_REPORT"
8ad6734770cd Added CI scripts for PetitParser.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
	fi
553
d83cb4945d5e Oops, forgot to export PETITCOMPILER_DATA_DIRECTORY variable
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 552
diff changeset
    91
}