TeamCity Extracting Artifact Dependencies

reach4thelasers picture reach4thelasers · Mar 20, 2011 · Viewed 19.1k times · Source

I'm trying to create a build step in Teamcity that has an Artifact Dependency on another build step.

The previous build step's artifacts are available as a .zip file.

The build step is able to retrieve the artifacts and they are downloaded to:

C:\BuildAgent\work\27f84e3eca3a33d5\artifactdir\artifacts.zip

Clearly a .zip file isn't much use to me, I need these to be decompressed so that the build step can access the build file.

How do I get TeamCity to decompress the artifacts?

Answer

Drew Grubb picture Drew Grubb · Jun 1, 2018

You can use the Artifact Rules of Artifact Dependencies to specify the elements of an artifact you would like to use as part of your dependency, including extracting from an archive. The Artifact Rule syntax is:

[+:|-:]SourcePath[!ArchivePath][=>DestinationPath]

The Archive Path is the element of particular interest for you here. Using your example, your artifact rule would look something like:

artifacts.zip!** => artifactdir

This will extract all the contents of the artifacts.zip artifact, and place them in the artifactdir directory at the root of your checkout directory

ArchivePath is used to extract downloaded compressed artifacts. Zip, 7-zip, jar, tar and tar.gz are supported. ArchivePath follows general rules for SourcePath: ant-like wildcards are allowed, the files matched inside the archive will be placed in the directory corresponding to the first wildcard match (relative to destination path) For example: release.zip!*.dll command will extract all .dll files residing in the root of the release.zip artifact.

You can find the full TeamCity Artifact Dependency documentation here