2017-02-06 15:01:52 -08:00
|
|
|
#!groovy
|
|
|
|
|
node {
|
|
|
|
|
/**
|
|
|
|
|
* Branch should be in gitflow format. If not, then we'll abort.
|
|
|
|
|
*/
|
2017-05-22 11:04:32 -04:00
|
|
|
if(!env.BRANCH_NAME.matches(/(feature|hotfix|bugfix|release|master|develop)\/.+/) && !env.BRANCH_NAME.matches(/^PR-.*$/)) {
|
2017-02-06 15:01:52 -08:00
|
|
|
hipchatSend message: "${env.BRANCH_NAME} Build: Does not match gitflow naming. Aborted", room: 'engineering'
|
|
|
|
|
error "Job does not follow gitflow naming format."
|
|
|
|
|
}
|
|
|
|
|
// Parse out our short name and potential jira ticket. Null if not associated. If null, then for now we won't notify
|
|
|
|
|
// on jira ticket
|
|
|
|
|
def jiraTicket = env.BRANCH_NAME.find(/HOR-\d+/)
|
|
|
|
|
|
2017-02-06 15:15:01 -08:00
|
|
|
def shortname = env.BRANCH_NAME.replace('/', '-').replace('.', '-').toLowerCase()
|
|
|
|
|
def dbSuffix = shortname.replace('-', '')
|
2017-02-06 15:01:52 -08:00
|
|
|
|
|
|
|
|
echo "Building for ${env.BRANCH_NAME}"
|
|
|
|
|
|
|
|
|
|
// Checkout source
|
|
|
|
|
checkout scm
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
stage('Start Notification') {
|
|
|
|
|
if(jiraTicket) {
|
|
|
|
|
jiraComment issueKey: jiraTicket, body: "Build ${env.BUILD_NUMBER} Starting.\nTicket will be updated once build is completed.\n\n${env.BUILD_URL}"
|
|
|
|
|
}
|
|
|
|
|
hipchatSend message: "${env.BRANCH_NAME} Build: ${env.BUILD_NUMBER} Starting.\n${env.BUILD_URL}", room: 'engineering'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
stage('Dependencies') {
|
|
|
|
|
echo "Running Composer"
|
|
|
|
|
sh 'composer install'
|
|
|
|
|
echo "Running rake"
|
|
|
|
|
sh 'rake'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
stage('Generate QA MySQL Databases') {
|
|
|
|
|
withCredentials([string(credentialsId: 'qa-rds-hostname', variable: 'rdsHostname'), usernamePassword(credentialsId: 'qa-rds-credentials', passwordVariable: 'rdsPassword', usernameVariable: 'rdsUsername')]) {
|
|
|
|
|
echo 'Dropping existing database and recreating.'
|
|
|
|
|
sh "mysql -h ${rdsHostname} -u ${rdsUsername} -p${rdsPassword} -e 'drop database if exists qa205${dbSuffix}; create database qa205${dbSuffix}'"
|
|
|
|
|
sh "mysql -h ${rdsHostname} -u ${rdsUsername} -p${rdsPassword} -e 'drop database if exists qa300${dbSuffix}; create database qa300${dbSuffix}'"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
stage('Publish to QA-205') {
|
|
|
|
|
sshagent(['processmaker-deploy']) {
|
|
|
|
|
echo 'Dropping existing files and recreating'
|
|
|
|
|
sh "ssh processmaker@build-qa205.processmaker.net 'rm -Rf /home/processmaker/${shortname}'"
|
|
|
|
|
sh "scp -r ./ processmaker@build-qa205.processmaker.net:~/${shortname}"
|
|
|
|
|
echo 'Creating necessary directories'
|
|
|
|
|
sh "ssh processmaker@build-qa205.processmaker.net 'mkdir -p /home/processmaker/${shortname}/workflow/engine/js/labels'"
|
|
|
|
|
sh "ssh processmaker@build-qa205.processmaker.net 'mkdir -p /home/processmaker/${shortname}/workflow/public_html/translations'"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
stage('Publish to QA-300') {
|
|
|
|
|
sshagent(['processmaker-deploy']) {
|
|
|
|
|
echo 'Dropping existing files and recreating'
|
|
|
|
|
sh "ssh processmaker@build-qa300.processmaker.net 'rm -Rf /home/processmaker/${shortname}'"
|
|
|
|
|
sh "scp -r ./ processmaker@build-qa300.processmaker.net:~/${shortname}"
|
|
|
|
|
echo 'Creating necessary directories'
|
|
|
|
|
sh "ssh processmaker@build-qa300.processmaker.net 'mkdir -p /home/processmaker/${shortname}/workflow/engine/js/labels'"
|
|
|
|
|
sh "ssh processmaker@build-qa300.processmaker.net 'mkdir -p /home/processmaker/${shortname}/workflow/public_html/translations'"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
stage('Success Notification') {
|
|
|
|
|
withCredentials([string(credentialsId: 'qa-rds-hostname', variable: 'rdsHostname'), usernamePassword(credentialsId: 'qa-rds-credentials', passwordVariable: 'rdsPassword', usernameVariable: 'rdsUsername')]) {
|
|
|
|
|
if(jiraTicket) {
|
|
|
|
|
jiraComment issueKey: jiraTicket, body: "" +
|
|
|
|
|
"Build ${env.BUILD_NUMBER} Completed.\n" +
|
|
|
|
|
"5.6 Build: https://${shortname}.qa205.processmaker.net\n" +
|
|
|
|
|
"Database Host: ${rdsHostname}\n" +
|
|
|
|
|
"Username: ${rdsUsername}\n" +
|
|
|
|
|
"Password: ${rdsPassword}\n" +
|
|
|
|
|
"Database: qa205${dbSuffix}\n\n" +
|
|
|
|
|
"7.0 Build: https://${shortname}.qa300.processmaker.net\n" +
|
|
|
|
|
"Database Host: ${rdsHostname}\n" +
|
|
|
|
|
"Username: ${rdsUsername}\n" +
|
|
|
|
|
"Password: ${rdsPassword}\n" +
|
|
|
|
|
"Database: qa300${dbSuffix}\n\n" +
|
|
|
|
|
"${env.BUILD_URL}"
|
|
|
|
|
}
|
|
|
|
|
hipchatSend room: 'engineering', message: "" +
|
|
|
|
|
"${env.BRANCH_NAME} Build: ${env.BUILD_NUMBER} Completed.\n" +
|
|
|
|
|
"${env.BUILD_URL}"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} catch(error) {
|
|
|
|
|
if(jiraTicket) {
|
|
|
|
|
jiraComment issueKey: jiraTicket, body: "Build ${env.BUILD_NUMBER} Failed: ${error}\n\n${env.BUILD_URL}"
|
|
|
|
|
}
|
|
|
|
|
hipchatSend message: "${env.BRANCH_NAME} Build: ${env.BUILD_NUMBER} Failed: ${error}\n${env.BUILD_URL}", room: 'engineering'
|
|
|
|
|
}
|
|
|
|
|
}
|