Continuous Integration
Introduction
CI Build allows the user to build and publish an app from the command line without any eclipse/installer dependency.
Prerequisite
Following are the prerequisites to install CI Build:
- Ant (version >1.8.2) and Node (version > 7.10.0) should be installed in the system.
-
Copy the following plugins from «install_location»\VoltMXIrisEnterprisex.x\VoltMX_Iris_Enterprise\plugins to a new folder.
-
com.voltmx.desktopweb_x.x
-
com.voltmx.ios_x.x
-
com.voltmx.mobile.foundry.client.sdk_x.x
-
com.voltmx.spa_x.x
-
com.voltmx.studio.iris.core.win64_x.x(for Windows 64-bit users)
- com.voltmx.studio.iris.core.win32_x.x (for Windows 32-bit users)
- com.voltmx.studio.iris.core.mac64_x.x (for Mac 64-bit users)
- com.voltmx.studio.iris.core.mac32_x.x (for Mac 32-bit users)
-
com.voltmx.thirdparty.jars_x.x
-
com.voltmx.windows_x.x
-
com.voltmx.windows8_x.x
-
com.voltmx.windows10_x.x
-
com.voltmx.windowsphone8_x.x
-
com.pat.android_x.x
-
com.pat.tabrcandroid_x.x
-
com.pat.tool.keditor_x.x
-
com.voltmx.cloudmiddleware_x.x
-
com.voltmx.webcommons_x.x
- com.voltmx.cloudthirdparty_x.x
Note: Windows platform is not supported in the version 8.0.
-
- Copy package.json and build.js files from download.voltmx.com/iris_enterprise/citools/<fix pack/service pack version>/iris-ci-tool-<fix pack/service pack version>.zip in the project location. For example, For Fix Pack 8 of V8 the URL is http://download.voltmx.com/iris_enterprise/citools/8.0.8/iris-ci-tool-8.0.8.zip
- Open the command prompt in the project location and perform the npm install.
Configure HeadlessBuild.Properties
HeadlessBuild.properties file is present in the project location.
New Entries
Upgrade Volt MX Iris Classic project to 8.x or add the below new entries in HeadlessBuild.properties file:
protectedmodeenabled.ios | If the user wants to build for iOS in protected mode, change the value to true. |
protectedmodeenabled.android | If the user wants to build for android in protected mode, change the value to true. |
plugin.dir | Points to the directory, where the plugins required for the build are copied. |
javaloc | Java home (provide the folder location consisting bin where the Java is installed.) Example: <Install_location>\VoltMXIrisEnterprise8.0\Java\jdk |
androidHome | Android SDK path |
For Proxy setup, the following new entries are applicable:proxy.hostproxy.portproxy.usernameproxy.password | If you are running CI build on a system behind a proxy, provide proxy details. |
Existing Entries
Add the following existing entries in HeadlessBuild.properties file:
Key Name | Description |
---|---|
project.name | Project name |
mode | Only modes 0, 1 and 2 are supported |
build.mode | The mode of the build. Release or Debug. |
appid | ID of the application |
#cloud mode credentials cloud.usernamecloud.password | Applicable only for cloud |
#mobilefoundry specific details mobilefoundry.urlenvironment.nameaccountd.idmf.appname | Applicable only when you are trying to publish the app. |
#specify the environment you want to publish Example:qa cloud.environment | Applicable only when you are trying to publish the app. |
#The platforms for which the headless build need to run#Mobile Channeliphoneandroidspa.iphonespa.android#Tabletipadandroidtabletspa.ipadspa.androidtabletspa.windowstablet# Desktop Channeldesktopweb# Wearablesiphonewatchandroidwearos | The value is either true or false. Enter true to build the platform else false. Please note that you cannot build Apple watch alone. When you build for Apple watch ensure that you build for iPhone as well. |
#Provide the following details for IPA generation:mac.ipaddressmac.usernamemac.passwordkeychain.passworddevelopment.team.idmethod genipaiphone (to generate IPA for iPhone)genipaipad (to generate IPA for iPad) |
Enter true to generate IPA for iPhone and iPad. For the method, possible values supported are app-store, ad-hoc, enterprise, and development. |
Universal build for iOS:universal.iPhoneuniversal.android |
Enter true to perform universal build for iPhone. Enter true to perform universal build for Android. |
#Windows platform for headless build:#Mobile Channelwindowsphone10#Tabletwindows10#Desktop Channeldesktop_kiosk | Window platforms |
binaries.location | Location, where the binaries are saved after the app is successfully built. |
versiondefault_localeandroid.packagenameandroid.versioncodeios.bundleversion |
Support has been added for the following items from V8 SP1 onwards. |
keyAlias keyPasswordkeyStoreFilePathkeyStorePassword |
Support has provided for the Android signing keys from V8 SP1 onwards for signing. |
context.path.identity context.path.workspace context.path.accounts context.path.console |
Supported context paths for Volt MX Foundry components, if customized. |
login.siteminder.url |
Siteminder login URL if your on-premise Volt MX Foundry is protected by siteminder. |
iosappextension |
App extension of the iOS. |
#Supported platforms for Generate Native Library generatenativelibrary #Mobile Channel iPhone Android Windowsphone10 #Tablet Channel iPad Android Tablet Windows10 | The value is either True or False. Enter false to build the Generate Native Library. |
Important: There are many keys available in the HeadlessBuild.properties file. However, not all of them are applicable for the CI Build. The keys mentioned above are the only ones applicable for CI Build.
Important: If you do not want to store your password in the headless build.properties file, you can use mfcli to encrypt your password. You can download the mfcli.jar from https://community.hclvoltmx.com/downloads.
Ensure that you use the corresponding version of MFCLI as that of the Iris. i.e 7.x iris, 7.x mfcli, 8.x iris, 8.x mfcli.
To encrypt the password using mfcli (using default password.encryption.key),
java -jar mfcli.jar encrypt "VoltMX@1234"
Encrypted password is: en1801f1abee7b9e12426c062509e1b18epd
Platforms Supported
Following platforms are supported to build the CI application:
- iPhone, iPad
- Android mobile and tablet
- SPA mobile, tablet and desktop web
- SPA/DW publish
- Windows mobile, tablet and kiosk
Build the Application
Follow these steps to build the application:
- Copy the build.js file to the project location.
- Update the HeadlessBuild.properties file of the project, provide the necessary entries.
- Open the command prompt in the project location.
- Run the node command node build.js
If there is a change in the plugin use –clean parameter, as below:
node build.js –clean
-
If the app is built successfully, the binaries are saved in the location defined in the binaries section of HeadlessBuild.properties file.
Note: If the binary location is not specified in the file, the binaries are saved in the following default location.
/Binaries.
Error Codes
The error codes are indicative of failed stage or operation. The actual error messages differ from the description mentioned below:
Example: Error code 50 describes as one of the mandatory field is missing. Actual error message will list the fields missing.
Error Code | Description |
---|---|
50 | One or more mandatory fields are missing in HeadlessBuild.properties. |
51 | At least one platform should be selected for the build in HeadlessBuild.properties. |
52 | Plugin extraction failed (or) one or more mandatory plugins are missing. |
53 | Publishing Volt MX Foundry application failed. |
54 | Volt MX Foundry configuration details are missing in HeadlessBuild.properties.Example: error message will be (cloudname, cloudpassword, envname, accountID, mfAppName) is (or) are missing. |
55 | Project porting failed. |
56 | There are no forms created to build the selected channels.Example: There are no forms created for: Desktop |
57 | JAVA_HOME not found in environment variables (or) expected Java version is not found. |
58 | ANT_HOME not found in environment variables (or) expected ant version is not found. |
59 | Expected node version not found.Example: node version mismatch: required 7.10.0, found 6.10.2. |
60 | Expected Xcode version not found. |
61 | Expected Finalizer version not found. |
62 | Build failed for one or more selected platforms. |