library 'status-jenkins-lib@v1.3.4' pipeline { agent { label 'linux-01' } parameters { booleanParam( name: 'RELEASE', description: 'Decides whether binaries are built with debug symbols.', defaultValue: params.RELEASE ?: false ) choice( name: 'VERBOSE', description: 'Level of verbosity based on nimbus-build-system setup.', choices: ['0', '1', '2'] ) } options { timestamps() /* Prevent Jenkins jobs from running forever */ timeout(time: 60, unit: 'MINUTES') /* manage how many builds we keep */ buildDiscarder(logRotator( numToKeepStr: '10', daysToKeepStr: '30', artifactNumToKeepStr: '3', )) } environment { TARGET = 'e2e' /* Improve make performance */ MAKEFLAGS = "-j4 V=${params.VERBOSE}" /* Disable colors in Nim compiler logs */ NIMFLAGS = '--colors:off' /* Makefile assumes the compiler folder is included */ QTDIR = "/opt/qt/5.14.2/gcc_64" /* Control output the filename */ STATUS_CLIENT_APPIMAGE = "pkg/${utils.pkgFilename(ext: 'AppImage')}" STATUS_CLIENT_TARBALL = "pkg/${utils.pkgFilename(ext: 'tar.gz')}" /* Include library in order to compile the project */ LD_LIBRARY_PATH = "$QTDIR/lib:$WORKSPACE/vendor/status-go/build/bin:$WORKSPACE/vendor/status-keycard-go/build/libkeycard/" INFURA_TOKEN = "cd313fedd0dd4699b194d72b5184be06" } stages { stage('Deps') { steps { /* trigger fetching of git submodules */ sh 'make check-pkg-target-linux' /* TODO: Re-add caching of Nim compiler. */ sh 'make deps' } } stage('status-go') { steps { sh 'make status-go' } } stage('build') { steps { sh 'make' } } stage('Tests') { steps { wrap([ $class: 'Xvfb', autoDisplayName: true, parallelBuild: true, screen: '2560x1440x24', ]) { script { def res = squish([ extraOptions: ''' --retry 2 --tags ~mayfail --config addAUT nim_status_client ${WORKSPACE}/bin ''', squishPackageName: 'squish-6.7.2-qt514x-linux64', testSuite: '${WORKSPACE}/test/ui-test/testSuites/*', ]) if ( res != "SUCCESS" ) { throw new Exception("squish test didn't end with success") } } } } } } post { success { script { github.notifyPR(true) } } failure { script { github.notifyPR(false) } } always { cleanWs() } } }