Add initial Jenkinsfile.
This commit is contained in:
96
Jenkinsfile
vendored
Normal file
96
Jenkinsfile
vendored
Normal file
@@ -0,0 +1,96 @@
|
||||
#!groovy
|
||||
node {
|
||||
/**
|
||||
* Branch should be in gitflow format. If not, then we'll abort.
|
||||
*/
|
||||
|
||||
if(!env.BRANCH_NAME.matches(/(feature|hotfix|release)\/.+/)) {
|
||||
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+/)
|
||||
|
||||
def shortname = env.BRANCH_NAME.replace('/', '-').toLowerCase()
|
||||
def dbSuffix = shortname.replace('-', '')
|
||||
|
||||
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'
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user