mirror of
https://github.com/status-im/status-mobile.git
synced 2025-01-11 01:07:00 +00:00
Jakub Sokołowski
2493b8ad4b
For an unknown reason the original Diawi plugin for Fastlane has been removed from GitHub and RubyGems pages and can no longer be used. This replaces it with a Node.js script which does the same job. I tried using `diawi` and `diawi-nodejs-uploader` but both had issues, one of them being depending on far too many useless packages. Resolves: https://github.com/status-im/status-mobile/issues/15951 Signed-off-by: Jakub Sokołowski <jakub@status.im>
125 lines
3.1 KiB
Plaintext
125 lines
3.1 KiB
Plaintext
library 'status-jenkins-lib@v1.7.9'
|
|
|
|
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()
|
|
}
|
|
|
|
|
|
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 'pip3 install --user -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'
|
|
}
|
|
}
|
|
}
|