Browse Source

Merge branch 'fix/validate-jenkins-tests-behaviour' into 'develop'

Fix/validate jenkins tests behaviour

See merge request ecentrics/concordia!21
develop
Apostolos Fanakis 4 years ago
parent
commit
62557580b7
  1. 14
      docker/concordia-contracts/test-contracts.sh
  2. 2
      docker/env/ganache.test.env
  3. 78
      jenkins/Jenkinsfile

14
docker/concordia-contracts/test-contracts.sh

@ -3,11 +3,17 @@
export CHAIN_HOST="$TEST_CHAIN_HOST" export CHAIN_HOST="$TEST_CHAIN_HOST"
export CHAIN_PORT="$TEST_CHAIN_PORT" export CHAIN_PORT="$TEST_CHAIN_PORT"
yarn _eslint -f html -o /mnt/concordia/test-reports/concordia-contracts-eslint.html --no-color && yarn _eslint -f html -o /mnt/concordia/test-reports/concordia-contracts-eslint.html --no-color
(yarn _solhint >/mnt/concordia/test-reports/concordia-contracts-solhint.report) && ESLINT_EXIT_STATUS=$?
(yarn test --network env >/mnt/concordia/test-reports/concordia-contracts-truffle-tests.report)
if [ $? -eq 0 ]; then yarn _solhint >/mnt/concordia/test-reports/concordia-contracts-solhint.report
SOLHINT_EXIT_STATUS=$?
yarn test --network env >/mnt/concordia/test-reports/concordia-contracts-truffle-tests.report
grep -qE failing /mnt/concordia/test-reports/concordia-contracts-truffle-tests.report
TRUFFLE_TEST_FAILING=$?
if [ $ESLINT_EXIT_STATUS -eq 0 ] && [ "$SOLHINT_EXIT_STATUS" -eq 0 ] && [ "$TRUFFLE_TEST_FAILING" -eq 1 ]; then
echo "TESTS RAN SUCCESSFULLY!" echo "TESTS RAN SUCCESSFULLY!"
exit 0 exit 0
else else

2
docker/env/ganache.test.env

@ -1,5 +1,5 @@
ACCOUNTS_NUMBER=5 ACCOUNTS_NUMBER=5
ACCOUNTS_ETHER=1 ACCOUNTS_ETHER=100
MNEMONIC="myth like bonus scare over problem client lizard pioneer submit female collect" MNEMONIC="myth like bonus scare over problem client lizard pioneer submit female collect"
HOST=0.0.0.0 HOST=0.0.0.0
PORT=8546 PORT=8546

78
jenkins/Jenkinsfile

@ -1,6 +1,7 @@
#!groovy #!groovy
def cleanSlateEnabled def cleanSlateEnabled
def sanitizedBranchName
// Package change state // Package change state
def appPackageChanged def appPackageChanged
@ -18,9 +19,7 @@ def sharedPackageVersion
// Docker images // Docker images
def appImage def appImage
def appTestsImage
def contractsImage def contractsImage
def contractsTestsImage
def contractsProviderImage def contractsProviderImage
def pinnerImage def pinnerImage
@ -84,6 +83,7 @@ pipeline {
steps { steps {
script { script {
cleanSlateEnabled = sh (script: "git log -1 | grep -qE 'ci: force'", returnStatus: true) cleanSlateEnabled = sh (script: "git log -1 | grep -qE 'ci: force'", returnStatus: true)
sanitizedBranchName = sh(script: 'echo $GIT_BRANCH | sed -e "s:.*/::g"', returnStdout: true).trim()
appPackageChanged = sh(script: 'bash ./jenkins/check_package_changed.sh app "$GIT_COMMIT" "$GIT_PREVIOUS_COMMIT"', returnStdout: true).trim() appPackageChanged = sh(script: 'bash ./jenkins/check_package_changed.sh app "$GIT_COMMIT" "$GIT_PREVIOUS_COMMIT"', returnStdout: true).trim()
contractsPackageChanged = sh(script: 'bash ./jenkins/check_package_changed.sh contracts "$GIT_COMMIT" "$GIT_PREVIOUS_COMMIT"', returnStdout: true).trim() contractsPackageChanged = sh(script: 'bash ./jenkins/check_package_changed.sh contracts "$GIT_COMMIT" "$GIT_PREVIOUS_COMMIT"', returnStdout: true).trim()
@ -111,44 +111,46 @@ pipeline {
stage('TEST CONTRACTS') { stage('TEST CONTRACTS') {
steps { steps {
script { script {
try { def ganacheTestPort = sh(script: "bash ./jenkins/hash_build_properties.sh ${BRANCH_NAME} ${BUILD_NUMBER} | xargs bash ./jenkins/map_to_thousand.sh", returnStdout: true).trim()
def ganacheTestPort = sh(script: "bash ./jenkins/hash_build_properties.sh ${BRANCH_NAME} ${BUILD_NUMBER} | xargs bash ./jenkins/map_to_thousand.sh", returnStdout: true).trim()
def ganacheTestImage = docker.build(
"ecentrics/concordia-ganache",
"-f docker/ganache/Dockerfile \
./"
)
def ganacheTestImage = docker.build( docker.build(
"ecentrics/concordia-ganache", "ecentrics/concordia-contracts-tests:${sanitizedBranchName}-v${contractsPackageVersion}-b${BUILD_NUMBER}-tests",
"-f docker/ganache/Dockerfile \ "-f docker/concordia-contracts/Dockerfile \
./" ./ \
) --target test \
--build-arg TZ=Europe/Athens"
)
sh 'docker network create --driver bridge concordia_ganache_test_network || true' sh 'docker network create --driver bridge concordia_ganache_test_network || true'
ganacheTestImage.withRun("""-d -p 6${ganacheTestPort}:8546 \ ganacheTestImage.withRun("""-d -p 6${ganacheTestPort}:8546 \
--env-file=./jenkins/env/ganache.test.jenkins.env \ --env-file=./jenkins/env/ganache.test.jenkins.env \
--name concordia-ganache-test-6${ganacheTestPort} \ --name concordia-ganache-test-6${ganacheTestPort} \
--net=concordia_ganache_test_network""") { concordiaGanacheTest -> --net=concordia_ganache_test_network""") { concordiaGanacheTest ->
contractsTestsImage = docker.build( try {
"ecentrics/concordia-contracts-tests:v${contractsPackageVersion}-b${BUILD_NUMBER}-tests", sh """docker run \
"-f docker/concordia-contracts/Dockerfile \ --rm \
./ \ -v ecentrics_janus_common:/mnt/concordia/test-reports/ \
--target test \ --env-file=./jenkins/env/contracts.test.jenkins.env \
--build-arg TZ=Europe/Athens" -e WEB3_HOST=concordia-ganache-test-6${ganacheTestPort} \
) -e WEB3_PORT=6${ganacheTestPort} \
--net=concordia_ganache_test_network \
contractsTestsImage.run("""--rm \ ecentrics/concordia-contracts-tests:${sanitizedBranchName}-v${contractsPackageVersion}-b${BUILD_NUMBER}-tests"""
-v ecentrics_janus_common:/mnt/concordia/test-reports/ \ } catch (e) {
--env-file=./jenkins/env/contracts.test.jenkins.env \ error('Some tests failed!')
-e WEB3_HOST=concordia-ganache-test-6${ganacheTestPort} \ error('Aborting the build.')
-e WEB3_PORT=6${ganacheTestPort} \ throw e
--net=concordia_ganache_test_network""") } finally {
sh 'mkdir -p ./reports/${BUILD_NUMBER}/contracts' sh 'mkdir -p ./reports/${BUILD_NUMBER}/contracts'
sh 'find /mnt/janus/common/ -name "concordia-contracts-*" -exec cp \'{}\' ./reports/${BUILD_NUMBER}/contracts/ \\;' sh 'find /mnt/janus/common/ -name "concordia-contracts-*" -exec cp \'{}\' ./reports/${BUILD_NUMBER}/contracts/ \\;'
} }
} catch (e) {
error('Some tests failed!')
error('Aborting the build.')
throw e
} }
} }
} }
@ -157,8 +159,8 @@ pipeline {
stage('TEST APP') { stage('TEST APP') {
steps { steps {
script { script {
appTestsImage = docker.build( docker.build(
"ecentrics/concordia-app:v${appPackageVersion}-b${BUILD_NUMBER}-tests", "ecentrics/concordia-app:${sanitizedBranchName}-v${appPackageVersion}-b${BUILD_NUMBER}-tests",
"-f docker/concordia-app/Dockerfile \ "-f docker/concordia-app/Dockerfile \
./ \ ./ \
--target test \ --target test \
@ -166,15 +168,17 @@ pipeline {
) )
try { try {
appTestsImage.run('--rm \ sh """docker run \
-v ecentrics_janus_common:/mnt/concordia/test-reports/') --rm \
-v ecentrics_janus_common:/mnt/concordia/test-reports/ \
sh 'mkdir -p ./reports/${BUILD_NUMBER}/app' ecentrics/concordia-app:${sanitizedBranchName}-v${appPackageVersion}-b${BUILD_NUMBER}-tests"""
sh 'find /mnt/janus/common/ -name "concordia-app-*" -exec cp \'{}\' ./reports/${BUILD_NUMBER}/app/ \\;'
} catch (e) { } catch (e) {
error('Some tests failed!') error('Some tests failed!')
error('Aborting the build.') error('Aborting the build.')
throw e throw e
} finally {
sh 'mkdir -p ./reports/${BUILD_NUMBER}/app'
sh 'find /mnt/janus/common/ -name "concordia-app-*" -exec cp \'{}\' ./reports/${BUILD_NUMBER}/app/ \\;'
} }
} }
} }

Loading…
Cancel
Save