#!/usr/bin/env groovy library 'status-jenkins-lib@v1.9.16' /* Options section can't access functions in objects. */ def isPRBuild = utils.isPRBuild() pipeline { agent { docker { label 'linux' image 'statusteam/nim-status-client-build:1.5.0-qt5.15.2' } } parameters { choice( name: 'VERBOSE', description: 'Level of verbosity based on nimbus-build-system setup.', choices: ['0', '1', '2'] ) string( name: 'NIMFLAGS', description: 'Extra Nim flags. Examples: --verbosity:2 --passL:"-v" --passC:"-v"', defaultValue: '--colors:off' ) } options { timestamps() /* Prevent Jenkins jobs from running forever */ timeout(time: 20, unit: 'MINUTES') /* manage how many builds we keep */ buildDiscarder(logRotator( numToKeepStr: '10', daysToKeepStr: '30', artifactNumToKeepStr: '1', )) /* Abort old PR builds. */ disableConcurrentBuilds( abortPrevious: isPRBuild ) } environment { PLATFORM = 'tests/nim' /* Improve make performance */ MAKEFLAGS = "-j${utils.getProcCount()} V=${params.VERBOSE}" /* Makefile assumes the compiler folder is included */ QTDIR = "/opt/qt/5.15.2/gcc_64" /* Avoid weird bugs caused by stale cache. */ QML_DISABLE_DISK_CACHE = "true" /* Include library in order to compile the project */ LD_LIBRARY_PATH = "$QTDIR/lib" } stages { stage('Deps') { steps { sh 'make update' sh 'make deps' } } stage('Tests') { steps { sh 'make tests-nim-linux V=1' } } } post { success { script { github.notifyPR(true) } } failure { script { github.notifyPR(false) } } always { script { env.PKG_URL = "${currentBuild.absoluteUrl}/consoleText" } } cleanup { cleanWs() } } }