jfrog / teamcity-artifactory-plugin

TeamCity plugin that enables traceable build artifacts with Artifactory
https://www.jfrog.com/confluence/display/JFROG/TeamCity+Artifactory+Plug-in
Apache License 2.0
42 stars 48 forks source link

Plugin should support the same artifact manipulation syntax as TeamCity #26

Open chefhoobajoob opened 8 years ago

chefhoobajoob commented 8 years ago

TeamCity has a simple, compact, and extremely useful syntax for retrieving artifact contents and placing them in whatever configuration the user needs for their build. This includes support for extracting contents from archive files.

There is a significant dropoff in utility of manipulating artifacts when working with the TC Artifactory plugin that detracts from the experience of using Artifactory for artifacts that are, for example, full file systems.

When such file systems are contained in a zip archive, the Artifactory plugin provides no facility for extracting their contents, which requires the build configuration designer to develop additional scripting utilities to cover this gap.

If instead the filesystem is stored uncompressed as a full filesystem under the artifact root, then extensive configuration scripting is required to replicate the entire folder hierarchy of the dependency in order to cover the lack of support for ** wildcards.

For example, if you have a nested set of folders like the github bandit header-only c++ library, the artifact retrieval configuration for an uncompressed filesystem looks like so:

ext-release-local:banditcpp.org/bandit/2.0.1/*.h => ../BanditCpp.Org.Bandit/bandit
ext-release-local:banditcpp.org/bandit/2.0.1/adapters/*.h => ../BanditCpp.Org.Bandit/bandit/adapters
ext-release-local:banditcpp.org/bandit/2.0.1/assertion_frameworks/matchers/*.h => ../BanditCpp.Org.Bandit/bandit/assertion_frameworks/matchers
ext-release-local:banditcpp.org/bandit/2.0.1/assertion_frameworks/snowhouse/snowhouse/*.h => ../BanditCpp.Org.Bandit/bandit/assertion_frameworks/snowhouse/snowhouse
ext-release-local:banditcpp.org/bandit/2.0.1/assertion_frameworks/snowhouse/snowhouse/constraints/*.h => ../BanditCpp.Org.Bandit/bandit/assertion_frameworks/snowhouse/snowhouse/constraints
ext-release-local:banditcpp.org/bandit/2.0.1/assertion_frameworks/snowhouse/snowhouse/constraints/expressions/*.h => ../BanditCpp.Org.Bandit/bandit/assertion_frameworks/snowhouse/snowhouse/constraints/expressions
ext-release-local:banditcpp.org/bandit/2.0.1/assertion_frameworks/snowhouse/snowhouse/fluent/*.h => ../BanditCpp.Org.Bandit/bandit/assertion_frameworks/snowhouse/snowhouse/fluent
ext-release-local:banditcpp.org/bandit/2.0.1/assertion_frameworks/snowhouse/snowhouse/fluent/operators/*.h => ../BanditCpp.Org.Bandit/bandit/assertion_frameworks/snowhouse/snowhouse/fluent/operators
ext-release-local:banditcpp.org/bandit/2.0.1/assertion_frameworks/snowhouse/snowhouse/fluent/operators/collections/*.h => ../BanditCpp.Org.Bandit/bandit/assertion_frameworks/snowhouse/snowhouse/fluent/operators/collections
ext-release-local:banditcpp.org/bandit/2.0.1/external/*.h => ../BanditCpp.Org.Bandit/bandit/external
ext-release-local:banditcpp.org/bandit/2.0.1/failure_formatters/*.h => ../BanditCpp.Org.Bandit/bandit/failure_formatters
ext-release-local:banditcpp.org/bandit/2.0.1/registration/*.h => ../BanditCpp.Org.Bandit/bandit/registration
ext-release-local:banditcpp.org/bandit/2.0.1/reporters/*.h => ../BanditCpp.Org.Bandit/bandit/reporters
ext-release-local:banditcpp.org/bandit/2.0.1/run_policies/*.h => ../BanditCpp.Org.Bandit/bandit/run_policies
ext-release-local:banditcpp.org/bandit/2.0.1/skip_policies/*.h => ../BanditCpp.Org.Bandit/bandit/skip_policies

Compare this with the config with support for ** wildcards:

ext-release-local:banditcpp.org/bandit/2.0.1/**/*.h => ../BanditCpp.Org.Bandit/bandit