Configuring a Project

Select Projects from the menu.

Double click on an existing project and click on the Configuration tab (second tab).

Enter/modify values for the following different configurations for the Project.

Project Configuration

Field Name

Required

Description

Active

Yes

Whether or not the project is active. Build and Deploy workflows cannot be executed on inactive projects.

SCM Type

Yes

Type of the Source Control Management. Default value can be configured using Project Defaults.

Priority

Yes

Provides a mechanism for establishing dependencies between projects at deployment time. When multiple deployments are queued they will be processed in order of priority (lowest priority takes precedence). The scope of the priority is defined by the Priority Scope.

Priority Scope

No

Defines the scope in which priorities are evaluated at runtime. Application scope indicates this project's priority will be evaluated against other projects in this application only. Folder scope indicates this project's priority will be evaluated against other projects in this application's parent folder. Global scope indicates this project's priority will be evaluated against all other FlexDeploy projects.

Package Name ScriptNo

This is only applicable to partial deployment projects. User can configure groovy script to default name for new packages. Variables supported are

  • ProjectName
  • StreamName
  • PackageNameSequence - system wide sequence.

It is possible to just use PackageNameSequence as script, in which case package names will be like 10001, 10002 etc.

If you use script like ProjectName + "-" + PackageNameSequence, then generated package names will be something like XXHR-10001, XXHR-10002 etc.

Generated package name must use only allowed characters - Letters,Numbers,Underscore,Dash,Dot,Space,Parentheses

Package Build TypeNo

This is only applicable to partial deployment projects. User can configure the usage of packages for the project and in release which references this project. There are 3 options:

  • All Files Only
  • Packages Only
  • Both

All Files means the project can build and deploy (All Files) only, no packages can be built or deployed. Releases can only add this project with "(All Files)" package name.

Packages means the project can only build and deploy packages, no (All Files) can be be built or deployed. Releases can only add this project with non-"(All Files)" package name.

Both means there are no package restrictions.

Package Build Type is defaulted to Project Defaults PackageBuildType value. If empty then it is set to Both.

Description

No

A description of the project.

Build Workflow

Yes

The build workflow to run for this project's builds. Build workflow will execute on specified Build Instance.

Build Instance

Yes

The instance to run the build workflow on.

Pre-deploy WorkflowNoThe pre-deploy workflow to run for this project's deployment. Pre-deploy workflow will execute in the selected Deploy Instance(s).

Deploy Workflow

Yes

The deploy workflow to run for this project's deployments.

Deploy Instance(s)

Yes

One or more deploy instances available to run deploy workflows on.

SCM Configuration

The SCM configuration is based on the SCM Type that is selected for the project, and is currently applicable for SubVersion, Git, Microsoft TFS, CVS, and PVCS SCM types only.

SCM Configuration values (except Instance drop down) are specified as Groovy scripts. This provides users with more flexibility, as values for each element is evaluated for Project Version and Stream being used for Build. Refer to the table below.

Variable Name

Description

ProjectName

Name of current project being built.

StreamName

Name of current stream being built.

MainStream

Evaluates to true if current stream being built is main stream.

ProjectVersion

Project version name being built.

StreamAttribute1

Attribute 1 of stream being built.

StreamAttribute2

Attribute 2 of stream being built.

StreamAttribute3

Attribute 3 of stream being built.

Subversion SCM Configurations

For Subversion one or more project sources can be configured with the details as described in the table below. FlexDeploy provides flexibility by supporting groovy script to define these values. Click on the expression button to include variables as part of the value. Additional sources can be added by Clicking on the Add Source button.

Defaults for Subversion source configurations can be configured using Project SVN Setup Defaults. This can be configured such that

  1. All Subversion project sources will get same values (including SVN Instance), or
  2. you can configure defaults by SVN Instance.

First approach works well if you have single Subversion repository. If you have multiple Subversion repositories in your environment, then you can utilize second approach to configure project based on some criteria. You can accomplish this by placing an "if" statement within Groovy script for the defaults. With this approach all attributes in Subversion configurations will be empty initially, and when user selects SVN Instance, configuration values will be defaulted appropriately.

In example below, if Project Name is Project1 and Stream Names are trunk and fixpack1, here is what will be actual values of various configurations.

  • Trunk Path (used only for main stream) - /trunk/HumanResources/Project1
  • Branch Path (used for all streams other than main) - /branches/HumandResources/Project1/fixpack1
  • Tag Path - /tags/HumanResources/Project1/1.0.0

This structure does not need to match with your Subversion repository. You just need to define Groovy scripts to match your repository structure.

Field Name

Required

Description

SVN Instance

Yes

An SCM Instance representing a Subversion repository. See Instances section of this guide to create SCM Type Instance. Refer to the Instances page for more on SCM Instances.

Trunk Path Script

Yes

Path for the trunk within selected repository.

Branch Path Script

No

Path for the branches within selected repository. Use StreamName variable to identify branch name used at runtime.

Tag Path Script

No

Path for the tag within the selected repository. Use ProjectVersion variable to specify identifier of current build.

Checkout Folder Script

Yes

Optional sub-folder to use for export/checkout operations during build workflow execution.

Git SCM Configurations

For Git one or more project sources can be configured with the details as described in table below. FlexDeploy provides flexibility by supporting groovy script to define these values. Click on expression button to include variables as part of the value. Additional sources can be added by Clicking on the Add Source button.

Defaults for Git source configurations can be configured using Project GIT Setup Defaults. This can be configured such that

  1. All Git project sources will get same values (including Git Instance), or
  2. you can configure defaults by Git Instance. First approach works well if you have single Git repository.

If you have multiple Git repositories in your environment, then you can utilize the second approach to configure the project based on some criteria. You can accomplish this by placing an "if" statement within Groovy script for the defaults. With this approach all attributes in Git configurations will be empty initially, and when user selects Git Instance, configuration values will be defaulted appropriately.

In example below, if Project Name is Project1 and Stream Names are master and fixpack1, here is what will be actual values of various configurations.

  • Branch Name - master or fixpack1 depending what is selected during Build request
  • Tag Name - 1.0.0

This structure does not need to match with your Git repository. You just need to define Groovy scripts to match your repository structure. In many cases you might be sharing Git repository with other folders, so you may have to configure Sparse Checkout Folders for efficient build process.

Field Name

Required

Description

Git Instance

Yes

An SCM Instance representing a Git repository. See the Instances section to create SCM Type Instance. Refer to the Instances page for more on SCM Instances.

Branch Name Script

Yes

Path for the branches within selected repository. Use StreamName variable to identify branch name used at runtime.

Tag Name Script

Yes

Path for the tag within the selected repository. Use ProjectVersion variable to specify identifier of current build.

Sparse Checkout Folders Script

No

This is very useful when you have many folders in your Git repository, but your project only needs few folders for build. This can be specified as one more values by using comma. For example, HRDemoApp, which will only pull HRDemoApp from Git repository. Continuous integration support will make sure to check for changes only in these folders as well if configured.

Checkout Folder Script

No

Optional sub-folder to use for clone operation during build workflow execution.

CVS SCM Configurations

For CVS one or more project sources can be configured with the details as described in table below. FlexDeploy provides flexibility by supporting groovy script to define these values. Click on expression button to include variables as part of the value. Additional sources can be added by Clicking on the Add Source button.

Defaults for CVS source configurations can be configured using Project CVS Setup Defaults. This can be configured such that

  1. All CVS project sources will get same values (including CVS Instance), or
  2. you can configure defaults by CVS Instance. First approach works well if you have single CVS repository.

If you have multiple CVS repositories in your environment, then you can utilize the second approach to configure the project based on some criteria. You can accomplish this by placing an "if" statement within Groovy script for the defaults. With this approach all attributes in CVS configurations will be empty initially, and when user selects CVS Instance, configuration values will be defaulted appropriately.

Field Name

Required

Description

CVS Instance

Yes

An SCM Instance representing a CVS repository. See the Instances section to create SCM Type Instance. Refer to the Instances page for more on SCM Instances.

Module Names Script

Yes

Module Names or Module subdirectories to be selected from repository. Module subdirectories should traverse starting at the Module Name. Multiple Modules may be selected by separating the names/paths with commas.

Branch Name Script

Yes

Path for the branches within selected repository. Use StreamName variable to identify branch name used at runtime.

Tag Script

Yes

Tag script to be used when creating tags for the project in the repository. Use ProjectVersion variable to specify identifier of current build.

Checkout Folder Script

No

Optional sub-folder to use for clone operation during build workflow execution.

TFVC SCM Configurations

For TFVC one or more project sources can be configured with the details as described in table below. FlexDeploy provides flexibility by supporting groovy script to define these values. Click on expression button to include variables as part of the value. Additional sources can be added by Clicking on the Add Source button.

Defaults for TFVC source configurations can be configured using Project TFVC Setup Defaults. This can be configured such that

  1. All TFVC project sources will get same values (including TFVC Instance), or
  2. you can configure defaults by TFVC Instance. First approach works well if you have single TFVC repository.

If you have multiple TFVC repositories in your environment, then you can utilize the second approach to configure the project based on some criteria. You can accomplish this by placing an "if" statement within Groovy script for the defaults. With this approach all attributes in TFVC configurations will be empty initially, and when user selects TFVC Instance, configuration values will be defaulted appropriately.

Field Name

Required

Description

TFVC Instance

Yes

An SCM Instance representing a TFVC repository. See the Instances section to create SCM Type Instance. Refer to the Instances page for more on SCM Instances.

Main Path Script

Yes

Main Path to a project in the selected repository.

Branch Path Script

Yes

Path for the branches within selected repository. Use StreamName variable to identify branch name used at runtime.

Label Name Script

Yes

Label script to be used when creating labels for the project in the repository. Use ProjectVersion variable to specify identifier of current build.

Get Folder Script

No

Optional sub-folder to use for clone operation during build workflow execution.

PVCS SCM Configurations

For PVCS one or more project sources can be configured with the details as described in table below. FlexDeploy provides flexibility by supporting groovy script to define these values. Click on expression button to include variables as part of the value. Additional sources can be added by Clicking on the Add Source button.

Release

PVCS was made available in the 4.5.3 release of FlexDeploy


Defaults for PVCS source configurations can be configured using Project PVCS Setup Defaults. This can be configured such that

  1. All PVCS project sources will get same values (including PVCS Instance), or
  2. you can configure defaults by PVCS Instance. First approach works well if you have single PVCS repository.

If you have multiple PVCS repositories in your environment, then you can utilize the second approach to configure the project based on some criteria. You can accomplish this by placing an "if" statement within Groovy script for the defaults. With this approach all attributes in PVCS configurations will be empty initially, and when user selects PVCS Instance, configuration values will be defaulted appropriately.

Field Name

Required

Description

PVCS Instance

Yes

An SCM Instance representing a PVCS repository. See the Instances section to create SCM Type Instance. Refer to the Instances page for more on SCM Instances.

Project Path Script

Yes

Project Path Script to be used to get files from.  This will be a path present in the Project Database configured on the instance.  Use "/" to get all files in the Project Database.

Promotion Group ScriptYesPromotion Group name to be used.  Use StreamName variable to identify Promotion Group name at runtime.
Use Promotion Group ScriptYesWhether the Promotion Group script should be used to identify the stream.  If false, then the branch script will be used.

Branch Name Script

Yes

Branch name to be used within selected repository. Use StreamName variable to identify branch name used at runtime.

Label Script

Yes

Label script to be used when creating labels for the project in the repository. Use ProjectVersion variable to specify identifier of current build.

Checkout Folder Script

No

Optional sub-folder to use for clone operation during build workflow execution.

Streams Configuration

A stream represents a branch of development. By default, a Main Stream is created along with the project, typically representing trunk/head stream for the project. You can add additional streams by clicking on the Create Stream button. Enter the fields for the stream using the details in table below.



Field Name

Required

Description

Stream Name

Yes

Name of the stream.

Version Syntax Script

Yes

Groovy script used to generate the project version id for build requests. Use the ProjectBuildSequence variable to use an auto incrementing integer maintained across project. Use the PackageBuildSequence variable to use an auto incrementing integer maintained across specific package for this project. Use the SequenceNumber variable to use an auto incrementing integer for each build of the stream. ProjectBuildSequence and SequenceNumber can be reset by clicking the Next ProjectBuildSquence or Next SequenceNumber links, respectively. Use Source1Revision variable to use the latest SCM revision number of the first project source (i.e. Source 1). 

If you want to control project version based on discovery made during build workflow execution, then return FD_BUILD_VERSION output from build workflow.

Attribute 1

No

An optional attribute which can be used in groovy expressions within the SCM source(s) configuration.

Attribute 2

No

An optional attribute which can be used in groovy expressions within the SCM source(s) configuration.

Attribute 3

No

An optional attribute which can be used in groovy expressions within the SCM source(s) configuration.

Description

No

Description of the stream.


Click the Save button to save the changes.