# UiPath Pack

> The UiPathPack task enables you to package an existing UiPath project into a NuGet package.

The UiPathPack task enables you to package an existing UiPath project into a NuGet package.

## Configuration

Use the following table to configure the UiPath Pack inputs.

 <colgroup>
  <col/>
  <col/>
 </colgroup>
 
  
    Argument 
    Description 
  
 
 
  
    Display name (Required) 
    Enter a name for your task. 
  
  
    Choose versioning method (Required) 
    You can select an automatically generated version, use the project version, or define a new version. For more information, see  Package Versions  . 
  
  
    Version (Required) 
    Available only on modern folders alongside a dynamic allocation strategy. Specifying the package version provides the possibility of tracking the built packages and their source versioning more efficiently. For example, the Microsoft assembly pattern can be utilized to build the NuGet package version: [Major].[Minor].[BuildNumber].[RevisionNumber].  The available options are: AutoVersion : This option automatically updates the version to the next sequential number. You can use the following task configuration example: <style> .css-186vrj2\{position:relative;word-break:break-all;margin:20px 0;\}.css-186vrj2:hover .ei6c6ug0\{display:block;\}.css-186vrj2 .ei6c6ug0\{top:10px;\} </style><style> .css-1aj4oxi\{display:none;position:absolute;background-color:var(--color-processed-code-blocks-clipboard-button);right:0;color:var(--color-foreground-emp);top:10px;\} </style><style> .css-hm11rd\{text-align:center;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;font-size:1.5rem;padding:8px;border-radius:50%;overflow:visible;color:rgba(0, 0, 0, 0.54);-webkit-transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;padding:8px;display:none;position:absolute;background-color:var(--color-processed-code-blocks-clipboard-button);right:0;color:var(--color-foreground-emp);top:10px;\}.css-hm11rd:hover\{background-color:rgba(0, 0, 0, 0.04);\}@media (hover: none)\{.css-hm11rd:hover\{background-color:transparent;\}\}.css-hm11rd.Mui-disabled\{background-color:transparent;color:rgba(0, 0, 0, 0.26);\} </style><style> .css-ia7u18\{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;box-sizing:border-box;-webkit-tap-highlight-color:transparent;background-color:transparent;outline:0;border:0;margin:0;border-radius:0;padding:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-moz-appearance:none;-webkit-appearance:none;-webkit-text-decoration:none;text-decoration:none;color:inherit;text-align:center;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;font-size:1.5rem;padding:8px;border-radius:50%;overflow:visible;color:rgba(0, 0, 0, 0.54);-webkit-transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;padding:8px;display:none;position:absolute;background-color:var(--color-processed-code-blocks-clipboard-button);right:0;color:var(--color-foreground-emp);top:10px;\}.css-ia7u18::-moz-focus-inner\{border-style:none;\}.css-ia7u18.Mui-disabled\{pointer-events:none;cursor:default;\}@media print\{.css-ia7u18\{-webkit-print-color-adjust:exact;color-adjust:exact;\}\}.css-ia7u18:focus-visible\{outline:revert;background-color:var(--color-icon-button-focus);\}.css-ia7u18:active\{background-color:var(--color-icon-button-pressed);\}.css-ia7u18:hover\{background-color:var(--color-icon-button-hover);\}.css-ia7u18:hover\{background-color:rgba(0, 0, 0, 0.04);\}@media (hover: none)\{.css-ia7u18:hover\{background-color:transparent;\}\}.css-ia7u18.Mui-disabled\{background-color:transparent;color:rgba(0, 0, 0, 0.26);\} </style><button> assignment </button><style> .css-1uw1jel.css-1uw1jel.css-1uw1jel.css-1uw1jel\{font-size:13px;margin-top:0;padding:20px;background:var(--color-processed-code-blocks-processed-pre-background);border:0;white-space:pre-wrap;box-shadow:none;border-radius:0;\}.css-1uw1jel.css-1uw1jel.css-1uw1jel.css-1uw1jel.language-css .token.string,.css-1uw1jel.css-1uw1jel.css-1uw1jel.css-1uw1jel .style .token.string,.css-1uw1jel.css-1uw1jel.css-1uw1jel.css-1uw1jel .token.entity,.css-1uw1jel.css-1uw1jel.css-1uw1jel.css-1uw1jel .token.operator,.css-1uw1jel.css-1uw1jel.css-1uw1jel.css-1uw1jel .token.url\{background:transparent;\}.css-1uw1jel .clipboard-code\{display:none;\} </style><pre><code>- task: UiPathPack@3 inputs: versionType: AutoVersion projectJsonPath: '$(projectFolder)/project.json' outputPath: '$(Build.ArtifactStagingDirectory)\artifact-manifests'</code> - task: UiPathPack@3 inputs: versionType: AutoVersion projectJsonPath: '$(projectFolder)/project.json' outputPath: '$(Build.ArtifactStagingDirectory)\artifact-manifests'</pre>ManualVersion : With this option, you can specify your own version number. You can use the following task configuration example: <button> assignment </button><pre><code>- task: UiPathPack@3 inputs: versionType: ManualVersion version: '$(Build.BuildNumber)' projectJsonPath: '$(projectFolder)/project.json' outputPath: '$(Build.ArtifactStagingDirectory)\artifact-manifests'</code> - task: UiPathPack@3 inputs: versionType: ManualVersion version: '$(Build.BuildNumber)' projectJsonPath: '$(projectFolder)/project.json' outputPath: '$(Build.ArtifactStagingDirectory)\artifact-manifests'</pre><style> .css-17xdpgx\{word-break:break-word;\}.css-17xdpgx div\{padding-left:10px;\}.css-17xdpgx code\{font-size:16px;\}.css-17xdpgx img\{margin-bottom:-5px;\} </style>CurrentVersion : This option keeps the version the same as specified in the <code>project.json</code> file. You can use the following task configuration example: <button> assignment </button><pre><code>- task: UiPathPack@3 inputs: versionType: CurrentVersion projectJsonPath: '$(projectFolder)/project.json' outputPath: '$(Build.ArtifactStagingDirectory)\artifact-manifests'</code> - task: UiPathPack@3 inputs: versionType: CurrentVersion projectJsonPath: '$(projectFolder)/project.json' outputPath: '$(Build.ArtifactStagingDirectory)\artifact-manifests'</pre> 
  
  
    Project(s) Path (Required) 
    Select the location of the project that is going to be packaged. It can be a direct path to a project.json file or a directory with one or multiple projects. In the latter case, each level one project is packaged individually. 
  
  
    Choose output type (Required only for manual versioning) 
    Set a project type for the project that is going to be packaged. If you set <code>None</code> , the project type is going to be extracted from the project's JSON file.The following project types are supported: 'Process', 'Library', 'Tests', 'Objects', 'None'. 
  
  
    Orchestrator connection (Required) 
    Configure the service connection to access UiPath Orchestrator services. You can configure a connection only for this step or use an existing global connection. For more information, see  Configuring UiPath Orchestrator service connection  . 
  
  
    Output Path (Required) 
    Set a folder path where the package is going to be placed. 
  
  
    Split output into design and runtime libraries 
    Select this option to split the output into design and runtime libraries. By default, this option is not activated. 
  
  
    Disable Built-In NuGet Feeds 
    Select this option to disable built-in NuGet feeds. By default, this is set to false. 
  
  
    Source code version information and Automation Hub Idea URL 
    Select this option to enable package metadata including source code version information and Automation Hub Idea URL. When enabled, you can specify repository details and project URL. 
  
  
    The full path to project.json within the remote repository 
    Specify the full path to project.json within the remote repository. Available when package metadata is enabled. 
  
  
    The commit id 
    Specify the commit ID from your version control system. Available when package metadata is enabled. Example: <code>$(Build.SourceVersion)</code> 
  
  
    The repository branch 
    Specify the repository branch name. Available when package metadata is enabled. Example: <code>$(Build.SourceBranchName)</code> 
  
  
    The type of the repository 
    Specify the type of the repository (e.g., git). Available when package metadata is enabled. 
  
  
    Automation Hub Idea URL 
    Specify the Automation Hub Idea URL to link the package to a specific automation idea. Available when package metadata is enabled. 
  
  
    Release Notes 
    Specify release notes for the package. Available when package metadata is enabled. 
  
  
    Run workflows analysis 
    Select this option to run workflow analysis rules on your automation project (e.g., Fail jobs in case of errors). By default, this option is not activated. For more information, see  Application Testing Workflow Analyzer Rules  . 
  
  
    Governance File Path 
    Specify the path to governance policies containing Workflow Analyzer rules. Policies can be downloaded from Automation Ops or extracted from the exported compressed zip file from Studio. Available when workflow analysis is enabled. 
  
  
    Certificate Path 
    Specify the path to the certificate file in .pfx format used to sign the package. When provided, the package will be digitally signed with the certificate. Example: <code>$(Build.SourcesDirectory)\certificates\signing-cert.pfx</code> 
  
  
    Certificate Password 
    Specify the password for the certificate. It is recommended to store this value as a secret variable in Azure DevOps. Example: <code>$(CertificatePassword)</code> 
  
  
    Timestamp Server URL 
    Specify the URL of the timestamp server to use when signing the package. Timestamping ensures the signature remains valid even after the certificate expires. Example: <code>https://timestamp.digicert.com</code> 
  
  
    Trace Level 
    Select the logging level from the dropdown list. 
  
 

## YAML pipeline

You can preview a fully parsed YAML document for the UiPath Pack.

### Example: Basic package creation

```yaml
- task: UiPathPack@2
  inputs:
    versionType: AutoVersion
    projectJsonPath: '$(Build.SourcesDirectory)\MyFirstProcess'
    outputPath: '$(Build.ArtifactStagingDirectory)\Packages\MyFirstProcess'
    outputType: 'Process'
    orchestratorConnection: 'service-connection-name'
    traceLevel: 'Information'
```

### Example: Package with signing

```yaml
- task: UiPathPack@2
  displayName: 'Pack and Sign UiPath Project'
  inputs:
    versionType: 'ManualVersion'
    version: '1.0.$(Build.BuildId)'
    projectJsonPath: '$(Build.SourcesDirectory)\MyAutomationProject'
    outputPath: '$(Build.ArtifactStagingDirectory)\Packages'
    outputType: 'Process'
    orchestratorConnection: 'uipath-orchestrator-connection'
    certificatePath: '$(Build.SourcesDirectory)\certificates\signing-cert.pfx'
    certificatePassword: '$(SigningCertPassword)'
    timestampServerUrl: 'http://timestamp.digicert.com'
    traceLevel: 'Information'
```

### Example: Package with workflow analysis and signing

```yaml
- task: UiPathPack@2
  displayName: 'Pack, Analyze, and Sign Project'
  inputs:
    versionType: 'ManualVersion'
    version: '$(Major).$(Minor).$(Build.BuildId)'
    projectJsonPath: '$(Build.SourcesDirectory)\EnterpriseAutomation'
    outputPath: '$(Build.ArtifactStagingDirectory)\Packages'
    outputType: 'Process'
    orchestratorConnection: 'uipath-orchestrator-connection'
    runWorkflowAnalysis: true
    certificatePath: '$(Pipeline.Workspace)\secure-files\company-cert.pfx'
    certificatePassword: '$(CertPassword)'
    timestampServerUrl: 'http://timestamp.digicert.com'
    traceLevel: 'Verbose'
```

:::note
When using package signing, store your certificate password as a secret variable in Azure DevOps. Navigate to **Pipelines > Library > Variable groups** or define it in your pipeline variables with the lock icon enabled to keep it secure.
:::
