TeamCity Artifacts - teamcity-9.0

Combine Destination folder path in Teamcity artifacts
e.g
Source/abc/Comm/bin/Release => package.%system.Build_Number%.zip!/Link1
Source/abc/Comm/bin/Release => package.%system.Build_Number%.zip/Link2
I need to combine the destination

Under Artifact Paths put
+:%project_dist_dir% => package.%system.Build_Number%.zip
Then everything will be combined into the zip file.

Related

How to to define bamboo artifact so its NOT published in syb folder

The artifact definition and the file structure in the bitbucket repository is as below.
The build when run creates application-dev.properties & safeguard-dev.properties under classes folder. When i click them it takes me to classes folder inside which the property files are present. But i want them to be published directly like the jar. So that when I click the file it should download. But if i give full path it errors out. Please help me how to define this?
error 19-Dec-2022 16:34:57 Failing as no matching files has been found and empty artifacts are not allowed.
error 19-Dec-2022 16:34:57 Unable to publish artifact [application-dev.properties]:
error 19-Dec-2022 16:34:57 The artifact is required, build will now fail.
Bamboo won't put the artifacts in a subfolder if the "Location" points to exactly where the files are. I.e. don't use the "**" wildcard in the "Copy pattern". I'd say try even to have a separate artifact per properties file.
Your location is pointing to "workdir/src", but you need "target/classes". Get rid of the $bamboo.build.working.directory: that's not the maven build dir and you don't need it altogether (because current work dir is already set to your project dir). If I get the paths right, this should work:
Name: application-dev.properties
Location: target/classes
Copy pattern: application-dev.properties

Remove Structure from Copy

I have a Task on my TFS build to Copy files to the staging folder:
Currently, this builds the staging folder with all the subfolder structure, e.g. \MyProject\bin\release\
Is there a way to set this so that it dumps to just \MyProject\, without the bin\release portions?
You can try change the output path :
Configure the build configuration output path, eg set ".\" as
out path (In solution right click the project > properties > Build > Output > Output path).
Specify the output path in MSBuild Arguments such as
/p:OutputPath=$(Build.BinariesDirectory) then copy from $(Build.BinariesDirectory) directly. Reference screenshot below.
Besides, you can also try to copy the contents to stage folder first. then add another Copy Files step to copy the \MyProject\bin\release\** to \MyProject

Automatically Compressing Published Files Into a .ZIP File

I am currently using Teamcity to automatically build and publish our solution to a directory specified in the system.PublishProfile property (i.e. C:\Deployment Files).
Is it possible that after publishing TC will automatically .zip them into one file with a custom set file name?
When you define Artifacts paths inside General Settings tabs, you can set:
./out/Deploy => %BuildName%.zip
And, inside Parameters, you can specify the BuildName value.
This will produce a zipped artifact.

How to have Bamboo artifacts collect a whole folders?

I have one simple plan with one simple job.
Tasks:
Source code checkout
MSBuild
Run tests
Generate test report
In four steps, my utility generates a test report with screenshots. The report contain absolute links to images. (for example: onclick="window.open('./Screenshots/66ef3a03-8b82-4b40-b49d-b0155e273738.png');return false;").
If I open the report on my local machine, the report works fine, but on Bamboo I receive the error "Page Not Found", because Bamboo has not collected "Screenshots" folder.
How can I set up the Artifact Definition to collect folder with files?
P.S. I tried to set the \*.* copy pattern, but Bamboo collected only files (without folders and subfolders)
You just have to give the folder Location, like "build/", for instance, and then, in the Copy Pattern you can put **/*.* That should copy all the files you want.
Please note that:
The location is relative to the build directory. Do not use the absolute path to refer to the location.
Asterisks are not supported for Location. For this field, provide the folder name where the file would be located.
Plus, you can define as many Artifact Definitions as you want.
The best way of doing this is to zip all you artifact together. I created a bash script to do this
cd "toArtifactFolder"
zip -r Artifact .
Then in bamboo project settings you have to edit the Artifact and changed the location to where ever the artifact zip file is
Then in the Copy Pattern just enter the zip file eg Artifact.zip
Bamboo uses the "Ant file copy pattern".
Matching recursively against all files: **/*
This does include almost everything
Unfortunately this does not include dot-files, at least in my test on a linux build agent. I could not find a workaround apart from a second artifact (pattern **/.*) or the creation of an archive.
Matching against all files in any subfolder: */*
This does not include foo/bar/test.xyz
This does include both foo/test.xyz and bar/test.xyz
You can do more advanced matching; e.g. you can use build/**/*.jar to copy all jars from a build directory.
For further info see the docs

How can I filter which files are included in a workspace using MSBuild?

It seems that MsBuild creates a folder called, "BuildType" on the build server and this folder is where the .proj file is copied. In source control I have several files that are in the same folder as the build project file. I have a workspace mapped to this location.
I would like to be able to specify explicitly which files from this workspace location should be copied to the build machine. Is this possible?
Thanks!
You cannot do this on file level but if you organize your build type folder with subfolders you can cloak the folders that you want to exclude.