[DO-1037] add_job_for_lic_backup (!35)
Reviewed-on: https://git.avroid.tech/DevOps/jenkins-pipelines/pulls/35 Reviewed-by: Denis Patrakeev <denis.patrakeev@avroid.tech> Co-authored-by: Rustam Tagaev <rustam.tagaev@avroid.tech> Co-committed-by: Rustam Tagaev <rustam.tagaev@avroid.tech>
This commit is contained in:
committed by
Denis Patrakeev
parent
1d72f7743b
commit
74ac9ea929
28
jobs-dsl/jobs/License-server/license_test_backup.groovy
Normal file
28
jobs-dsl/jobs/License-server/license_test_backup.groovy
Normal file
@@ -0,0 +1,28 @@
|
||||
pipelineJob('License-server/license-test-backup') {
|
||||
description("Тест бэкапов")
|
||||
definition {
|
||||
cpsScm {
|
||||
scm {
|
||||
git {
|
||||
remote {
|
||||
url("${JENKINS_GIT_REPOSITORY_URL}/DevOps/jenkins-pipelines.git")
|
||||
credentials("${JENKINS_GIT_CREDENTIALS_HTTP}")
|
||||
}
|
||||
branch('master')
|
||||
}
|
||||
}
|
||||
scriptPath('pipelines/License-server/license-test-backup.groovy')
|
||||
}
|
||||
}
|
||||
|
||||
properties {
|
||||
disableConcurrentBuilds()
|
||||
pipelineTriggers {
|
||||
triggers {
|
||||
cron {
|
||||
spec('H 6 * * *')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
61
pipelines/License-server/license-test-backup.groovy
Normal file
61
pipelines/License-server/license-test-backup.groovy
Normal file
@@ -0,0 +1,61 @@
|
||||
@Library('shared-lib') _
|
||||
|
||||
import java.text.SimpleDateFormat
|
||||
|
||||
properties([
|
||||
buildDiscarder(logRotator(artifactNumToKeepStr: '10',
|
||||
numToKeepStr: '10')),
|
||||
disableConcurrentBuilds(),
|
||||
pipelineTriggers([
|
||||
cron('H 6 * * *')
|
||||
])
|
||||
|
||||
])
|
||||
|
||||
Object date = new Date()
|
||||
Object todayDate = new SimpleDateFormat("yyyy-MM-dd")
|
||||
|
||||
String licBackupServer = 'h-license-manager-backup-server.avroid.cloud'
|
||||
|
||||
Map configuration = [
|
||||
vaultUrl: 'https://vault.avroid.tech',
|
||||
vaultCredentialId: 'vault-role',
|
||||
engineVersion: 2
|
||||
]
|
||||
|
||||
List sshPassword = [
|
||||
[path: 'team-devops/accounts/ldap/service_accounts/svc_jenkins', engineVersion: 2, secretValues:
|
||||
[
|
||||
[vaultKey: 'password'],
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
todayDate = todayDate.format(date)
|
||||
|
||||
String cmdUnarchiveBackup = "bzip2 -d license_server-${todayDate}.sql.bz2"
|
||||
String cmdClearDockerTmp = "docker exec postgresql rm -rf /tmp/*"
|
||||
String cmdCopyRoles = "docker cp roles-${todayDate}.sql postgresql:/tmp"
|
||||
String cmdCopyDB = "docker cp license_server-${todayDate}.sql postgresql:/tmp"
|
||||
|
||||
String cmdRestoreRoles = "docker exec postgresql psql -U postgres -p 5432 -d postgres -f /tmp/roles-${todayDate}.sql"
|
||||
String cmdDropDB = "docker exec postgresql dropdb -p 5432 -U postgres -f --if-exists license_server"
|
||||
String cmdRestoreDB = "docker exec postgresql pg_restore -Fc -U postgres -p 5432 -d postgres -C -d postgres -v /tmp/license_server-${todayDate}.sql"
|
||||
String cmdClearTmp = "rm -rf /home/jenkins/*"
|
||||
|
||||
node('slave01') {
|
||||
stage('Restore backup') {
|
||||
withVault([configuration: configuration, vaultSecrets: sshPassword]) {
|
||||
sh """
|
||||
sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdUnarchiveBackup}
|
||||
sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdClearDockerTmp}
|
||||
sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdCopyRoles}
|
||||
sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdCopyDB}
|
||||
sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdRestoreRoles}
|
||||
sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdDropDB}
|
||||
sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdRestoreDB}
|
||||
sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdClearTmp}
|
||||
"""
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user