From 7c632e40c0b4faaa17b7137aa7bc0a10d5319d00 Mon Sep 17 00:00:00 2001 From: Prem Chaitanya Prathi Date: Mon, 7 Aug 2023 21:21:12 +0530 Subject: [PATCH] chore: add new jenkins job file to run tests with race flag --- ci/Jenkinsfile.testsWithRace | 74 ++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 ci/Jenkinsfile.testsWithRace diff --git a/ci/Jenkinsfile.testsWithRace b/ci/Jenkinsfile.testsWithRace new file mode 100644 index 00000000..b234bf59 --- /dev/null +++ b/ci/Jenkinsfile.testsWithRace @@ -0,0 +1,74 @@ +library 'status-jenkins-lib@v1.7.0' + +pipeline { + agent { + label 'linux && nix-2.11 && x86_64' + } + + options { + timestamps() + disableConcurrentBuilds() + /* Prevent Jenkins jobs from running forever */ + timeout(time: 30, unit: 'MINUTES') + /* Go requires a certain directory structure */ + checkoutToSubdirectory('src/github.com/waku-org/go-waku') + buildDiscarder(logRotator( + numToKeepStr: '10', + daysToKeepStr: '30', + )) + } + + environment { + TARGET = 'tests-with-race' + REPO = "${env.WORKSPACE}/src/github.com/waku-org/go-waku" + GOCACHE = "${env.WORKSPACE_TMP}/go-build" + GOPATH = "${env.WORKSPACE}/go" + PATH = "${env.PATH}:${env.GOPATH}/bin" + /* Necesary to avoid cache poisoning by other builds. */ + GOLANGCI_LINT_CACHE = "${env.WORKSPACE_TMP}/golangci-lint" + /* Ganache config */ + GANACHE_RPC_PORT = "${8989 + env.EXECUTOR_NUMBER.toInteger()}" + GANACHE_MNEMONIC = 'swim relax risk shy chimney please usual search industry board music segment' + } + + stages { + stage('Test') { + steps { script { dir(env.REPO) { + nix.develop('make test-with-race', pure: false) + } } } + } + + stage('Ganache') { + steps { script { + ganache = docker.image( + 'trufflesuite/ganache:v7.4.1' + ).run( + "-p 127.0.0.1:${env.GANACHE_RPC_PORT}:8545", + "-m='${GANACHE_MNEMONIC}'" + ) + } } + } + + stage('On-chain tests') { + environment { + GANACHE_NETWORK_RPC_URL = "ws://localhost:${env.GANACHE_RPC_PORT}" + } + steps { script { dir(env.REPO) { + nix.develop('make test-onchain-with-race', pure: false) + } } } + } + } + post { + always { script { /* No artifact but a PKG_URL is necessary. */ + env.PKG_URL = "${currentBuild.absoluteUrl}consoleText" + } } + success { script { github.notifyPR(true) } } + failure { script { github.notifyPR(false) } } + cleanup { script { + cleanWs() + catchError { + ganache.stop() + } + } } + } +}