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:

  1. Ant (version >1.8.2) and Node (version > 7.10.0) should be installed in the system.
  2. Copy the following plugins from <<install_location>>\KonyVisualizerEnterprisex.x\Kony_Visualizer_Enterprise\plugins to a new folder.
    • com.kony.desktopweb_x.x

    • com.kony.ios_x.x

    • com.kony.mobile.fabric.client.sdk_x.x

    • com.kony.spa_x.x

    • com.kony.studio.viz.core.win64_x.x(for Windows 64-bit users)

    • com.kony.studio.viz.core.win32_x.x (for Windows 32-bit users)
    • com.kony.studio.viz.core.mac64_x.x (for Mac 64-bit users)
    • com.kony.studio.viz.core.mac32_x.x (for Mac 32-bit users)
    • com.kony.thirdparty.jars_x.x

    • com.kony.windows_x.x

    • com.kony.windows8_x.x

    • com.kony.windows10_x.x

    • com.kony.windowsphone8_x.x

    • com.pat.android_x.x

    • com.pat.tabrcandroid_x.x

    • com.pat.tool.keditor_x.x

    • com.kony.cloudmiddleware_x.x

    • com.kony.webcommons_x.x

    • com.kony.cloudthirdparty_x.x

    NOTE: Windows platform is not supported in the version 8.0.

  3. Copy package.json and build.js files from download.kony.com/visualizer_enterprise/citools/<fix pack/service pack version>/visualizer-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.kony.com/visualizer_enterprise/citools/8.0.8/visualizer-ci-tool-8.0.8.zip
  4. 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 Kony Visualizer 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>\KonyVisualizerEnterprise8.0\Java\jdk

androidHome Android SDK path
For Proxy setup, the following new entries are applicable:
proxy.host
proxy.port
proxy.username
proxy.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.username
cloud.password
Applicable only for cloud
#mobilefabric specific details
mobilefabric.url
environment.name
accountd.id
mf.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 Channel
iphone
android
spa.iphone
spa.android
#Tablet
ipad
androidtablet
spa.ipad
spa.androidtablet
spa.windowstablet
# Desktop Channel
desktopweb
# Wearables
iphonewatch
androidwearos

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.ipaddress
mac.username
mac.password
keychain.password
development.team.id
method
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.iPhone
universal.android

Enter true to perform universal build for iPhone.

Enter true to perform universal build for Android.

#Windows platform for headless build:
#Mobile Channel
windowsphone10
#Tablet
windows10
#Desktop Channel
desktop_kiosk

Window platforms
binaries.location Location, where the binaries are saved after the app is successfully built.

version
default_locale
android.packagename
android.versioncode
ios.bundleversion

Support has been added for the following items from V8 SP1 onwards.

keyAlias
keyPassword
keyStoreFilePath
keyStorePassword

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 Quantum Fabric components, if customized.
login.siteminder.url Siteminder login URL if your on-premise Quantum Fabric 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.kony.com/downloads.

Ensure that you use the corresponding version of MFCLI as that of the Visualizer. i.e 7.x viz, 7.x mfcli, 8.x viz, 8.x mfcli.

To encrypt the password using mfcli (using default password.encryption.key),
java -jar mfcli.jar encrypt "Kony@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:

  1. Copy the build.js file to the project location.
  2. Update the HeadlessBuild.properties file of the project, provide the necessary entries.
  3. Open the command prompt in the project location.
  4. Run the node command node build.js
  5. If there is a change in the plugin use –clean parameter, as below:

    node build.js –clean

  6. 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.
    <projectLocation>/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 Quantum Fabric application failed.
54 Quantum Fabric 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.