From version Octopus 2024.1.4058 we support Artifactory Generic Repositories. This functionality is behind the ArtifactoryGenericFeedFeatureToggle
feature toggle, to request this functionality early, please contact support.
To use the Artifactory Generic Feeds feature you will need a PRO or higher license of Artifactory
If you’re using an Artifactory Generic Repository, you can create a feed in Octopus and use artifacts as part of your deployments. To create a feed go to Library ➜ External feeds. Select the Add feed button and selecting the Artifactory Generic Repository feed type.
You will then need to provide a feed name, the Artifactory repository name, an access token and the repository Artifact Path regex.
Artifactory generic feeds accommodate files of any type without requiring a specific file name structure. To handle this Artifactory supports custom layouts.
Custom layouts produce a regex expression that the file path and name must match, enabling Artifactory to extract the file type, version and module. This customizable package structure does not match Octopus’s expected package versioning conventions used in other feeds.
To handle this we depend on the Artifact Path Pattern regex expression available from Artifactory to be set on the feed in Octopus.
To find the Artifact Path Pattern go to Administration ➜ Layouts ➜ Regular Expression View ➜ Resolve and copy the Artifact Path Regex expression. A new repository will use the default simple-layout
generated by Artifactory, the regex for this layout is (?
.
Important: To ensure that Octopus can correctly interact with Artifactory generic feeds, the custom layout pattern in Artifactory must include specific naming components. The layout pattern must specify the artifact name format as [module]-[baseRev].[ext]
. It’s crucial that the [module]
and [baseRev]
components are present, and that [baseRev]
conforms to Semantic Versioning.
For detailed guidance on configuring a custom layout that supports simple versioning, please refer to the following tutorials:
The Octopus integration with Artifactory Generic Repositories depends on the artifacts matching the repository layout, specifically on the module and baseRev properties. An artifact can be tested whether it matches the layout regex by using the Test Artifact Path Resolution in Artifactory. When artifacts match the layout pattern the listing versions for a specific package endpoint will return a list of all available versions.
This also provides the package information when viewing an artifacts details in the Artifactory UI. If the package information properties (Dependency Declaration) are not visible in the Artifactory UI Octopus will not be able to list versions, or download these artifacts.
The regex layout in Artifactory is used to list the versions of an artifact. Searching and selecting a package uses the Artifactory Query Language to search within the repository, this does not depend on the layout.
If a package has been found and selected but fetching versions fails when creating deployments this is likely due to the layout not matching the artifact within Artifactory.
On the test page, you can search for packages, this will return the packageId expected by Octopus along with the artifact details. The expected packageId is path/module
where the path is the folder structure to the artifact returned from the AQL query items.find(…)
and the module is determined by the regex expression set on the feed within Octopus.
Known limitations
- Due to a limitation in the Octo CLI, that has been deprecated, our TeamCity plugin does not support creating releases for projects that utilize Artifactory Generic Feeds
Example Repository Layout
We see quite a few customers struggle with getting a generic feed layout to work in Octopus for a package ID and version search. To help with this, a basic example is included below:
If you have a repository setup with the default simple-layout
regex generated by Artifactory, (?
, this translates to [orgPath]/[module]/[module]-[baseRev].[ext]
Using the picture below provided by Artifactory for an Artifact path pattern:
We can then break that down and add a repository file layout structure to it:
[orgPath]
= OrgPath
[module]
= FileTransferService
[module]-[baseRev]
= FileTransferService-10.0
.[ext]
= .zip
For this to work in an Octopus search, your artifactory generic feed has to be designed where:
- The module has to match the package name:
- The filename must also match the module:
As mentioned previously in this documentation the file has to have a dependency declaration for it to show in Octopus:
Once you have set this up you should then be able to search for the package in Octopus:
This example is based on the default simple-layout
regex in Artifactory and so is not a definitive example. Other layouts will work as long as you ensure your feed is designed to match the regex you are using. We recommend using the simple-layout
as it is the easiest one to set up and use. Please contact support@octopus.com if you are still struggling to see your packages in a search, and we will do our best to help.
Help us continuously improve
Please let us know if you have any feedback about this page.
Page updated on Thursday, May 22, 2025