This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
build:jenkins [2018/10/18 23:00] mjallison created |
build:jenkins [2018/10/25 17:50] (current) mjallison [Web Application Builds] |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Introduction ====== | ||
+ | |||
The Jenkins build system is installed on dev.agtek.com. It's a Java application running within the | The Jenkins build system is installed on dev.agtek.com. It's a Java application running within the | ||
Tomcat application environment. The build system for Agtek will perform continuous integration | Tomcat application environment. The build system for Agtek will perform continuous integration | ||
Line 15: | Line 17: | ||
Jenkins will kick off a build (usually within 15 minutes, configuration time) when new code is | Jenkins will kick off a build (usually within 15 minutes, configuration time) when new code is | ||
- | checked into the associated repository. | + | checked into the associated repository. |
+ | |||
+ | |||
+ | Everything discussed here runs under the build account (u=build/pw=build396). | ||
====== Android Builds ====== | ====== Android Builds ====== | ||
Line 28: | Line 33: | ||
(manually) to /var/www/html/build/SmartDirt (btw: historical reasons for the name, nothing fancy). | (manually) to /var/www/html/build/SmartDirt (btw: historical reasons for the name, nothing fancy). | ||
Old release copies should then be copied to /var/www/html/build/SmartDirt/old. | Old release copies should then be copied to /var/www/html/build/SmartDirt/old. | ||
+ | |||
+ | Building an Android app for release on the Play store takes a couple of more steps. Each play store | ||
+ | version is identified by an integer (variously called a "build number" or "release number"). This integer | ||
+ | is only loosely related to the versions string (e.g. 1.5.2) in that the build number must always be larger | ||
+ | than the previously release. | ||
+ | |||
+ | These release numbers are constants defined inside the Manifest (example from TrackManager, release == 11): | ||
+ | |||
+ | ''<manifest xmlns:android="http://schemas.android.com/apk/res/android"\\ | ||
+ | package="com.agtek.trackmanager"\\ | ||
+ | android:versionCode="11"\\ | ||
+ | android:versionName="1.4.1" >\\ | ||
+ | |||
+ | '' | ||
====== Server Builds ====== | ====== Server Builds ====== | ||
+ | The AccessServer is built via a regular ant script, and all the code is contained in a single repository. | ||
+ | Typically the build system is building from the branch "master" and seldom builds from release branches. | ||
+ | |||
+ | Each build run also runs the JUnit unit tests. A failure of the unit tests will cause the build to fail. | ||
+ | |||
+ | When the build is ready for roll out, the build user must capture the built copy of the server. | ||
+ | This is done with the following commands: | ||
+ | |||
+ | ''ssh -P 23456 build@dev.agtek.com\\ | ||
+ | # after completing the log-in\\ | ||
+ | snap\\ | ||
+ | ''\\ | ||
+ | |||
+ | The "snap" script will copy the release items from the latest build, AND lay a versioned/dated tag on the branch. | ||
+ | The "snapped" server components will be in a directory called something like "server-2018-10-18". | ||
+ | |||
+ | ====== Web Application Builds ====== | ||
+ | The AccessWeb application is build via a regular ant script, and all the code is contained in a single repository. | ||
+ | Typically the build system is building from the branch "master", but maintenance branches have been set up | ||
+ | and builds may occur from them. As of the current date (2018-10-18) the only build configured is for the "1.4" | ||
+ | release line. | ||
+ | |||
+ | When the build has completed the build user must capture a version of the application. This is done with the following commands: | ||
+ | |||
+ | ''ssh -P 23456 build@dev.agtek.com\\ | ||
+ | # after completing the log-in\\ | ||
+ | wsnap\\ | ||
+ | ''\\ | ||
+ | |||
+ | After a "wsnap" the server components are stored in a directory like "accessweb-2018-10-18". | ||
+ | Inside are two WAR files; AccessWeb.war and AccessWeb##support.war. | ||
+ | |||
+ | The "AccessWeb.war" file is the AccessWeb application to be deployed in the Tomcat server. | ||
+ | The servers are either "apps.agtek.com" or "beta.agtek.com". Which actual server the web app | ||
+ | is deployed to depends on the state of the current release (testing vs. production roll out). | ||
+ | |||
+ | The "AccessWeb##support.war" file is the Support web tool for the support department. It is always installed | ||
+ | in the Tomcat instance running on dev.agtek.com. | ||