fdroidserver/jenkins-build
Hans-Christoph Steiner 9b313e76bb tests: specify dir for APKs as cmd line arg, and set jenkins to ~
This lets people easily set whatever dir they want, while letting jenkins
search through its whole workspace for any APKs that have been built. Also,
only include the latest version of a given packageName+versionCode.
2014-06-04 22:01:25 -04:00

96 lines
2.7 KiB
Bash
Executable file

#!/bin/bash
#
# this is the script run by the Jenkins server to run the build and tests. Be
# sure to always run it in its dir, i.e. ./jenkins-build.sh, otherwise it might
# remove things that you don't want it to.
if [ `dirname $0` != "." ]; then
echo "only run this script like ./`basename $0`"
exit
fi
set -e
set -x
if [ -z $WORKSPACE ]; then
export WORKSPACE=`pwd`
fi
if [ -z $ANDROID_HOME ]; then
if [ -e ~/.android/bashrc ]; then
. ~/.android/bashrc
else
echo "ANDROID_HOME must be set!"
exit
fi
fi
#------------------------------------------------------------------------------#
# cache pypi downloads
if [ -z $PIP_DOWNLOAD_CACHE ]; then
export PIP_DOWNLOAD_CACHE=$HOME/.pip_download_cache
fi
#------------------------------------------------------------------------------#
# required Java 7 keytool/jarsigner for :file support
export PATH=/usr/lib/jvm/java-7-openjdk-amd64/bin:$PATH
#------------------------------------------------------------------------------#
# run local build
cd $WORKSPACE/fdroidserver/getsig
./make.sh
#------------------------------------------------------------------------------#
# run local tests
cd $WORKSPACE/tests
./run-tests ~jenkins/
#------------------------------------------------------------------------------#
# test building the source tarball
cd $WORKSPACE
python setup.py sdist
#------------------------------------------------------------------------------#
# test install using site packages
cd $WORKSPACE
rm -rf $WORKSPACE/env
virtualenv --system-site-packages $WORKSPACE/env
. $WORKSPACE/env/bin/activate
pip install -e $WORKSPACE
python setup.py install
# run tests in new pip+virtualenv install
. $WORKSPACE/env/bin/activate
fdroid=$WORKSPACE/env/bin/fdroid $WORKSPACE/tests/run-tests ~jenkins/
#------------------------------------------------------------------------------#
# run pyflakes
pyflakes fdroid makebuildserver fdroidserver/*.py setup.py
#------------------------------------------------------------------------------#
# run pylint
cd $WORKSPACE
set +e
# use the virtualenv python so pylint checks against its installed libs
PYTHONPATH=$WORKSPACE/.pylint-plugins python /usr/bin/pylint \
--output-format=parseable --reports=n \
--load-plugins astng_hashlib \
fdroidserver/*.py fdroid makebuildserver setup.py > $WORKSPACE/pylint.parseable
# to only tell jenkins there was an error if we got ERROR or FATAL, uncomment these:
# running pylint in the virtualenv is causing this FATAL error, which is a bug:
# https://bitbucket.org/logilab/pylint/issue/73/pylint-is-unable-to-import
[ $(($? & 1)) = "1" ] && echo "FATALs found"
[ $(($? & 2)) = "2" ] && exit 2
[ $(($? & 4)) = "4" ] && exit 4
set -e