mirror of
https://github.com/status-im/status-mobile.git
synced 2025-01-25 16:10:18 +00:00
Jakub Sokołowski
7e47057b2e
It only blocks CI builds for no good reason when branch has not been rebased recently, which has no real benefit as GitHub already enforces not merging outdated PRs. It's just annoying and wastes time. Depends on: https://github.com/status-im/status-jenkins-lib/pull/68 Signed-off-by: Jakub Sokołowski <jakub@status.im>
111 lines
2.7 KiB
Plaintext
111 lines
2.7 KiB
Plaintext
library 'status-jenkins-lib@v1.7.8'
|
|
|
|
pipeline {
|
|
|
|
agent { label 'linux' }
|
|
|
|
parameters {
|
|
string(
|
|
name: 'APK_URL',
|
|
description: 'URL of APK uploaded to SauceLabs.',
|
|
)
|
|
string(
|
|
name: 'KEYWORD_EXPRESSION',
|
|
description: 'This will run tests which contain names that match the given string expression (Optional)',
|
|
defaultValue: '',
|
|
)
|
|
}
|
|
|
|
options {
|
|
disableConcurrentBuilds()
|
|
}
|
|
|
|
stages {
|
|
stage('Fetch') {
|
|
when { expression { !params.APK_URL } }
|
|
steps { script {
|
|
copyArtifacts(
|
|
projectName: "status-mobile/nightly",
|
|
filter: '*-x86.apk',
|
|
/* WARNING: This copies the latest available artifact. */
|
|
selector: lastWithArtifacts(),
|
|
)
|
|
apk_path = "${env.WORKSPACE}/${utils.findFile('*-x86.apk')}"
|
|
} }
|
|
}
|
|
|
|
stage('Setup') {
|
|
steps { script {
|
|
dir('test/appium') {
|
|
sh 'pip3 install --user -r requirements.txt'
|
|
}
|
|
} }
|
|
}
|
|
|
|
stage('Test') {
|
|
steps {
|
|
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 \
|
|
--numprocesses 4 \
|
|
--rerun_count=2 \
|
|
--testrail_report=True \
|
|
-m testrail_id \
|
|
-m \"new_ui_critical or new_ui_medium\" \
|
|
-k \"${params.KEYWORD_EXPRESSION}\" \
|
|
--apk=${params.APK_URL ?: apk_path}
|
|
"""
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
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'
|
|
}
|
|
}
|
|
}
|