├── .gitignore ├── Jenkinsfile ├── README.md ├── build.xml ├── lib └── junit-4.10.jar ├── src ├── Rectangle.java ├── RectangleTest.java └── Rectangulator.java └── test.xml /.gitignore: -------------------------------------------------------------------------------- 1 | bin/* 2 | dist/* 3 | reports/* 4 | docs/* 5 | -------------------------------------------------------------------------------- /Jenkinsfile: -------------------------------------------------------------------------------- 1 | pipeline { 2 | agent none 3 | 4 | environment { 5 | MAJOR_VERSION = 1 6 | } 7 | 8 | stages { 9 | stage('Say Hello') { 10 | agent any 11 | 12 | steps { 13 | sayHello 'Awesome Student!' 14 | } 15 | } 16 | stage('Git Information') { 17 | agent any 18 | 19 | steps { 20 | echo "My Branch Name: ${env.BRANCH_NAME}" 21 | 22 | script { 23 | def myLib = new linuxacademy.git.gitStuff(); 24 | 25 | echo "My Commit: ${myLib.gitCommit("${env.WORKSPACE}/.git")}" 26 | } 27 | } 28 | } 29 | stage('Unit Tests') { 30 | agent { 31 | label 'apache' 32 | } 33 | steps { 34 | sh 'ant -f test.xml -v' 35 | junit 'reports/result.xml' 36 | } 37 | } 38 | stage('build') { 39 | agent { 40 | label 'apache' 41 | } 42 | steps { 43 | sh 'ant -f build.xml -v' 44 | } 45 | post { 46 | success { 47 | archiveArtifacts artifacts: 'dist/*.jar', fingerprint: true 48 | } 49 | } 50 | } 51 | stage('deploy') { 52 | agent { 53 | label 'apache' 54 | } 55 | steps { 56 | sh "if ![ -d '/var/www/html/rectangles/all/${env.BRANCH_NAME}' ]; then mkdir /var/www/html/rectangles/all/${env.BRANCH_NAME}; fi" 57 | sh "cp dist/rectangle_${env.MAJOR_VERSION}.${env.BUILD_NUMBER}.jar /var/www/html/rectangles/all/${env.BRANCH_NAME}/" 58 | } 59 | } 60 | stage("Running on CentOS") { 61 | agent { 62 | label 'CentOS' 63 | } 64 | steps { 65 | sh "wget http://brandon4231.mylabserver.com/rectangles/all/${env.BRANCH_NAME}/rectangle_${env.MAJOR_VERSION}.${env.BUILD_NUMBER}.jar" 66 | sh "java -jar rectangle_${env.MAJOR_VERSION}.${env.BUILD_NUMBER}.jar 3 4" 67 | } 68 | } 69 | stage("Test on Debian") { 70 | agent { 71 | docker 'openjdk:8u121-jre' 72 | } 73 | steps { 74 | sh "wget http://brandon4231.mylabserver.com/rectangles/all/${env.BRANCH_NAME}/rectangle_${env.MAJOR_VERSION}.${env.BUILD_NUMBER}.jar" 75 | sh "java -jar rectangle_${env.MAJOR_VERSION}.${env.BUILD_NUMBER}.jar 3 4" 76 | } 77 | } 78 | stage('Promote to Green') { 79 | agent { 80 | label 'apache' 81 | } 82 | when { 83 | branch 'master' 84 | } 85 | steps { 86 | sh "cp /var/www/html/rectangles/all/${env.BRANCH_NAME}/rectangle_${env.MAJOR_VERSION}.${env.BUILD_NUMBER}.jar /var/www/html/rectangles/green/rectangle_${env.MAJOR_VERSION}.${env.BUILD_NUMBER}.jar" 87 | } 88 | } 89 | stage('Promote Development Branch to Master') { 90 | agent { 91 | label 'apache' 92 | } 93 | when { 94 | branch 'development' 95 | } 96 | steps { 97 | echo "Stashing Any Local Changes" 98 | sh 'git stash' 99 | echo "Checking Out Development Branch" 100 | sh 'git checkout development' 101 | echo 'Checking Out Master Branch' 102 | sh 'git pull origin' 103 | sh 'git checkout master' 104 | echo 'Merging Development into Master Branch' 105 | sh 'git merge development' 106 | echo 'Pushing to Origin Master' 107 | sh 'git push origin master' 108 | echo 'Tagging the Release' 109 | sh "git tag rectangle-${env.MAJOR_VERSION}.${env.BUILD_NUMBER}" 110 | sh "git push origin rectangle-${env.MAJOR_VERSION}.${env.BUILD_NUMBER}" 111 | } 112 | post { 113 | success { 114 | emailext( 115 | subject: "${env.JOB_NAME} [${env.BUILD_NUMBER}] Development Promoted to Master", 116 | body: """
'${env.JOB_NAME} [${env.BUILD_NUMBER}]' Development Promoted to Master":
117 |Check console output at "${env.JOB_NAME} [${env.BUILD_NUMBER}]"
""", 118 | to: "brandon@linuxacademy.com" 119 | ) 120 | } 121 | } 122 | } 123 | } 124 | post { 125 | failure { 126 | emailext( 127 | subject: "${env.JOB_NAME} [${env.BUILD_NUMBER}] Failed!", 128 | body: """'${env.JOB_NAME} [${env.BUILD_NUMBER}]' Failed!":
129 |Check console output at "${env.JOB_NAME} [${env.BUILD_NUMBER}]"
""", 130 | to: "brandon@linuxacademy.com" 131 | ) 132 | } 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # java-project 2 | Java Project for Jenkins Course 3 | -------------------------------------------------------------------------------- /build.xml: -------------------------------------------------------------------------------- 1 | 2 |