travis: run quorum-acceptance-tests for pull requests (#637)

* update travis to enable running acceptance test for raft, istanbul and clique consensus when a PR is raised
This commit is contained in:
amalraj 2019-02-23 05:24:15 +08:00 committed by Samer Falah
parent 212b25c566
commit 9a3184ba19
3 changed files with 125 additions and 1 deletions

View File

@ -1,4 +1,6 @@
# simplifed version of the upstream travis configuration
# simplified version of the upstream travis configuration with additional features
# 1. Distribute binaries to bintray from Tag
# 2. Run quorum-acceptance-tests for Pull Requests
language: go
go_import_path: github.com/ethereum/go-ethereum
@ -7,14 +9,67 @@ sudo: true
branches:
only:
- /.*/ # everything including tags
env:
global:
- BINTRAY_ORGANIZATION=quorumengineering
- BINTRAY_USER=quorumbot
# Bintray API Key
- secure: "QHiPcd3zQoJEsT3VSpxoLVTYwbiYzS8H18EpY7Tk0EqCIfswS2AvRlyRXUxNvCf9ktzpaeXV4b5cPYJ67dwdp5V/O/ARaK5AL6ZjjrTPR1avPnmz/X2VeQEP0aWk1UGMs1nBUj5rzMbIIxlVhpbiITTLAI4Ao0+xRcBi215mDbv271Z7mACEZfXxjaoJA0/3IkbKz9pu1nC7bTjaaExCDAeLp2p8fHi2YQPnBll/7dkn/m1rnsIY9M3KWNCx6xBmQOr1hulrrB6tZoHwFBoDsVTFJFLckPfrWUZsYUgtfWJMQWc6ntv1gFl0f9x6s5fYEphCU2m1JYjEczlQ03B5ro9EyPGKjO7vQxAaFd5nVd2Xf34ZbssEIyXxlSnP/4Gv1GXl9L9aU1Hth9ckYvT5gYP5t/Nw3CDbKD0HelPBvkf8jZwfdlotzFPS2bOZNdl/rJLWgQrX18a/mC3BH9l4TSRz13tbRfo6YcC3Y/uOvG1n4GxzcVaWojAxn86SkknOczPTf2pk9F3JOcGVSYA2R4kGQAe+ErJH2X5g2sh1D5cCYDjQyl5rzWg6P3eK//HYW+mg2+TQ8k2iQVVSwFwrR0Yn4P+5cRDCW9mjtktgq1rTtslj41gSH49Avqr9oXGM2rqdcJPdN8dnmLMrAtmeSUNMMoexiRMmlF2OQKLrW3k="
matrix:
include:
#raft consensus
- if: tag IS blank AND type = pull_request
name: acceptance-tests-raft
os: linux
dist: trusty
git:
submodules: false
cache:
directories:
- $HOME/.m2
env:
- TF_VAR_consensus_mechanism=raft
install:
- $TRAVIS_BUILD_DIR/build/travis-install-linux.sh
script:
- $TRAVIS_BUILD_DIR/build/travis-run-acceptance-tests-linux.sh
#istanbul consensus
- if: tag IS blank AND type = pull_request
name: acceptance-tests-istanbul
os: linux
dist: trusty
git:
submodules: false
cache:
directories:
- $HOME/.m2
env:
- TF_VAR_consensus_mechanism=istanbul
install:
- $TRAVIS_BUILD_DIR/build/travis-install-linux.sh
script:
- $TRAVIS_BUILD_DIR/build/travis-run-acceptance-tests-linux.sh
#clique consensus
- if: tag IS blank AND type = pull_request
name: acceptance-tests-clique
os: linux
dist: trusty
git:
submodules: false
cache:
directories:
- $HOME/.m2
env:
- TF_VAR_consensus_mechanism=clique
install:
- $TRAVIS_BUILD_DIR/build/travis-install-linux.sh
script:
- $TRAVIS_BUILD_DIR/build/travis-run-acceptance-tests-linux.sh
- if: tag IS blank
os: linux
dist: xenial
@ -43,6 +98,7 @@ matrix:
- sudo mkdir -p /dist
- cd build/bin
- sudo tar cfvz /dist/${OUTPUT_FILE} geth
- if: tag IS present
os: osx
osx_image: xcode9.2

50
build/travis-install-linux.sh Executable file
View File

@ -0,0 +1,50 @@
#!/bin/bash
set -e
# install geth and dependencies for acceptance tests
echo "---> install started ..."
echo "---> installing tools ..."
sudo apt-get update
# upgrade dpkg to fix issue with trusty: dpkg-deb: error
sudo apt-get -y install dpkg
# Travis pre-installs jdk11 by default.
# However, Tessera 0.8 requires jre8 to run so we use jdk_switcher utility from Travis
if test -f ${HOME}/.jdk_switcher_rc; then
. ${HOME}/.jdk_switcher_rc
fi
if test -f /opt/jdk_switcher/jdk_switcher.sh; then
. /opt/jdk_switcher/jdk_switcher.sh
fi
jdk_switcher use openjdk8
java -version
mvn --version
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt update
sudo apt-get -y install solc
solc --version
echo "---> tools installation done"
echo "---> building geth ..."
sudo modprobe fuse
sudo chmod 666 /dev/fuse
sudo chown root:${USER} /etc/fuse.conf
go run build/ci.go install
echo "---> building geth done"
echo "---> cloning quorum-cloud and quorum-acceptance-tests ..."
git clone https://github.com/jpmorganchase/quorum-acceptance-tests.git ${TRAVIS_HOME}/quorum-acceptance-tests
git clone https://github.com/jpmorganchase/quorum-cloud.git ${TRAVIS_HOME}/quorum-cloud
echo "---> cloning done"
echo "---> getting tessera jar ..."
wget https://github.com/jpmorganchase/tessera/releases/download/tessera-0.8/tessera-app-0.8-app.jar -O $HOME/tessera.jar -q
echo "---> tessera done"
echo "---> getting gauge jar ..."
wget https://github.com/getgauge/gauge/releases/download/v1.0.4/gauge-1.0.4-linux.x86_64.zip -O gauge.zip -q
sudo unzip -o gauge.zip -d /usr/local/bin
gauge telemetry off
cd ${TRAVIS_HOME}/quorum-acceptance-tests
gauge install
echo "---> gauge installation done"
echo "---> install done"

View File

@ -0,0 +1,18 @@
#!/bin/bash
set -e
# start network and run acceptance tests
echo "---> start quorum network for consensus ${TF_VAR_consensus_mechanism} ..."
export PATH=${TRAVIS_BUILD_DIR}/build/bin:$PATH
export TESSERA_JAR=${HOME}/tessera.jar
cd ${TRAVIS_HOME}/quorum-cloud/travis/4nodes
./init.sh ${TF_VAR_consensus_mechanism}
./start.sh ${TF_VAR_consensus_mechanism} tessera
echo "---> network started"
cd ${TRAVIS_HOME}/quorum-acceptance-tests
cp config/application-local.4nodes.yml config/application-local.yml
echo "---> run acceptance tests for consensus ${TF_VAR_consensus_mechanism} ..."
./src/travis/run_tests.sh
echo "---> acceptance tests finished"
echo "---> stop the network..."
${TRAVIS_HOME}/quorum-cloud/travis/4nodes/stop.sh
echo "---> network stopped"