[DO-1142] add test and notification (!37)

Reviewed-on: https://git.avroid.tech/DevOps/jenkins-pipelines/pulls/37
Reviewed-by: Aleksandr Vodyanov <aleksandr.vodyanov@avroid.tech>
This commit is contained in:
Rustam Tagaev
2024-10-04 13:02:34 +03:00
parent 686c60569a
commit 96f19b9b8a

View File

@@ -1,5 +1,7 @@
@Library('shared-lib') _ @Library('shared-lib') _
import tech.avroid.jenkins.Notifications
import groovy.json.JsonOutput
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
properties([ properties([
@@ -12,6 +14,66 @@ properties([
]) ])
List tests = [
[ expectedCode: '201',
method: 'POST',
URL: '/api/activate',
body: [
"activation_key_id": "C0AE-AC61-20E0-18D5",
"vendor_app_id": "tavro_aurora",
"device_id": "FCA4PZgXnFBJUfQUpXlS3iyqXcXog9Qd8xEa8qp267I=",
"app_version": "5.2.4",
"check_only": false
]
],
[ expectedCode: '404',
method: 'POST',
URL: '/api/activate',
body: [
"activation_key_id": "C0AE-AC61-20E0-18D",
"vendor_app_id": "tavro_aurora",
"device_id": "FCA4PZgXnFBJUfQUpXlS3iyqXcXog9Qd8xEa8qp267I=",
"app_version": "5.2.4",
"check_only": false
]
],
[ expectedCode: '201',
method: 'POST',
URL: '/api/activate',
body: [
"activation_key_id": "C0AE-AC61-20E0-18D5",
"vendor_app_id": "tavro_aurora",
"device_id": "FCA4PZgXnFBJUfQUpXlS3iyqXcXog9Qd8xEa8qp267I=",
"app_version": "5.0.1",
"check_only": false
]
],
[ expectedCode: '400',
method: 'POST',
URL: '/api/activate',
body: [
"activation_key_id": "C0AE-AC61-20E0-18D5",
"vendor_app_id": "tavro_aurora",
"device_id": "FCA4PZgXnFBJUfQUpXlS3iyqXcXog9Qd8xEa8qp267I=",
"app_version": "1.2.4",
"check_only": false
]
],
[ expectedCode: '201',
method: 'POST',
URL: '/api/activate',
body: [
"activation_key_id": "A7F9-072A-D239-7D67",
"vendor_app_id": "tavro_aurora_lite",
"device_id": "[AvroidActivation]",
"app_version": "5.2.4",
"check_only": true
]
]
]
String recipient = "devops@avroid.team"
Object date = new Date() Object date = new Date()
Object todayDate = new SimpleDateFormat("yyyy-MM-dd") Object todayDate = new SimpleDateFormat("yyyy-MM-dd")
@@ -44,18 +106,49 @@ String cmdRestoreDB = "docker exec postgresql pg_restore -Fc -U postgres -p 5432
String cmdClearTmp = "rm -rf /home/jenkins/*" String cmdClearTmp = "rm -rf /home/jenkins/*"
node('slave01') { node('slave01') {
stage('Restore backup') { try {
withVault([configuration: configuration, vaultSecrets: sshPassword]) { stage('Restore backup') {
sh """ withVault([configuration: configuration, vaultSecrets: sshPassword]) {
sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdUnarchiveBackup} sh """
sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdClearDockerTmp} sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdUnarchiveBackup}
sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdCopyRoles} sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdClearDockerTmp}
sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdCopyDB} sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdCopyRoles}
sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdRestoreRoles} sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdCopyDB}
sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdDropDB} sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdRestoreRoles}
sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdRestoreDB} sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdDropDB}
sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdClearTmp} sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdRestoreDB}
""" sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdClearTmp}
"""
}
} }
stage('Run tests'){
tests.each { test ->
httpRequest(
url: "http://${licBackupServer}${test.URL}",
contentType: 'APPLICATION_JSON',
httpMode: test.method,
validResponseCodes: test.expectedCode,
requestBody: JsonOutput.toJson(test.body)
)
}
}
} catch(err) {
errorMessage = err.getMessage()
println 'ERROR: ' + errorMessage
currentBuild.result = 'FAILURE'
String emailSubject = "${currentBuild.currentResult}. " +
"Pipeline task: ${currentBuild.fullDisplayName}"
Notifications.email(
script: this,
subject: emailSubject,
errorString: errorMessage,
recipientProviders: [],
to: recipient
)
} }
} }