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 follow 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 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.
Help us continuously improve
Please let us know if you have any feedback about this page.
Page updated on Monday, November 20, 2023