# Build and Deploy or Build

## Overview

The build and Deploy and Build jobs share the same available job configuration properties, which are split into five main categories:

* [General Properties](#general-properties)
* [Server Configuration](#server-configuration)
* [Build Options](#build-options)
* [Customization](#customization)

## General Properties

### Servoy Version

The Servoy product version that is used during the build.

**Options**

* **Current** (fixed) :Current, stable quarterly release.
* **Current LTS** (fixed): Current LTS (long-term support build)
* **Previous LTS** (fixed): Prior year LTS
* **Latest** (dynamic): Latest stable quarterly release
* **Latest LTS** (dynamic): Latest LTS
* **RC Versions** (fixed): Latest RC (release candidate) version
* **Nightly** (dynamic): Latest nightly build from upcoming release
* **Nightly LTS** (dynamic): Latest nightly build from upcoming LTS
* **Nightly Release** (dynamic): Latest nightly build from upcoming release candidate (public beta)

{% hint style="info" %}
You have the option to choose a **fixed** version or a **dynamic** version. Fixed versions are decided once, at configuration-time. Dynamic versions indicate that your job will choose the appropriate version at build-time. This means you do not have to make a configuration change to, for example always build on the latest version.
{% endhint %}

### Solution Name

Servoy solution to export. For multi solution please use a comma (,) delimited list (Example: mainSolution, secondarySolution)

{% hint style="info" %}
The first solution will be the main build, used for all url generation etc.
{% endhint %}

### Redirect Solution Name

Solution name used as a redirect in the index.html

### Job Trigger

The trigger type for this job. This determines the status displayed in the Job section of the delivery pipeline.

**Options**

* **Trigger (Auto):** Executed based on source commits.
* **Timer (Scheduled):** Executed on a schedule based on configured cron-timing.
* **Manual (On-Demand):** Executed manually from the ServoyCloud Control Center.

{% hint style="info" %}
Build execution subject to throttling based on your commercial plan. Production environments can only be built manually.
{% endhint %}

### Timing

Cron-timing configuration used by the job Trigger Timer property. See the [Cron Editor](https://crontab.guru/) to generate cron schedule expressions.

{% hint style="info" %}
Build execution subject to throttling based on your commercial plan. Production environments can only be built manually.
{% endhint %}

***

### Success Email Recipients

Comma (,) delimited list of email addresses for successful build email notifications.

Example: <primary@email.com>, <secondary@email.org>

### Failed Email Recipients

Comma (,) delimited list of email addresses for failed build email notifications.

Example: <primary@email.com>, <secondary@email.org>

***

### Repository Branch

SCM branch to checkout the source, for example: `develop`

### Repository Type

Defines the SCM type used for the job.

**Options**

* **GIT**
* **SVN**

### Repository URL

The SCM URL, specifying the location of a remote repository.

### Update GIT Submodules

Enable to update all submodules to the latest version (tip of the branch)

### Credentials

Username and password for the GIT/SVN Server.

#### Update Credentials

Use the **“Update Credentials”** button when you want to configure or restore [credentials ](#credentials)for the GIT/SVN Server.

## Server Configuration

### License Key

Servoy License Key

### License Name

Servoy License name

### License Type or Count

Servoy License type

**Options**

* **SERVER**
* **Count**: Enter the number of Servoy licenses

***

### RabbitMQ Hostname

Set the hostname of the AMQP (RabbitMQ) server to connect to

### RabbitMQ Username

Set the username of the AMQP (RabbitMQ) server to connect to

### RabbitMQ Password

Set the password of the AMQP (RabbitMQ) server to connect to

***

### Servoy Admin Username

Default username for the servoy-admin page

## Build Options

### Build NG Titanium (TiNG)

Specifies if the build should export TiNG. Available for Servoy versions >= 2021.03. When enabled, the default redirect solution will be TiNG.

### Build NG Classic

Specifies if the build should export NG Classic. Enabled by default for Servoy versions before 2022.09

### Use new EcmaScript parser

Enable to use the new Servoy EcmaScript parser. Supported for Servoy Developer versions >= 2023.06

***

### Database suffix

DB suffix that can be added in the properties template file. It is needed when running multi solutions on the same DB. When empty, there will be no suffix.

### Include Metadata

Enable to include application metadata and sync with the target metadata database

### Only allow data model changes for dbs

Comma (,) delimited list of databases allowing database model changes. When empty, it will allow data model changes on all databases

***

### Overwrite All Properties

Enable to overwrite all application config properties with the generated build

### Overwrite All Database Properties

Enable to overwrite all database config properties with the generated build

### Max Startup/Deployment time

Max Startup/Deployment time of a build, default this is 15 minutes. Setting this to a different value can break the deployment of the solution.

***

### Include Users

Enable to include users from the resources project in the resulting build

### Users/Groups Policy

Specify how users and groups are updated in the resulting build

**Options**

* Don’t Import users
* Create users & update groups
* Overwrite completely

***

### Excluded plugins

Comma (,) delimited list of excluded plugins that should be included in the generated build

### Excluded Component Packages

Comma (,) delimited list of excluded component packages that should be included in the generated build

### Excluded Service Packages

Comma (,) delimited list of excluded service packages that should be included in the generated build

### Excluded Plugins

Comma (,) delimited list of excluded plugin that should be included in the generated build

### Excluded LAFs

Comma (,) delimited list of excluded LAFs that should be included in the generated build.

### Excluded Beans

Comma (,) delimited list of excluded beans that should be included in the generated build

### Additional Component Packages

Comma (,) delimited list of additional component packages that should be included in the generated build

### Additional Service Packages

Comma (,) delimited list of additional service packages that should be included in the generated build

## Quality Control

### Code Coverage

Toggle switch to enable or disable Istanbul code coverage. Enabling this property also enables Code Coverage information in the Pipeline and Package Details.

### Code Analysis

Toggle switch to enable or disable plato reporting (code quality). Enabling this property also enables Code Analysis information in the Pipeline and Package Details.

### Code Analysis - Exclusion

Optional property used with Code Analysis to exclude folders or files. Comma (,) delimited list of folders or files to exclude: (Example folder: \\\*\\\*/svyUtils/\\\*\\\*, Example file: \\\*\\\*/API/z\\\*.js)

***

### Unit Testing

Toggle switch to enable or disable JSUnit testing

### End-to-End Testing

Toggle switch to enable protractor End-to-End testing

### End-to-End Config

To set up E2E configuration for the build, set the value of this property to “config.json”

### Test Solution

Servoy test solution used for running JSUnit tests

## Customization

### New Custom Property

Custom properties can be any configuration properties to be injected/overwritten during the build process.

To add a new property, click on “New” button in the Customization section and provide details for:

* **Field type**:
  * **E2E (End-to-End)**: They are used for E2E testing. Once an E2E property is configured, it can be called by adding `var e2e_param = browser.params.field_name` in one of your custom steps
  * **Custom**
* **Variable type:** It can be Boolean, String or Password
* **Field Name:** Property name. On save, the system will automatically add a prefix to your variables to distinguish them, as follows:
  * **E2E:** 'E2E\_VAR\_'
  * **Custom:** 'CUSTOM\_'
* **Value:** This value will be substituted for the named property at build-time

{% hint style="info" %}
Spaces in field names will be replaced by '\_'
{% endhint %}

E.g. A configuration item E2E field with the following:

* **Field type**: E2E
* Variable type: String
* Field Name: 'login password'

will result in a property with the name: 'E2E\_VAR\_LOGIN\_PASSWORD'

If you want to add multiple custom properties without closing the dialog, use the **“Save and New”** button.\\
