Allows MixPanel to be configured per environment. The hardcoded MixPanel app ID and token are removed from the code (see the parent issue for more details). The token can be exploited and that’s by design in most analytics tools https://developer.mixpanel.com/reference/project-token. Fixes https://github.com/status-im/status-mobile/issues/21974 Areas that may be impacted - Analytics
117 lines
2.9 KiB
Groovy
117 lines
2.9 KiB
Groovy
#!/usr/bin/env groovy
|
|
library 'status-jenkins-lib@v1.9.20'
|
|
|
|
pipeline {
|
|
|
|
agent { label 'linux' }
|
|
|
|
parameters {
|
|
string(
|
|
name: 'APK_BUILD_NUMBER',
|
|
description: 'platform/e2e build number for apk artifact',
|
|
)
|
|
string(
|
|
name: 'KEYWORD_EXPRESSION',
|
|
description: 'This will run tests which contain names that match the given string expression (Optional)',
|
|
defaultValue: '',
|
|
)
|
|
string(
|
|
name: 'BRANCH',
|
|
description: 'Name of the branch to checkout and build.',
|
|
defaultValue: 'develop',
|
|
)
|
|
string(
|
|
name: 'TR_CASE_IDS',
|
|
description: 'IDs of the TestRail case, separated by a comma (Optional)',
|
|
defaultValue: '',
|
|
)
|
|
}
|
|
|
|
options {
|
|
disableConcurrentBuilds()
|
|
buildDiscarder(logRotator(
|
|
numToKeepStr: '10',
|
|
daysToKeepStr: '30',
|
|
artifactNumToKeepStr: '1',
|
|
))
|
|
}
|
|
|
|
environment {
|
|
/* Avoid race conditions with other builds using virtualenv. */
|
|
VIRTUAL_ENV = "${WORKSPACE_TMP}/venv"
|
|
PATH = "${VIRTUAL_ENV}/bin:${PATH}"
|
|
}
|
|
|
|
stages {
|
|
stage('Fetch') {
|
|
steps { script {
|
|
copyArtifacts(
|
|
projectName: "status-mobile/platforms/android-e2e",
|
|
filter: 'result/*-x86_64.apk',
|
|
selector: specific(env.APK_BUILD_NUMBER),
|
|
)
|
|
apk_path = "${env.WORKSPACE}/${utils.findFile('result/*-x86_64.apk')}"
|
|
|
|
} }
|
|
}
|
|
|
|
stage('Setup') {
|
|
steps { script {
|
|
dir('test/appium') {
|
|
sh "python3 -m venv ${VIRTUAL_ENV}"
|
|
sh 'pip3 install -r requirements.txt'
|
|
}
|
|
} }
|
|
}
|
|
|
|
stage('Test') {
|
|
steps {
|
|
withCredentials([
|
|
usernamePassword(
|
|
credentialsId: 'test-rail-api',
|
|
usernameVariable: 'TESTRAIL_USER',
|
|
passwordVariable: 'TESTRAIL_PASS'
|
|
),
|
|
usernamePassword(
|
|
credentialsId: 'lambda-test-api',
|
|
usernameVariable: 'LAMBDA_TEST_USERNAME',
|
|
passwordVariable: 'LAMBDA_TEST_ACCESS_KEY'
|
|
),
|
|
string(
|
|
credentialsId: 'etherscan-api-key',
|
|
variable: 'ETHERSCAN_API_KEY'
|
|
),
|
|
string(
|
|
credentialsId: 'infura-e2e-token',
|
|
variable: 'WEB3_INFURA_PROJECT_ID'
|
|
),
|
|
file(
|
|
credentialsId: "mobile-tests-eth-accounts",
|
|
variable: 'TEST_ETH_ACCOUNTS_FILE'
|
|
),
|
|
]) {
|
|
dir('test/appium/tests') {
|
|
/* Provide Eth test accounts secrets. */
|
|
sh 'cp -f $TEST_ETH_ACCOUNTS_FILE users.py'
|
|
sh """
|
|
python3 -m pytest \
|
|
--numprocesses 9 \
|
|
--testrail_report=True \
|
|
-m testrail_id \
|
|
-m \"nightly\" \
|
|
-k \"${params.KEYWORD_EXPRESSION}\" \
|
|
--apk=${params.APK_URL ?: apk_path}
|
|
"""
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
post {
|
|
cleanup {
|
|
sh 'make purge'
|
|
}
|
|
}
|
|
}
|