From 80d0f98263786ef302ca7551c4515560a7c07195 Mon Sep 17 00:00:00 2001 From: Vojta Jina Date: Wed, 21 Aug 2013 03:16:57 -0700 Subject: [PATCH] chore(travis): clean up logs Forward SauceConnect logs and Karma debug logs into a file and print these files at the very end of a build. --- .travis.yml | 7 +++++++ karma-docs.conf.js | 4 +--- karma-e2e.conf.js | 4 +--- karma-jqlite.conf.js | 4 +--- karma-jquery.conf.js | 4 +--- karma-modules.conf.js | 4 +--- karma-shared.conf.js | 17 +++++++++++++---- lib/sauce/sauce_connect_setup.sh | 19 +++++++++++++------ travis_print_logs.sh | 11 +++++++++++ 9 files changed, 49 insertions(+), 25 deletions(-) create mode 100755 travis_print_logs.sh diff --git a/.travis.yml b/.travis.yml index bf7e51452250..eb4e5f6d548f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,13 @@ env: - SAUCE_USERNAME=angular-ci - SAUCE_ACCESS_KEY=9b988f434ff8-fbca-8aa4-4ae3-35442987 - SAUCE_CONNECT_READY_FILE=/tmp/sauce-connect-ready + - LOGS_DIR=/tmp/angular-build/logs + +before_script: + - mkdir -p $LOGS_DIR script: - ./travis_build.sh + +after_script: + - ./travis_print_logs.sh diff --git a/karma-docs.conf.js b/karma-docs.conf.js index c3faf673bc44..b0ef4e0f2492 100644 --- a/karma-docs.conf.js +++ b/karma-docs.conf.js @@ -1,7 +1,7 @@ var sharedConfig = require('./karma-shared.conf'); module.exports = function(config) { - sharedConfig(config); + sharedConfig(config, {testName: 'AngularJS: docs', logFile: 'karma-docs.log'}); config.set({ files: [ @@ -35,6 +35,4 @@ module.exports = function(config) { suite: 'Docs' } }); - - config.sauceLabs.testName = 'AngularJS: docs'; }; diff --git a/karma-e2e.conf.js b/karma-e2e.conf.js index d9a92e99f3e3..3d839a33ae19 100644 --- a/karma-e2e.conf.js +++ b/karma-e2e.conf.js @@ -1,7 +1,7 @@ var sharedConfig = require('./karma-shared.conf'); module.exports = function(config) { - sharedConfig(config); + sharedConfig(config, {testName: 'AngularJS: e2e', logFile: 'karma-e2e.log'}); config.set({ frameworks: [], @@ -22,6 +22,4 @@ module.exports = function(config) { suite: 'E2E' } }); - - config.sauceLabs.testName = 'AngularJS: e2e'; }; diff --git a/karma-jqlite.conf.js b/karma-jqlite.conf.js index bf190f5eef8b..267e952f5918 100644 --- a/karma-jqlite.conf.js +++ b/karma-jqlite.conf.js @@ -2,7 +2,7 @@ var angularFiles = require('./angularFiles'); var sharedConfig = require('./karma-shared.conf'); module.exports = function(config) { - sharedConfig(config); + sharedConfig(config, {testName: 'AngularJS: jqLite', logFile: 'karma-jqlite.log'}); config.set({ files: angularFiles.mergeFilesFor('karma'), @@ -13,6 +13,4 @@ module.exports = function(config) { suite: 'jqLite' } }); - - config.sauceLabs.testName = 'AngularJS: jqLite'; }; diff --git a/karma-jquery.conf.js b/karma-jquery.conf.js index 126b3e1d297d..4af9508d49d8 100644 --- a/karma-jquery.conf.js +++ b/karma-jquery.conf.js @@ -2,7 +2,7 @@ var angularFiles = require('./angularFiles'); var sharedConfig = require('./karma-shared.conf'); module.exports = function(config) { - sharedConfig(config); + sharedConfig(config, {testName: 'AngularJS: jQuery', logFile: 'karma-jquery.log'}); config.set({ files: angularFiles.mergeFilesFor('karmaJquery'), @@ -13,6 +13,4 @@ module.exports = function(config) { suite: 'jQuery' } }); - - config.sauceLabs.testName = 'AngularJS: jQuery'; }; diff --git a/karma-modules.conf.js b/karma-modules.conf.js index 9bbdec673bb3..ecbaee212643 100644 --- a/karma-modules.conf.js +++ b/karma-modules.conf.js @@ -2,7 +2,7 @@ var angularFiles = require('./angularFiles'); var sharedConfig = require('./karma-shared.conf'); module.exports = function(config) { - sharedConfig(config); + sharedConfig(config, {testName: 'AngularJS: modules', logFile: 'karma-modules.log'}); config.set({ files: angularFiles.mergeFilesFor('karmaModules', 'angularSrcModules'), @@ -12,6 +12,4 @@ module.exports = function(config) { suite: 'modules' } }); - - config.sauceLabs.testName = 'AngularJS: modules'; }; diff --git a/karma-shared.conf.js b/karma-shared.conf.js index 06f311081ee8..28978097a9b3 100644 --- a/karma-shared.conf.js +++ b/karma-shared.conf.js @@ -1,4 +1,4 @@ -module.exports = function(config) { +module.exports = function(config, specificOptions) { config.set({ frameworks: ['jasmine'], autoWatch: true, @@ -9,11 +9,13 @@ module.exports = function(config) { // config for Travis CI sauceLabs: { - testName: 'AngularJS', + testName: specificOptions.testName || 'AngularJS', startConnect: false, tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER }, + // For more browsers on Sauce Labs see: + // https://saucelabs.com/docs/platforms/webdriver customLaunchers: { 'SL_Chrome': { base: 'SauceLabs', @@ -51,9 +53,16 @@ module.exports = function(config) { }); - // TODO(vojta): remove once SauceLabs supports websockets. - // This speeds up the capturing a bit, as browsers don't even try to use websocket. if (process.env.TRAVIS) { + // TODO(vojta): remove once SauceLabs supports websockets. + // This speeds up the capturing a bit, as browsers don't even try to use websocket. config.transports = ['xhr-polling']; + + // Debug logging into a file, that we print out at the end of the build. + config.loggers.push({ + type: 'file', + filename: process.env.LOGS_DIR + '/' + (specificOptions.logFile || 'karma.log'), + level: config.LOG_DEBUG + }); } }; diff --git a/lib/sauce/sauce_connect_setup.sh b/lib/sauce/sauce_connect_setup.sh index 7dfb6ba5a438..61ab9e2de835 100755 --- a/lib/sauce/sauce_connect_setup.sh +++ b/lib/sauce/sauce_connect_setup.sh @@ -15,13 +15,16 @@ set -e CONNECT_URL="http://saucelabs.com/downloads/Sauce-Connect-latest.zip" CONNECT_DIR="/tmp/sauce-connect-$RANDOM" CONNECT_DOWNLOAD="Sauce_Connect.zip" -CONNECT_LOG="$CONNECT_DIR/log" + +CONNECT_LOG="$LOGS_DIR/sauce-connect" +CONNECT_STDOUT="$LOGS_DIR/sauce-connect.stdout" +CONNECT_STDERR="$LOGS_DIR/sauce-connect.stderr" # Get Connect and start it mkdir -p $CONNECT_DIR cd $CONNECT_DIR -curl $CONNECT_URL > $CONNECT_DOWNLOAD 2> /dev/null -unzip $CONNECT_DOWNLOAD +curl $CONNECT_URL -o $CONNECT_DOWNLOAD 2> /dev/null 1> /dev/null +unzip $CONNECT_DOWNLOAD > /dev/null rm $CONNECT_DOWNLOAD @@ -36,6 +39,10 @@ if [ ! -z "$SAUCE_CONNECT_READY_FILE" ]; then ARGS="$ARGS --readyfile $SAUCE_CONNECT_READY_FILE" fi -echo "Starting Sauce Connect in the background" -echo "Logging into $CONNECT_LOG" -java -jar Sauce-Connect.jar $ARGS $SAUCE_USERNAME $SAUCE_ACCESS_KEY > $CONNECT_LOG & + +echo "Starting Sauce Connect in the background, logging into:" +echo " $CONNECT_LOG" +echo " $CONNECT_STDOUT" +echo " $CONNECT_STDERR" +java -jar Sauce-Connect.jar $ARGS $SAUCE_USERNAME $SAUCE_ACCESS_KEY \ + --logfile $CONNECT_LOG 2> $CONNECT_STDERR 1> $CONNECT_STDOUT & diff --git a/travis_print_logs.sh b/travis_print_logs.sh new file mode 100755 index 000000000000..ec612ca177fc --- /dev/null +++ b/travis_print_logs.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +LOG_FILES=$LOGS_DIR/* + +for FILE in $LOG_FILES; do + echo -e "\n\n\n" + echo "================================================================================" + echo " $FILE" + echo "================================================================================" + cat $FILE +done