Deploying after integration test with Jenkins
TweetPosted on Wednesday Mar 05, 2014 at 04:09PM in Jenkins
Requirements
- I want to deploy the production resource after integration test.
- But some resources are environment-specific.
- So, after integration test succeeded, I want to replace such resources for production version.
How to achieve it?
- The deployment job is need to be a parameterized job.
- After integration test completed, then another mvn starts at post-build step of Jenkins.
- This mvn does only package goal with no tests.
- Deployment will be executed by SSH deploy plugin at post-build action of Jenkins.
How to apply this way to a Jenkins job?
- Create a parameterized job that can integration-test and deployment be done successfully.
- I assumed a job similar to one created at another my posting Deploying with Publish Over SSH Plugin
- Go to job configuration page
- Click “Add post-build step”
- Click “Invoke top-level Maven targets”
- Select “Run only if build succeeds”
- Select Maven Version “Default”
- Not (Default) which one with enclosed in parentheses. it won't work.
- Enter “Goals”
- Click “Advanced…”
- Enter “POM”, “Properties”.
- “hogeApp.environmentId=prod” triggers to Maven to include production resources in my pom.xml.
- Ensure that there is a post-build action which deploys the artifact to the production environment.
- Click “Save” of bottom of the page.
Log
Jenkins job output
... [INFO] --- maven-failsafe-plugin:2.16:verify (default) @ switch --- [INFO] Failsafe report directory: /Users/Shared/Jenkins/Home/jobs/SwitchDeploy/workspace/switch/target/failsafe-reports [JENKINS] テスト結果の記録 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 11.169s [INFO] Finished at: Wed Mar 05 16:25:53 JST 2014 [INFO] Final Memory: 22M/318M [INFO] ------------------------------------------------------------------------ [JENKINS] Archiving /Users/Shared/Jenkins/Home/jobs/SwitchDeploy/workspace/switch/pom.xml to org.nailedtothex/switch/0.0.1-SNAPSHOT/switch-0.0.1-SNAPSHOT.pom [JENKINS] Archiving /Users/Shared/Jenkins/Home/jobs/SwitchDeploy/workspace/switch/target/switch.war to org.nailedtothex/switch/0.0.1-SNAPSHOT/switch-0.0.1-SNAPSHOT.war channel stopped [workspace] $ /Users/kyle/apps/apache-maven-3.1.1/bin/mvn -f switch/pom.xml -Dtag=v0.1 -Dmaven.test.skip=true -DhogeApp.environmentId=prod clean package [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building switch 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ switch --- [INFO] Deleting /Users/Shared/Jenkins/Home/jobs/SwitchDeploy/workspace/switch/target [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ switch --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 1 resource [INFO] Copying 1 resource [INFO] [INFO] --- maven-compiler-plugin:2.5.1:compile (default-compile) @ switch --- [INFO] Compiling 1 source file to /Users/Shared/Jenkins/Home/jobs/SwitchDeploy/workspace/switch/target/classes [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ switch --- [INFO] Not copying test resources [INFO] [INFO] --- maven-compiler-plugin:2.5.1:testCompile (default-testCompile) @ switch --- [INFO] Not compiling test sources [INFO] [INFO] --- maven-surefire-plugin:2.16:test (default-test) @ switch --- [INFO] Tests are skipped. [INFO] [INFO] --- maven-war-plugin:2.4:war (default-war) @ switch --- [INFO] Packaging webapp [INFO] Assembling webapp [switch] in [/Users/Shared/Jenkins/Home/jobs/SwitchDeploy/workspace/switch/target/switch] [INFO] Processing war project [INFO] Copying webapp webResources [/Users/Shared/Jenkins/Home/jobs/SwitchDeploy/workspace/switch/src/main/webapp/_prod] to [/Users/Shared/Jenkins/Home/jobs/SwitchDeploy/workspace/switch/target/switch] [INFO] Copying webapp resources [/Users/Shared/Jenkins/Home/jobs/SwitchDeploy/workspace/switch/src/main/webapp] [INFO] Webapp assembled in [46 msecs] [INFO] Building war: /Users/Shared/Jenkins/Home/jobs/SwitchDeploy/workspace/switch/target/switch.war [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.595s [INFO] Finished at: Wed Mar 05 16:26:01 JST 2014 [INFO] Final Memory: 15M/245M [INFO] ------------------------------------------------------------------------ SSH: Connecting from host [kyle-no-MacBook.local] SSH: Connecting with configuration [osxserver] ... SSH: EXEC: STDOUT/STDERR from command [/Users/kyle/wildfly-8.0.0.Final/bin/jboss-cli.sh --connect --controller=localhost:49990 --command="deploy switch.war --force"] ... SSH: EXEC: completed after 3,256 ms SSH: Disconnecting configuration [osxserver] ... SSH: Transferred 1 file(s) Finished: SUCCESS
- Deployment succeeded as expectedly.
- After integration-test completed, another mvn was kicked, and it builds the package for production without testing once again.
Check the deployed application
kyle-osxserver:~ kyle$ telnet localhost 48080 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. GET /switch/ HTTP/1.0 HTTP/1.0 200 OK Connection: close X-Powered-By: Undertow 1 X-Powered-By: JSP/2.2 Set-Cookie: JSESSIONID=gLpwDJ37tu-Uoxd0r9pWD2wH.kyle-osxserver; path=/switch Server: Wildfly 8 Content-Type: text/plain;charset=UTF-8 Date: Wed, 05 Mar 2014 07:27:29 GMT This value came from context-param defined in /src/main/webapp/_prod/WEB-INF/web.xml This value came from /src/main/resources/common.properties This value came from /src/main/resources/_prod/env-specific.properties Connection closed by foreign host. kyle-osxserver:~ kyle$
- I deployed a sample application created in Maven - Switching environment specific configuration files.
- I can see that pom.xml of it was included resources for production expectedly.
References
Tags: jenkins