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
137 lines
3.4 KiB
Groovy
137 lines
3.4 KiB
Groovy
#!/usr/bin/env groovy
|
|
library 'status-jenkins-lib@v1.9.20'
|
|
|
|
pipeline {
|
|
|
|
agent { label 'linux' }
|
|
|
|
parameters {
|
|
string(
|
|
name: 'APK_URL',
|
|
description: 'URL of APK to be tested(base for upgrade, usually release build)',
|
|
)
|
|
string(
|
|
name: 'APK_URL_UPGRADE',
|
|
description: 'URL of APK of upgraded application (installed on top of base)',
|
|
)
|
|
string(
|
|
name: 'KEYWORD_EXPRESSION',
|
|
description: 'This will run tests which contain names that match the given string expression (Optional)',
|
|
defaultValue: '',
|
|
)
|
|
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('Prep') {
|
|
steps { script {
|
|
if (params.APK_URL == null) {
|
|
error("APK_URL parameter not set!")
|
|
}
|
|
if (params.APK_URL_UPGRADE == null) {
|
|
error("APK_URL_UPGRADE parameter not set!")
|
|
}
|
|
} }
|
|
}
|
|
|
|
stage('Setup') {
|
|
steps { script {
|
|
dir('test/appium') {
|
|
sh "python3 -m venv ${VIRTUAL_ENV}"
|
|
sh 'pip3 install -r requirements.txt'
|
|
}
|
|
} }
|
|
}
|
|
|
|
stage('Test') {
|
|
steps { script {
|
|
/* for managing optional arguments */
|
|
def extraPytestOpts = ''
|
|
if (params.TR_CASE_IDS != '') {
|
|
extraPytestOpts = "--run_testrail_ids='${params.TR_CASE_IDS}'"
|
|
}
|
|
withCredentials([
|
|
usernamePassword(
|
|
credentialsId: 'test-rail-api',
|
|
usernameVariable: 'TESTRAIL_USER',
|
|
passwordVariable: 'TESTRAIL_PASS'
|
|
),
|
|
usernamePassword(
|
|
credentialsId: 'sauce-labs-api',
|
|
usernameVariable: 'SAUCE_USERNAME',
|
|
passwordVariable: 'SAUCE_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 \
|
|
-m "upgrade" \
|
|
-k \"${params.KEYWORD_EXPRESSION}\" \
|
|
--numprocesses 4 \
|
|
--rerun_count=2 \
|
|
--testrail_report=True \
|
|
--apk=${params.APK_URL} \
|
|
--apk_upgrade=${params.APK_URL_UPGRADE} \
|
|
${extraPytestOpts}
|
|
"""
|
|
}
|
|
}
|
|
}
|
|
} }
|
|
}
|
|
|
|
post {
|
|
always {
|
|
script {
|
|
sauce('sauce-labs-cred') {
|
|
saucePublisher()
|
|
}
|
|
}
|
|
}
|
|
success {
|
|
script {
|
|
junit(
|
|
testDataPublishers: [[$class: 'SauceOnDemandReportPublisher', jobVisibility: 'public']],
|
|
testResults: 'test/appium/tests/*.xml'
|
|
)
|
|
}
|
|
}
|
|
cleanup {
|
|
sh 'make purge'
|
|
}
|
|
}
|
|
}
|