Helix Core is now P4. Product user interfaces will be updated soon. Learn more >>

P4 for Jenkins Documentation | 1.17.3

# Freestyle job setup

Freestyle jobs in Jenkins are created and configured through the graphical user interface (GUI). Once a job is set up, you can review the script Jenkins generates behind the scenes. This is a useful way to understand what the scripts include.

## Credentials

This plugin integrates with the Jenkins Credential Store, simplifying the management of P4 Server (P4D) connection across multiple Jenkins jobs. For details about creating a Perforce Password Credential or Perforce Ticket Credential, see Add a credential.

## Add a new Freestyle job

To set up a new Jenkins Freestyle job, follow these steps to create the project and begin configuring its settings.

1. From the Jenkins dashboard, click New item from the sidebar menu.
2. At the top of the page, enter a name for the new job in the Enter an item name field.
3. Click Freestyle project.
4. Click OK to start configuring your new Freestyle job.

5. (Optional) Add a description in the Description field.

6. Proceed with configuring the job, starting with Source Code Management.

## Configure Freestyle job

- Source Code Management

- Perforce Credentials

- Workspace behavior

- Populate options

- Parallel Sync

- Polling build filters

- Repository browser

- Build Triggers

- Build Steps

- Post-build Actions

### Source Code Management

To configure the job to use the Perforce P4 Server, click the Perforce Software radio button (see the screenshot below).

### Perforce Credentials

Select the credentials for the job from the Perforce credentials dropdown.

### Workspace behavior

The Workspace behavior you select determines which configurations are available to you.

Many of the workspace fields can include environment variables to help define their value.

To enable you to identify builds, consider using variables in the Workspace name. For more information about environment variables, see Variable Expansion.

Perforce workspaces support the following behaviors:

- Manual (custom view): Manually define the workspace view and sync options. Creates the workspace if it does not already exist or updates the workspace spec by setting the various options if it already exists. Jenkins will fill out the workspace root and may override the clobber option. For details about manually configuring your workspace, see Manual workspace.
- Spec File (load workspace spec from file in Perforce): Loads the workspace configuration from a depot file containing a client workspace spec. This is the same output as p4 client -o and the Spec depot .p4s format. The name of the Workspace must match the name of the client workspace spec. For details about using a spec file for your workspace, see Spec File workspace.
- Static (static view, controller only): Uses a predefined workspace, the workspace must have a valid view and must already exist. The plugin user must either own the workspace or the spec must be unlocked allowing the plugin user to make edits. The workspace view remains static, but Jenkins will update other fields such as the workspace root and clobber option. For details about using a static predefined workspace, see Static workspace.
- Streams (view generated by Perforce for each node): Uses a specified stream to generate the workspace view. The name of the workspace is generated using the Workspace Name Format field. This makes it an ideal choice for Matrix builds. For details about using a stream to generate the workspace, see Streams workspace.
- Template (view generated for each node): Uses a specified template to generate the workspace view. The name of the workspace is generated using the Workspace Name Format field. This makes it an ideal choice for Matrix builds. For details about using a template to generate the workspace, see Template workspace.

### Populate options

The Populate option you select determines which configurations are available to you. Perforce populates the workspace with the file revisions needed for the build, the options are:

- Auto cleanup and sync: Use when the Perforce P4 Server controls the files in the workspace. This is an efficient option that cleans and syncs file revisions in the workspace. Extra (non versioned files) are removed, missing and modified files are re-added. This option is best for clean builds. For details about the Auto cleanup and sync options, see Auto cleanup and sync.
- Flush workspace: Use when files in the workspace are not added by the Perforce P4 Server. No file Sync or cleanup is attempted and no files are removed, but the workspace "have list" is updated. This is effectively the same as using the p4 sync -k command. For details about the Flush workspace options, see Flush workspace.
- Forced clean and sync: Not recommended because this option is very inefficient. Use if you do not trust the content of your workspace. Removes all of the files in the workspace root, including the build history, and then force syncs the required files. For details about the Forced clean and sync options, see Forced clean and sync.
- Graph force clean and sync: Perforce Git Connector required. Use for Perforce Graph and Hybrid only. Removes all of the files in the workspace root, including the build history, and then force syncs the required files. For details about the Graph force clean and sync options, see Graph force clean and sync.
- Preview check only: No file sync or cleanup is attempted, and the Workspace "have list" is not updated. This is effectively the same as using the p4 sync -n command. For details about the Preview check only options, see Preview check only.
- Sync only: Use if you have a hand-crafted build environment that you don't want to lose any files from. No cleanup is attempted and the sync will update all files (as CLOBBER is set) to the required revisions. This option is best for incremental builds and is mostly used for Pipeline builds. For details about the Sync Only options, see Sync Only.

### Parallel Sync

Parallel sync enables concurrent transfer of files between Jenkins and the P4 Server. Parallel sync can greatly reduce the amount of time it takes to update a workspace, especially when connecting across a high latency network. For more information on parallel sync, see Using parallel processing for submits and syncs in P4 Server Administration Documentation. Parallel sync is disabled by default, to enable parallel sync:

1. Click Advanced.
2. Select Enabled.
3. The parallel sync settings depend on the capabilities of the Jenkins build machine and the P4 Server:
   - Threads: Set the number of threads available for parallel sync.
   - Minimum Files: If the number of files being sync'ed is less than this value, parallel sync is not used.
   - Minimum Bytes: If the total size of files being sync'ed is less than this value, parallel sync is not used.

### Polling build filters

When polling is used, changes can be filtered to not trigger a build. If the build has more than one filter, the filters are processed starting from the top of the list of filters. Filters can be dragged up or down the list to change the order they are processed in. Click Add a new build filter and select a filter from the dropdown list, options are:

- Exclude changes from Depot path: Changes can be filtered to not trigger a build if all of the files within a change match the specified path. For examples, see Exclude changes from Depot path.
- Exclude changes from user: Changes owned by the Perforce P4 Server user specified in the filter will not be built.
- Exclude changes from outside Java pattern: Changes can be filtered to not trigger a build if none of the files within a change match the Java patterns (regular expression) listed. For examples, see Exclude changes from outside java pattern.
- Exclude changes outside view mask: Changes can be filtered to not trigger a build if none of the files within a change are contained in the view mask. For examples, see Exclude changes outside view mask.
- Polling latest change: A build is carried out for the latest change found during polling.
- Polling per change with pin: A build is carried out for each submitted change, but the polling event is pinned to a specific changelist or label. This ensures that builds always start from the pinned point and proceed incrementally with each new change.

- Polling per change: A build is carried out for every change that is submitted. The polling event will only return the oldest unbuilt change, resulting in incremental builds.

### Repository browser

Repository browsing lets Jenkins use an external browser to navigate files and changes associated with a Jenkins build. Select the P4 Code Review browser from the Repository browser dropdown list, and provide a valid URL to the external browser.

### Build Triggers

If no triggers are set, Jenkins will build based on the Polling build filters in use.

- Perforce triggered build: A build trigger can be added to the job after you have tested the job and proved that it works correctly. For instructions about configuring a build trigger, see Automatic build.
- Poll SCM: If you enable Poll SCM, ensure that your Auto build filters are configured to suit regular builds and that the polling frequency is longer than the time the build takes to complete.

It is generally better to use the Perforce triggered build option to trigger a build based on an specific event, such as a submitted change.

### Build Steps

The P4 Plugin supports unshelving of one or more shelved changes into your Jenkins workspace as a build step. To add unshelving as a build step, click the Add build step button and select Perforce: Unshelve.

For more information about Perforce: Unshelve, see Perforce: Unshelve.

### Post-build Actions

Jenkins can carry out a number of actions once the build has completed. If the build has more than one post-build action, the actions are processed starting from the top of the list of actions. Post-build actions can be dragged up or down the list to change the order they are processed in.

Click Add post-build action and select an action from the dropdown list, options are:

- Perforce: ApproveImpl review: Perforce P4 Code Review required. Sets the P4 Code Review review state when the build completes. For more information about using Perforce: ApproveImpl review, see Perforce: ApproveImpl Review.
- Perforce: Cleanup: Select to cleanup the workspace after the build. For more information about using Perforce: Cleanup, see Perforce: Cleanup.
- Perforce: Label build: Jenkins can tag builds automatically when the build completes. The Tags are stored in the Perforce P4 Server as Automatic Labels with the label view based on the workspace at the time of tagging. For more information about using Perforce: Label Build, see Perforce: Label Build.
- Perforce: Publish assets: Jenkins can automatically shelve or submit build assets to the Perforce P4 Server. For example, you can use this function to publish a PDF of the release notes to the P4 Server. For more information about using Perforce: Publish Assets, see Perforce: Publish Assets.

## Save

When you have finished configuring the job, click Save.

## Building

Now that you have configured your job it is ready to be built. For information about building jobs, see Building Jobs.

Your search for returned results