Building a Iris app
To build a Iris app, you need to run the buildIrisApp job from your project. To perform a build for the first time, you need to configure the build parameters for the job. For future builds, App Factory stores the settings from the previous build.
To run the buildIrisApp job, follow these steps.
- From the folder of your App Factory project, navigate to Iris → Builds → buildIrisApp.
-
Run the job by using the Build with parameters option. You can access the option by following either of these steps.
Note: If you don’t see the option, you might not have ownership permissions to the project. You can verify whether your name is listed in the Folder Owners section of the project. The Primary owner of the project can add users as secondary owners to grant permissions to the builds.
- On the right-side of the job row, select the icon that represents Build with Parameters
- Open the drop-down list for the buildIrisApp job, and then select Build with Parameters
- Open the buildIrisApp job and execute Build with Parameters action on the left panel of the job
-
Configure the build parameters for the job. For more information about the parameters, refer to the following sections.
Source Control related parameters
<table style="width: 80%;mc-table-style: url('Resources/TableStyles/Basic.css');" class="TableStyle-Basic" cellspacing="0"><colgroup><col class="TableStyle-Basic-Column-Column1" style="width: 30%;"><col class="TableStyle-Basic-Column-Column1" style="width: 50%;"></colgroup><tbody><tr class="TableStyle-Basic-Body-Body1"><th class="TableStyle-Basic-BodyE-Column1-Body1">Parameter</th><th class="TableStyle-Basic-BodyD-Column1-Body1">Description</th></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyB-Column1-Body1">PROJECT_SOURCE_CODE_BRANCH</td><td class="TableStyle-Basic-BodyA-Column1-Body1">Specifies the branch, release tag, or the commit ID of the repository that contains the source code of the Iris project.</td></tr></tbody></table>
</details>
VoltMX Iris & Foundry related parameters
<table style="width: 80%;mc-table-style: url('Resources/TableStyles/Basic.css');" class="TableStyle-Basic" cellspacing="0"><colgroup><col class="TableStyle-Basic-Column-Column1" style="width: 30%;"><col class="TableStyle-Basic-Column-Column1" style="width: 50%;"></colgroup><tbody><tr class="TableStyle-Basic-Body-Body1"><th class="TableStyle-Basic-BodyE-Column1-Body1">Parameter</th><th class="TableStyle-Basic-BodyD-Column1-Body1">Description</th></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1"><a name="BUILD_MODE"></a>BUILD_MODE</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the mode in which the app is built. Contains the following options.<b>debug</b>Builds the app in debug mode, which adds debugging options in the app binary<b>test</b>Builds the app in test mode, which enables automated testing for the app<b>release</b>Builds the app in release mode (release-unprotected mode), which optimizes the app for executionThe release mode does not provide additional security for the app<b>release-protected</b>Builds the app in a release-protected mode, which optimizes the app for execution and also provides extra security with encryption keys<span class="autonumber"><span><b><i><span style="color: #ff6600;" class="mcFormatColor">Important: </span></i></b></span></span>For the <b>release</b> and <b>release-protected</b> build modes, you need to set the Android KeyStore options. For more information, refer to <a href="#Android" class="selected">Android related parameters</a>.For the <b>release-protected</b> build mode, you need to configure the <b>Web protection</b> related parameters. For more information, refer to <a href="#DesktopWeb" class="selected">Desktop Web related parameters</a>.<div class="Note" data-mc-autonum="<b><i><span style="color: #0a9c4a;" class="mcFormatColor">Note: </span></i></b>"><span class="autonumber"><span><b><i><span style="color: #0a9c4a;" class="mcFormatColor">Note: </span></i></b></span></span>In <b>debug</b> mode, the landing screen of the app is the Volt MX debugger screen. Make sure that your test scripts are prepared to navigate away from this screen.For the <b>release-protected</b> mode, the encryption keys are the values that you configure in Iris. The keys are configured in <b>Project Settings</b> → <b>Native</b> → <b>iPhone/iPad/Watch or Android</b> → <b>Protected Mode</b>.</div></td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">FOUNDRY_CREDENTIALS_ID</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the Volt MX Cloud credentials that App Factory uses to build the Iris project and publish any linked services. If you are building an app for the Web channel, the credentials are used to upload the WAR files to Volt MX Foundry and to publish the app.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyB-Column1-Body1">FOUNDRY_APP_CONFIG</td><td class="TableStyle-Basic-BodyA-Column1-Body1">Specifies the configuration details of the Foundry app, such as app name, account ID, console URL, and identity server URL. For more information, refer to <a href="ManagingCredentials.html#Adding_Foundry" target="_blank">Adding Volt MX Foundry App Configuration</a>.If your app does not contain any integration with Foundry, you can skip this build parameter.</td></tr></tbody></table>
</details>
Protected Build parameters
> **_Important:_** To use protected keys for your app, you need to add encryption keys to your project. For more information, refer to [Adding Encryption Keys](ManagingCredentials.html#Encryption_Keys).
<table style="width: 80%;mc-table-style: url('Resources/TableStyles/Basic.css');" class="TableStyle-Basic" cellspacing="0"><colgroup><col class="TableStyle-Basic-Column-Column1" style="width: 30%;"><col class="TableStyle-Basic-Column-Column1" style="width: 50%;"></colgroup><tbody><tr class="TableStyle-Basic-Body-Body1"><th class="TableStyle-Basic-BodyE-Column1-Body1">Parameter</th><th class="TableStyle-Basic-BodyD-Column1-Body1">Description</th></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyB-Column1-Body1">PROTECTED_KEYS</td><td class="TableStyle-Basic-BodyA-Column1-Body1">Specifies the encryption keys that are used to provide additional security for the app. You can select the public key, private key, or fin key.This parameter is displayed only if the <a href="#VoltMX" class="selected">BUILD_MODE</a> parameter is <b>release-protected</b>.</td></tr></tbody></table>
</details>
Android related parameters
<table style="width: 80%;mc-table-style: url('Resources/TableStyles/Basic.css');" class="TableStyle-Basic" cellspacing="0"><colgroup><col class="TableStyle-Basic-Column-Column1" style="width: 30%;"><col class="TableStyle-Basic-Column-Column1" style="width: 50%;"></colgroup><tbody><tr class="TableStyle-Basic-Body-Body1"><th class="TableStyle-Basic-BodyE-Column1-Body1">Parameter</th><th class="TableStyle-Basic-BodyD-Column1-Body1">Description</th></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">ANDROID</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies whether the app must be built for the Android platform.If you select this check box, the <a href="#Android" class="selected">Android related parameters</a> appear.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">ANDROID_UNIVERSAL_NATIVE</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies whether the app must be built as a universal Android app for both Mobile and Tablet channels.If you select this check box, you need to configure the following parameters.<b>ANDROID_UNIVERSAL_APP_ID</b>: Specifies the unique ID of the app that identifies the app on the device, and on Google Play Store.For example: <code class="codefirst">com.foo.KitchenSink</code><span class="autonumber"><span><b><i><span style="color: #0a9c4a;" class="mcFormatColor">Note: </span></i></b></span></span>The app ID is the value that you enter in Iris in <b>Project Settings</b> → <b>Native</b> → <b>Android</b> → <b>Package Name</b>.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">ANDROID_MOBILE_NATIVE</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies whether the app must be built for the native Android platform for the Mobile channel.If you select this check box, you need to configure the following parameters.<b>ANDROID_MOBILE_APP_ID</b>: Specifies the unique ID that identifies the app on the device, and on Google Play Store.For example: <code class="codefirst">com.foo.KitchenSink</code><span class="autonumber"><span><b><i><span style="color: #0a9c4a;" class="mcFormatColor">Note: </span></i></b></span></span>The app ID is the value that you enter in Iris in <b>Project Settings</b> → <b>Native</b> → <b>Android</b> → <b>Package Name</b>.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">ANDROID_TABLET_NATIVE</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies whether the app must be built for the native Android platform for the Tablet channel.If you select this check box, you need to configure the following parameters.<b>ANDROID_TABLET_NATIVE</b>: Specifies the unique ID that identifies the app on the device, and on Google Play Store.For example: <code class="codefirst">com.foo.KitchenSink</code><span class="autonumber"><span><b><i><span style="color: #0a9c4a;" class="mcFormatColor">Note: </span></i></b></span></span>The app ID is the value that you enter in Iris in <b>Project Settings</b> → <b>Native</b> → <b>Android</b> → <b>Package Name</b>.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">ANDROID_APP_VERSION</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the version of the Android application. The version number is the value that you enter in Iris in <b>Project Settings</b> → <b>Application</b> → <b>Version</b>.For example: <b>1.0.1</b></td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">ANDROID_VERSION_CODE</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the internal positive integer that is used to determine the recent versions, where a higher number indicates a more recent version.The app internal version number is entered in Iris at <b>Project Settings</b> → <b>Native</b> → <b>Android</b> → <b>Version Code</b>.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">ANDROID_APP_BUNDLE</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies whether the binary must be built in the Android App Bundle (AAB) format for submission to the Google Play Store.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">SUPPORT_X86_DEVICES</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies whether the app binaries are built for devices that use the <b>x86 architecture</b>.If you enable this parameter, the build notification email will contain <b>ARM_64bit</b> and <b>x86_64 bit</b> binaries.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">ANDROID_KEYSTORE_FILE</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the keystore file that is used to sign the Android binary. The supported file formats are <code class="file_names">.keystore</code> and <code class="file_names">.jks</code>. For more information, refer to <a href="https://developer.android.com/training/articles/keystore" target="_blank">Android keystore system</a> and <a href="https://developer.android.com/studio/publish/app-signing" target="_blank">Sign your app</a>.<span class="autonumber"><span><b><i><span style="color: #0a9c4a;" class="mcFormatColor">Note: </span></i></b></span></span>If your <a href="#VoltMX" class="selected">build mode</a> is debug, you can skip this parameter.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">ANDROID_KEYSTORE_PASSWORD</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the password for the keystore file that is selected in the ANDROID_KEYSTORE_FILE parameter. For more information, refer to <a href="https://developer.android.com/training/articles/keystore" target="_blank">Android keystore system</a> and <a href="https://developer.android.com/studio/publish/app-signing" target="_blank">Sign your app</a>.<span class="autonumber"><span><b><i><span style="color: #0a9c4a;" class="mcFormatColor">Note: </span></i></b></span></span>If your <a href="#VoltMX" class="selected">build mode</a> is debug, you can skip this parameter.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">ANDROID_KEY_PASSWORD</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the password to the key that is used to sign-in to the Android library. For more information, refer to <a href="https://developer.android.com/training/articles/keystore" target="_blank">Android keystore system</a> and <a href="https://developer.android.com/studio/publish/app-signing" target="_blank">Sign your app</a>.<span class="autonumber"><span><b><i><span style="color: #0a9c4a;" class="mcFormatColor">Note: </span></i></b></span></span>If your <a href="#VoltMX" class="selected">build mode</a> is debug, you can skip this parameter.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyB-Column1-Body1">ANDROID_KEY_ALIAS</td><td class="TableStyle-Basic-BodyA-Column1-Body1">Specifies the alias of the signing key in the keystore. For more information, refer to <a href="https://developer.android.com/training/articles/keystore" target="_blank">Android keystore system</a> and <a href="https://developer.android.com/studio/publish/app-signing" target="_blank">Sign your app</a>.<span class="autonumber"><span><b><i><span style="color: #0a9c4a;" class="mcFormatColor">Note: </span></i></b></span></span>If your <a href="#VoltMX" class="selected">build mode</a> is debug, you can skip this parameter.</td></tr></tbody></table>
</details>
Apple related parameters
> **_Important:_** Before you build the app or the artifacts for iOS, make sure that you register the App ID. For more information, refer to [Register an App ID](https://help.apple.com/developer-account#/dev1b35d6f83).
Make sure that the signing certificates and distribution profiles have not expired. Otherwise, the build fails and an error occurs.
<table style="width: 80%;mc-table-style: url('Resources/TableStyles/Basic.css');" class="TableStyle-Basic" cellspacing="0"><colgroup><col class="TableStyle-Basic-Column-Column1" style="width: 30%;"><col class="TableStyle-Basic-Column-Column1" style="width: 50%;"></colgroup><tbody><tr class="TableStyle-Basic-Body-Body1"><th class="TableStyle-Basic-BodyE-Column1-Body1">Parameter</th><th class="TableStyle-Basic-BodyD-Column1-Body1">Description</th></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">IOS</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies whether the app must be built for the iOS platform.If you select this check box, the <a href="#Apple" class="selected">Apple related parameters</a> appear.<span class="autonumber"><span><b><i><span style="color: #ff6600;" class="mcFormatColor">Important: </span></i></b></span></span>Make sure that you register the App ID before you build the app or the artifacts for iOS. For more information, refer to <a href="https://help.apple.com/developer-account#/dev1b35d6f83" target="_blank">Register an App ID</a>.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1"><a name="SIGNING_METHOD"></a>SIGNING_METHOD</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the mode of signing for the iOS binary (<code class="file_names">.ipa</code>). Contains the following options:Apple-AccountManual-Certificates<span class="autonumber"><span><b><i><span style="color: #0a9c4a;" class="mcFormatColor">Note: </span></i></b></span></span>Among the <b>APPLE_ID</b> or <b>APPLE_SIGNING_CERTIFICATES</b> parameters, only one parameter is mandatory based on the SIGNING_METHOD.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">APPLE_ID</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the credentials of the Apple developer account that is used to generate certificates for the iOS binary.This parameter is applicable only if the <a href="#SIGNING_METHOD" class="selected">SIGNING_METHOD</a> is <b>Apple-Account</b>.For more information, refer to <a href="Prerequisites.html#Apple" target="_blank">Apple Signing Certificates</a>.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">APPLE_DEVELOPER_TEAM_ID</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the ID of the developer team that is building the app. This parameter is applicable only if your Apple ID is a part of multiple development teams. If your Apple ID is enrolled as an individual, you can skip this parameter.For more information, refer to <a href="https://help.apple.com/developer-account#/dev55c3c710c" target="_blank">Locate your Team ID</a>.<span class="autonumber"><span><b><i><span style="color: #0a9c4a;" class="mcFormatColor">Note: </span></i></b></span></span>If the first build of your project has a value for APPLE_DEVELOPER_TEAM_ID, you need to enter the value for this parameter in each build. If the parameter is empty for the first build of the project, it must remain empty for all the upcoming builds.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">APPLE_SIGNING_CERTIFICATES</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the certificates that are used to sign the iOS binary (<b>.ipa</b>).This parameter is applicable only if the <a href="#SIGNING_METHOD" class="selected">SIGNING_METHOD</a> is <b>Manual-Certificates</b>.For more information, refer to <a href="Prerequisites.html#Apple" target="_blank">Apple Signing Certificates</a>.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">IOS_UNIVERSAL_NATIVE</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies whether the app must be built as a universal iOS app for both Mobile and Tablet channels.If you select this check box, you need to configure the following parameters.<b>IOS_UNIVERSAL_APP_ID</b>: Specifies the unique ID of the app that identifies the app on the device, and is used by the operating system.For example: <code class="codefirst">com.foo.KitchenSink</code><span class="autonumber"><span><b><i><span style="color: #0a9c4a;" class="mcFormatColor">Note: </span></i></b></span></span>The app ID is the value that you enter in Iris in <b>Project Settings</b> → <b>Native</b> → <b>iPhone/iPad/Watch</b> → <b>Bundle Identifier</b>.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">IOS_MOBILE_NATIVE</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies whether the app must be built for the native iOS platform for the Mobile channel.If you select this check box, you need to configure the following parameters.<b>IOS_MOBILE_APP_ID</b>: Specifies the unique ID of the app that identifies the app on the device, and is used by the operating system.For example: <code class="codefirst">com.foo.KitchenSink</code><span class="autonumber"><span><b><i><span style="color: #0a9c4a;" class="mcFormatColor">Note: </span></i></b></span></span>The app ID is the value that you enter in Iris in <b>Project Settings</b> → <b>Native</b> → <b>iPhone/iPad/Watch</b> → <b>Bundle Identifier</b>.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">IOS_MOBILE_NATIVE</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies whether the app must be built for the native iOS platform for the Tablet channel.If you select this check box, you need to configure the following parameters.<b>IOS_TABLET_APP_ID </b>: Specifies the unique ID of the app that identifies the app on the device, and is used by the operating system.For example: <code class="codefirst">com.foo.KitchenSink</code><span class="autonumber"><span><b><i><span style="color: #0a9c4a;" class="mcFormatColor">Note: </span></i></b></span></span>The app ID is the value that you enter in Iris in <b>Project Settings</b> → <b>Native</b> → <b>iPhone/iPad/Watch</b> → <b>Bundle Identifier</b>.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">IOS_APP_VERSION</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the version of the iOS application. The version number is the value that you enter in Iris in <b>Project Settings</b> → <b>Application</b> → <b>Version</b>.For example: <b>1.0.1</b></td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">IOS_BUNDLE_VERSION</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the version of the bundle that is used in the app. The bundle version is the value that you enter in Iris in <b>Project Settings</b> → <b>Native</b> → <b>iPhone/iPad/Watch</b> → <b>Bundle Version</b>.For example: <b>1.0.1</b></td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">IOS_DISTRIBUTION_TYPE</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the type of distribution that is used for the app. For more information, refer to <a href="https://developer.apple.com/documentation/xcode/preparing_your_app_for_distribution" target="_blank">Preparing Your App for Distribution</a>.Contains the following options:<b>Development</b>: Used if you want to build the app for testing or debugging<b>Adhoc</b>: Used if you want to build the app for Quality Assurance or User Acceptance Testing<b>Enterprise</b>: Used if you want to build and distribute your app internally and your company is enrolled in Apple's Developer Enterprise Program<b>App Store</b>: Used if you want to build and release your app on the Apple App StoreIf you are building your app to test using App Factory's DeviceFarm integration, you can select any of the above options.<span class="autonumber"><span><b><i><span style="color: #0a9c4a;" class="mcFormatColor">Note: </span></i></b></span></span>With <b>Development</b> and <b>Adhoc</b> distribution, you can install and run the app on devices that are registered in your Apple Developer account. With Adhoc, you can test the app by using the production level app services, such as Push Notifications.For <b>Enterprise</b> and <b>App Store</b> distribution, you need to build the app in <b>release</b> mode.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyB-Column1-Body1">APPLE_WATCH_EXTENSION</td><td class="TableStyle-Basic-BodyA-Column1-Body1">Specifies whether an app extension binary must be generated for the Apple Watch platform. This extension can only be built along with an iOS build.</td></tr></tbody></table>
</details>
Responsive Web related parameters
<table style="width: 80%;mc-table-style: url('Resources/TableStyles/Basic.css');" class="TableStyle-Basic" cellspacing="0"><colgroup><col class="TableStyle-Basic-Column-Column1" style="width: 30%;"><col class="TableStyle-Basic-Column-Column1" style="width: 50%;"></colgroup><tbody><tr class="TableStyle-Basic-Body-Body1"><th class="TableStyle-Basic-BodyE-Column1-Body1">Parameter</th><th class="TableStyle-Basic-BodyD-Column1-Body1">Description</th></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1"><a name="DESKTOP_WEB"></a>RESPONSIVE_WEB</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies whether the app must be built for the Responsive Web channel.If you select this check box, the <a href="#DesktopWeb" class="selected">Web related parameters</a> appear.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">PUBLISH_WEB_APP</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies whether the app must be published to the Foundry environment.<span class="autonumber"><span><b><i><span style="color: #0a9c4a;" class="mcFormatColor">Note: </span></i></b></span></span>If the app is built for both Desktop Web and SPA channels, a combined archive is generated and published to the specified Foundry environment.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">WEB_APP_VERSION</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the version of the web app. The version number is the value that you enter in Iris in <b>Project Settings</b> → <b>Application</b> → <b>Version</b>.For example: <b>1.0.1</b></td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyB-Column1-Body1">FORCE_WEB_APP_BUILD_COMPATABILITY_MODE</td><td class="TableStyle-Basic-BodyA-Column1-Body1">Specifies whether the web app package must be built by using the WAR (<code class="file_names">.war</code>) extension. The version number is the value that you enter in Iris in <b>Project Settings</b> → <b>Application</b> → <b>Force Web App Build Compatibility Mode</b>.<span class="autonumber"><span><b><i><span style="color: #ff6600;" class="mcFormatColor">Important: </span></i></b></span></span>The ZIP extension (<code class="file_names">.zip</code>) is supported from V8 ServicePack 2 on Volt MX Cloud. If your app uses plugins from earlier versions, make sure that you select this check box.WAR (<code class="file_names">.war</code>) extension is not supported with multi-tenant environments in Volt MX Foundry.</td></tr></tbody></table>
#### Web protection parameters
The web protection parameters are displayed only if [RESPONSIVE\_WEB](#DESKTOP_WEB) is enabled and the [BUILD\_MODE](#BUILD_MODE) is **release-protected**.
<table style="width: 80%;mc-table-style: url('Resources/TableStyles/Basic.css');" class="TableStyle-Basic" cellspacing="0"><colgroup><col class="TableStyle-Basic-Column-Column1" style="width: 30%;"><col class="TableStyle-Basic-Column-Column1" style="width: 50%;"></colgroup><tbody><tr class="TableStyle-Basic-Body-Body1"><th class="TableStyle-Basic-BodyE-Column1-Body1">Parameter</th><th class="TableStyle-Basic-BodyD-Column1-Body1">Description</th></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">OBFUSCATION_PROPERTIES</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the properties that are used to obfuscate the web app.For information about adding these properties to App Factory, refer to <a href="ManagingCredentials.html#Secure_JS" target="_blank">Adding Secure JS Properties</a>.For information about obtaining the secure JS properties, refer to <a href="/Volt-MX-Documentation-Archive/docs/documentation/Iris/iris_user_guide/Content/SecureyourWebApplication.html#Secure" target="_blank">Implement Protected Mode Build for Web Applications</a>.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">PROTECTION_LEVEL</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the level of protection that is used for the web app. Contains the following options:BASICMODERATECUSTOMIf you select <b>CUSTOM</b>, App Factory displays the CUSTOM_PROTECTION_PATH parameter.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">EXCLUDE_LIST_PATH</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the path to a list of files that must be excluded from the obfuscation. The path must be relative to the root of the repository.For information about the exclusion list, refer to <a href="/Volt-MX-Documentation-Archive/docs/documentation/Iris/iris_user_guide/Content/SecureyourWebApplication.html#SecureCIBuild" target="_blank">Implement Protected Mode Build for Web Applications</a>.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyB-Column1-Body1">CUSTOM_PROTECTION_PATH</td><td class="TableStyle-Basic-BodyA-Column1-Body1">Specifies the path to the custom protection configuration that you want to use for your web app. The path must be relative to the root of the repository.For information about the configuring custom protection, refer to <a href="/Volt-MX-Documentation-Archive/docs/documentation/Iris/iris_user_guide/Content/SecureyourWebApplication.html#SecureCIBuild" target="_blank">Implement Protected Mode Build for Web Applications</a>.<span class="autonumber"><span><b><i><span style="color: #0a9c4a;" class="mcFormatColor">Note: </span></i></b></span></span>This parameter is displayed only if the PROTECTION_LEVEL parameter is set to <b>CUSTOM</b>.</td></tr></tbody></table>
</details>
Custom Hooks
<table style="width: 80%;mc-table-style: url('Resources/TableStyles/Basic.css');" class="TableStyle-Basic" cellspacing="0"><colgroup><col class="TableStyle-Basic-Column-Column1" style="width: 30%;"><col class="TableStyle-Basic-Column-Column1" style="width: 50%;"></colgroup><tbody><tr class="TableStyle-Basic-Body-Body1"><th class="TableStyle-Basic-BodyE-Column1-Body1">Parameter</th><th class="TableStyle-Basic-BodyD-Column1-Body1">Description</th></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyB-Column1-Body1">RUN_CUSTOM_HOOKS</td><td class="TableStyle-Basic-BodyA-Column1-Body1">Specifies whether Custom Hooks must be run as part of the build pipeline. If this parameter is disabled, App Factory does not run Custom Hooks in the build pipeline.</td></tr></tbody></table>
</details>
Testing
<table style="width: 80%;mc-table-style: url('Resources/TableStyles/Basic.css');" class="TableStyle-Basic" cellspacing="0"><colgroup><col class="TableStyle-Basic-Column-Column1" style="width: 30%;"><col class="TableStyle-Basic-Column-Column1" style="width: 50%;"></colgroup><tbody><tr class="TableStyle-Basic-Body-Body1"><th class="TableStyle-Basic-BodyE-Column1-Body1">Parameter</th><th class="TableStyle-Basic-BodyD-Column1-Body1">Description</th></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">TEST_FRAMEWORK</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies which framework is used to test the app. Contains the following options:<b>TestNG</b><b>Jasmine</b></td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyB-Column1-Body1">RUN_NATIVE_TESTS</td><td class="TableStyle-Basic-BodyA-Column1-Body1">Specifies whether tests are run for the Native channel for the platforms. If you select this check box, the console displays additional parameters.This parameter is displayed only if the <a href="#Builds" class="selected">ANDROID or IOS</a> parameters are enabled.</td></tr></tbody></table>
#### TestNG related parameters
<table style="width: 80%;mc-table-style: url('Resources/TableStyles/Basic.css');" class="TableStyle-Basic" cellspacing="0"><colgroup><col class="TableStyle-Basic-Column-Column1" style="width: 30%;"><col class="TableStyle-Basic-Column-Column1" style="width: 50%;"></colgroup><tbody><tr class="TableStyle-Basic-Body-Body1"><th class="TableStyle-Basic-BodyE-Column1-Body1">Parameter</th><th class="TableStyle-Basic-BodyD-Column1-Body1">Description</th></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1"><a name="TEST_ENVIRONMENT"></a>TEST_ENVIRONMENT</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the environment that is used to run the tests. Contains the following options:<b>Standard</b><b>Custom</b></td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1"><a name="Appium"></a>APPIUM_VERSION</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies version of Appium that is used to run tests. This parameter is applicable for <a href="#TEST_ENVIRONMENT" class="selected"><b>Custom</b> test environments</a>.For standard environments, new versions of Appium are installed as part of the AWS run.For information about supported versions of Appium on AWS DeviceFarm, refer <a href="CustomTestEnvRun_RawMode.html">Custom Test Environment Run</a>.For information on artifacts available in the notification mail for AWS Custom Environment Run, refer <a href="RunningIrisApp.html#AWS_Custom" target="_blank">Building an App in AWS Custom Environment</a>.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">TESTNG_FILES</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the path of the TestNG files in the testing JAR file. This parameter is applicable for <a href="#TEST_ENVIRONMENT" class="selected"><b>Custom</b> test environments</a>.The <code class="file_names">testng.xml</code> file at the root of the JAR is selected by default.You can specify multiple file paths by separating them with a comma. For example:<code class="codefirst" style="font-size: 11pt;">package/testng.XML, package/appfactory/testng.xml, testng.xml</code></td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyB-Column1-Body1">AVAILABLE_TEST_POOLS</td><td class="TableStyle-Basic-BodyA-Column1-Body1">Specifies the device pool that is used to test the app. You can select an available device pool from the drop-down list.For more information about device pools, refer to <a href="Configuring_Device_Pools.html" target="_blank">Configuring Device Pools</a>.</td></tr></tbody></table>
#### Jasmine related parameters
<table style="width: 80%;mc-table-style: url('Resources/TableStyles/Basic.css');" class="TableStyle-Basic" cellspacing="0"><colgroup><col class="TableStyle-Basic-Column-Column1" style="width: 30%;"><col class="TableStyle-Basic-Column-Column1" style="width: 50%;"></colgroup><tbody><tr class="TableStyle-Basic-Body-Body1"><th class="TableStyle-Basic-BodyE-Column1-Body1">Parameter</th><th class="TableStyle-Basic-BodyD-Column1-Body1">Description</th></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">NATIVE_TEST_PLAN</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the relative path of the test plan that you want to run, for example: <code class="file_names" style="font-size: 11pt;">testRunner.js</code>.This path is relative to the <code class="file_names" style="font-size: 11pt;">/testresources/Jasmine/Mobile/Test Plans</code> folder or the <code class="file_names" style="font-size: 11pt;">/testresources/Jasmine/Tablet/Test Plans</code> folder.If this parameter is empty, the default plan (<code class="file_names" style="font-size: 11pt;">testPlan.js</code>) is selected.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1"><a name="Appium"></a>APPIUM_VERSION</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies version of Appium that is used to run tests. This parameter is applicable for <a href="#TEST_ENVIRONMENT" class="selected"><b>Custom</b> test environments</a>.For standard environments, new versions of Appium are installed as part of the AWS run.For information about supported versions of Appium on AWS DeviceFarm, refer <a href="CustomTestEnvRun_RawMode.html">Custom Test Environment Run</a>.For information on artifacts available in the notification mail for AWS Custom Environment Run, refer <a href="#AWS_Custom" class="selected">Building an App in AWS Custom Environment</a>.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyB-Column1-Body1">TESTNG_FILES</td><td class="TableStyle-Basic-BodyA-Column1-Body1">Specifies the path of the TestNG files in the testing JAR file. This parameter is applicable for <a href="#TEST_ENVIRONMENT" class="selected"><b>Custom</b> test environments</a>.The <code class="file_names" style="font-size: 11pt;">testng.xml</code> file at the root of the JAR is selected by default.You can specify multiple file paths by separating them with a comma. For example:<code class="codefirst" style="font-size: 11pt;">package/testng.XML, package/appfactory/testng.xml, testng.xml</code></td></tr></tbody></table>
</details>
Web Testing related parameters
> **_Important:_** Appium tests (for Jasmine testing) must be placed at the following path in your project: <project>/test/testNG
Selenium tests (DesktopWeb tests) must be placed at the following path in your project: <project>/test/testNG/DesktopWeb
<table style="width: 80%;mc-table-style: url('Resources/TableStyles/Basic.css');" class="TableStyle-Basic" cellspacing="0"><colgroup><col class="TableStyle-Basic-Column-Column1" style="width: 30%;"><col class="TableStyle-Basic-Column-Column1" style="width: 50%;"></colgroup><tbody><tr class="TableStyle-Basic-Body-Body1"><th class="TableStyle-Basic-BodyE-Column1-Body1">Parameter</th><th class="TableStyle-Basic-BodyD-Column1-Body1">Description</th></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">RUN_DESKTOPWEB_TESTS</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies whether.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">WEB_TEST_PLAN</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the relative path of the test plan that you want to run, for example: <code class="file_names" style="font-size: 11pt;">testRunner.js</code>. This parameter is only applicable for the Jasmine test framework.This path is relative to the <code class="file_names" style="font-size: 11pt;">/testresources/Jasmine/Desktop/Test Plans</code> folder.If this parameter is empty, the default plan (<code class="file_names" style="font-size: 11pt;">testPlan.js</code>) is selected.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">RUN_DESKTOPWEB_TESTS_ARGUMENTS</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies whether arguments (parameters) can be passed in the Maven commands for the DesktopWeb tests.For example: The argument <code class="codefirst" style="font-size: 11pt;">-Dsurefire.suiteXmlFiles=resources/Testng.xml</code> triggers the tests that are present in the <span style="font-family: monospace; font-size: 11pt;">resources/Testng.xml</span> file.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyE-Column1-Body1">AVAILABLE_BROWSERS</td><td class="TableStyle-Basic-BodyD-Column1-Body1">Specifies the browser that is used to run tests for DesktopWeb.<span class="autonumber"><span><b><i><span style="color: #0a9c4a;" class="mcFormatColor">Note: </span></i></b></span></span>App Factory only supports Google Chrome version 68.0.3419.0 for DesktopWeb testing.</td></tr><tr class="TableStyle-Basic-Body-Body1"><td class="TableStyle-Basic-BodyB-Column1-Body1">SCREEN_RESOLUTION</td><td class="TableStyle-Basic-BodyA-Column1-Body1">Specifies the screen resolution at which you want to run the tests.</td></tr></tbody></table>
- After you configure the parameters, click Build.
After App Factory completes the build, the recipients receive an email notification with the information about the build, such as the build status and artifacts. For more information, refer to Build Results Notification.