mirror of
https://github.com/status-im/status-desktop.git
synced 2025-01-28 07:15:21 +00:00
7a3a984fa4
Fixes #9210 Adds the `TEST_ENVIRONMENT` that stops banners from showing and touch id to be activated (needs to be tested by someone on Mac). Also improves the waiting time on verifying screens. Will undo that change if it becomes flaky. To make sure your local tests still work well and hide the banner as well, make sure to put `TEST_ENVIRONMENT=1` in the suite settings' env vars
184 lines
5.2 KiB
Plaintext
184 lines
5.2 KiB
Plaintext
library 'status-jenkins-lib@v1.6.3'
|
|
|
|
/* Options section can't access functions in objects. */
|
|
def isPRBuild = utils.isPRBuild()
|
|
|
|
pipeline {
|
|
agent { label 'linux' }
|
|
|
|
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: 120, unit: 'MINUTES')
|
|
/* manage how many builds we keep */
|
|
buildDiscarder(logRotator(
|
|
numToKeepStr: '10',
|
|
daysToKeepStr: '30',
|
|
artifactNumToKeepStr: '3',
|
|
))
|
|
/* Throttle number of concurrent builds. */
|
|
throttleJobProperty(
|
|
throttleEnabled: true,
|
|
throttleOption: 'category',
|
|
maxConcurrentPerNode: 1,
|
|
maxConcurrentTotal: 10
|
|
)
|
|
/* Abort old PR builds. */
|
|
disableConcurrentBuilds(
|
|
abortPrevious: isPRBuild
|
|
)
|
|
}
|
|
|
|
environment {
|
|
TARGET = 'linux-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'
|
|
/* 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/"
|
|
/* Container ports */
|
|
RPC_PORT = "${8545 + env.EXECUTOR_NUMBER.toInteger()}"
|
|
P2P_PORT = "${6010 + env.EXECUTOR_NUMBER.toInteger()}"
|
|
/* Ganache config */
|
|
GANACHE_RPC_PORT = "${9545 + env.EXECUTOR_NUMBER.toInteger()}"
|
|
GANACHE_MNEMONIC = 'pelican chief sudden oval media rare swamp elephant lawsuit wheat knife initial'
|
|
TEST_ENVIRONMENT = '1'
|
|
}
|
|
|
|
stages {
|
|
stage('Deps') {
|
|
steps {
|
|
sh 'make update'
|
|
sh 'make deps'
|
|
}
|
|
}
|
|
|
|
stage('status-go') {
|
|
steps {
|
|
sh 'make status-go'
|
|
}
|
|
}
|
|
|
|
stage('build') {
|
|
environment {
|
|
GANACHE_NETWORK_RPC_URL = "http://localhost:${env.GANACHE_RPC_PORT}"
|
|
}
|
|
steps {
|
|
sh 'make'
|
|
}
|
|
}
|
|
|
|
stage('Containers') {
|
|
parallel {
|
|
stage('Ganache') { steps { script {
|
|
ganache = docker.image(
|
|
'trufflesuite/ganache:v7.4.1'
|
|
).run(
|
|
["-p 127.0.0.1:${env.GANACHE_RPC_PORT}:8545",
|
|
"-v ${env.WORKSPACE}/test/ui-test/fixtures/ganache-dbs/goerli:/goerli-db"].join(' '),
|
|
["-m='${GANACHE_MNEMONIC}'", "-e=10",
|
|
'--chain.chainId=5',
|
|
'--database.dbPath=/goerli-db'].join(' ')
|
|
)
|
|
} } }
|
|
|
|
stage('Nim-Waku') { steps { script {
|
|
nimwaku = docker.image(
|
|
'statusteam/nim-waku:v0.13.0'
|
|
).run(
|
|
["-p 127.0.0.1:${env.RPC_PORT}:8545",
|
|
"-p 127.0.0.1:${env.P2P_PORT}:30303/tcp",
|
|
"-p 127.0.0.1:${env.P2P_PORT}:30303/udp",
|
|
"-v ${env.WORKSPACE}/ci/mailserver/config.json:/config.json"].join(' '),
|
|
['--store=true',
|
|
'--keep-alive=true',
|
|
'--rpc-address=0.0.0.0',
|
|
'--nat=none'].join(' ')
|
|
)
|
|
env.TEST_PEER_ENR = getPeerAddress()
|
|
} } }
|
|
}
|
|
}
|
|
|
|
stage('Tests') {
|
|
options {
|
|
throttle(categories: ['status-desktop-e2e-tests'])
|
|
}
|
|
steps { script {
|
|
wrap([
|
|
$class: 'Xvfb',
|
|
autoDisplayName: true,
|
|
parallelBuild: true,
|
|
screen: '2560x1440x24',
|
|
]) { script {
|
|
def result = squish([
|
|
extraOptions: [
|
|
'--retry', '2',
|
|
'--tags', '~mayfail',
|
|
'--tags', '~merge',
|
|
'--tags', '~relyon-mailserver',
|
|
'--config', 'addAUT', 'nim_status_client',
|
|
"${WORKSPACE}/bin",
|
|
].join('\n'),
|
|
squishPackageName: 'squish-6.7.2-qt514x-linux64',
|
|
testSuite: "${WORKSPACE}/test/ui-test/testSuites/*",
|
|
])
|
|
print("Squish run result: ${result}")
|
|
/* Ignore UNSTABLE caused by retried tests. */
|
|
if (!['SUCCESS', 'UNSTABLE'].contains(result)) {
|
|
throw new Exception('Squish run failed!')
|
|
}
|
|
} }
|
|
} }
|
|
post {
|
|
failure { script {
|
|
sh("docker logs ${nimwaku.id}")
|
|
sh("docker logs ${ganache.id}")
|
|
} }
|
|
}
|
|
}
|
|
}
|
|
|
|
post {
|
|
success { script {
|
|
github.notifyPR(true)
|
|
} }
|
|
failure { script {
|
|
github.notifyPR(false)
|
|
} }
|
|
always { script { /* No artifact but a PKG_URL is necessary. */
|
|
env.PKG_URL = "${currentBuild.absoluteUrl}/consoleText"
|
|
} }
|
|
cleanup { script {
|
|
sh './scripts/clean-git.sh'
|
|
if (binding.hasVariable('ganache')) { ganache.stop() }
|
|
if (binding.hasVariable('nimwaku')) { nimwaku.stop() }
|
|
} }
|
|
}
|
|
}
|
|
|
|
def getPeerAddress() {
|
|
def rpcResp = sh(
|
|
script: "${env.WORKSPACE}/scripts/rpc.sh get_waku_v2_debug_v1_info",
|
|
returnStdout: true
|
|
).trim()
|
|
assert rpcResp : 'Could not get node address from RPC API!'
|
|
return readJSON(text: rpcResp)['result']['listenAddresses'][0]
|
|
}
|