From e6c0be88984225761f1271c80207e10a7ed34b60 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 1 Sep 2015 12:28:58 +0200 Subject: [PATCH] move tests into common script for jenkins and gitlab-ci --- .gitlab-ci.yml | 9 ++-- jenkins-build | 89 +---------------------------------- tests/complete-ci-tests | 101 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 107 insertions(+), 92 deletions(-) create mode 100755 tests/complete-ci-tests diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 628ffe48..309695bd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,9 +3,9 @@ before_script: - echo " == Installing required packages" - apt-get -q install -y wget tar lib32stdc++6 lib32z1 python pyflakes pep8 dash bash ruby - python-imaging python-libcloud python-magic python-paramiko - python-pyasn1 python-pyasn1-modules python-requests - python-yaml + python-imaging python-libcloud python-logilab-astng python-magic + python-paramiko python-pip python-pyasn1 python-pyasn1-modules + python-requests python-yaml rsync - echo " == Installing OpenJDK 7" - apt-get -q install -y openjdk-7-jdk @@ -22,6 +22,5 @@ before_script: test: script: - - ./hooks/pre-commit - cd tests - - ./run-tests + - ./complete-ci-tests diff --git a/jenkins-build b/jenkins-build index 7e54312d..b7e5fd05 100755 --- a/jenkins-build +++ b/jenkins-build @@ -12,91 +12,6 @@ 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 tests, don't scan fdroidserver/ project for APKs - # this is a local repo on the Guardian Project Jenkins server -apksource=/var/www/fdroid - -cd $WORKSPACE/tests -./run-tests $apksource - - -#------------------------------------------------------------------------------# -# test building the source tarball, then installing it -cd $WORKSPACE -python2 setup.py sdist - -rm -rf $WORKSPACE/env -virtualenv --python=python2 $WORKSPACE/env -. $WORKSPACE/env/bin/activate -pip install dist/fdroidserver-*.tar.gz - -# run tests in new pip+virtualenv install -fdroid=$WORKSPACE/env/bin/fdroid $WORKSPACE/tests/run-tests $apksource - - -#------------------------------------------------------------------------------# -# test install using install direct from git repo -cd $WORKSPACE -rm -rf $WORKSPACE/env -virtualenv --python=python2 --system-site-packages $WORKSPACE/env -. $WORKSPACE/env/bin/activate -pip install -e $WORKSPACE -python2 setup.py install - -# run tests in new pip+virtualenv install -fdroid=$WORKSPACE/env/bin/fdroid $WORKSPACE/tests/run-tests $apksource - - -#------------------------------------------------------------------------------# -# run git pre-commit hook for pep8, pyflakes, etc -sh hooks/pre-commit - - -#------------------------------------------------------------------------------# -# run pylint - -cd $WORKSPACE -set +e -# use the virtualenv python so pylint checks against its installed libs - PYTHONPATH=$WORKSPACE/.pylint-plugins python2 /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 - +cd tests +./complete-ci-tests /var/www/fdroid diff --git a/tests/complete-ci-tests b/tests/complete-ci-tests new file mode 100755 index 00000000..e9595b03 --- /dev/null +++ b/tests/complete-ci-tests @@ -0,0 +1,101 @@ +#!/bin/bash +# +# this is the script run by the Jenkins and gitlab-ci continuous integration +# build services. It is a thorough set of tests that runs all the tests using +# the various methods of installing/running fdroidserver. It is separate from +# ./tests/run-tests because its too heavy for manual use. + +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 + +apksource=$1 + +#------------------------------------------------------------------------------# +# 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 tests, don't scan fdroidserver/ project for APKs + +cd $WORKSPACE/tests +./run-tests $apksource + + +#------------------------------------------------------------------------------# +# test building the source tarball, then installing it +cd $WORKSPACE +python2 setup.py sdist + +rm -rf $WORKSPACE/env +virtualenv --python=python2 $WORKSPACE/env +. $WORKSPACE/env/bin/activate +pip install dist/fdroidserver-*.tar.gz + +# run tests in new pip+virtualenv install +fdroid=$WORKSPACE/env/bin/fdroid $WORKSPACE/tests/run-tests $apksource + + +#------------------------------------------------------------------------------# +# test install using install direct from git repo +cd $WORKSPACE +rm -rf $WORKSPACE/env +virtualenv --python=python2 --system-site-packages $WORKSPACE/env +. $WORKSPACE/env/bin/activate +pip install -e $WORKSPACE +python2 setup.py install + +# run tests in new pip+virtualenv install +fdroid=$WORKSPACE/env/bin/fdroid $WORKSPACE/tests/run-tests $apksource + + +#------------------------------------------------------------------------------# +# run git pre-commit hook for pep8, pyflakes, etc +sh hooks/pre-commit + + +#------------------------------------------------------------------------------# +# run pylint + +cd $WORKSPACE +set +e +# use the virtualenv python so pylint checks against its installed libs + PYTHONPATH=$WORKSPACE/.pylint-plugins python2 /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 + -- 2.30.2