Can a remote agent publish its artifacts locally instead of server?

Greetings,

Would it be possible for a remote build agent to publish its own artifacts locally instead of sending them to the server?

For example, the following build log shows that it takes more than a minute (depending on the size of the artifact) for a remote agent to send the published artifacts to the server (the remote agent is in a different geographic location than the server). In this scenario, we are asking the server to let the agent perform the checkout (SVN), because the project's repository is in the same machine where the remote agent is running.

: Publishing artifacts (<1s)[12:17:30]: Will process paths:
: Publishing artifacts 'build/*.zip' to assemblies
: Publishing artifacts 'build/*.xml' to reports
: Publishing artifacts 'build/*.xsl' to reports
: Publishing artifacts 'teamcity-info.xml' to root artifacts directory
: Artifacts path teamcity-info.xml not found
: Build finished

It'll be good to have an option that will let the agent publish the artifacts in the same machine where it is installed/running, instead of sending them to the server.

Thanks!

7 comments

Brian,

The question is how to allow downloading the artifacts afterwards? Should they be available right from the agent? (That is, server UI should generate links to the artifacts that will resolve to agent.)

Apart from the benefits, there are some of the drawbacks of the approach:
- artifacts backup complexity
- making agents not interchangeable
- increasing load on agents that can affect other builds
- more complex network/agents visibility configuration

However, this indeed can be useful in some distributed teams.

Can you please create a corresponding Jira issue?

BTW, the upcoming TeamCity 3.1 will have a feature of uploading artifacts to the server while the build is still in progress (can be initiated by special string in the build's stdout).

BTW2, you can consider zipping .xml and .xsl of your build's artifacts to see if that speeds the things up.

--
Best regards,

Yegor Yarko
Project Manager
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"

0

Hi Yegor,

You are correct. Our context is the one of distributed teams (multiple build agents located in different geographic locations).

We would like for each agent to publish the artifacts in the same machine where it is installed/running, and have the server web UI artifacts' links to resolve to the artifacts of the proper agent), instead of sending the artifacts to the server everytime (maybe there can be an option that says "Publish artifacts locally (on agent) instead of on the server", or maybe have the possibilities to do both, I don't know how that would work out...)

We could zip the xml/xsl too, but soon we'll have a project that will generate a type of file which is already compressed and the size is expected to be 20MB. We would like for the remote agent that is responsible for that build configuration to publish the artifacts locally, not on the server (both the remote build agent and the server are physically separated by the Pacific Ocean...). This is going to save us a lot of time when running the build configurations.

Then we can just have the server web UI artifact link to point on the proper agent's "published artifacts directory'.

Please, let me know if this is clear so I can go ahead and create a JIRA issue for this.

Thanks!

0

Brian,

Yes, thank you this is clear.

Could you please also note the main concern here: is it time of the build or traffic/download time between the TeamCity server and the computer downloading the artifacts? In other words, will the option "store on both agent and server" suit?

As a workaround, you can consider adding agent artifacts storing logic in your build script (e.g. copy to a shared directory) and write a simple TeamCity plugin adding a link into the web UI to the agent's location storing the artifacts.

--
Best regards,

Yegor Yarko
Project Manager
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"

0

Yegor,

Your idea about considering adding agent artifacts storing logic in our build script is our Plan B .

Plan A was to check with you guys if this was a possible feature to add in a future release of TC. At the moment, it is not an urgent request, but in a couple of months we might have to go with our Plan B if this feature isn't available.

As for our main concern in this situation, it is the traffic/download time between the TC server and the computer (agent) downloading the artifacts.

I was thinking to see an option (combobox, checkbox, etc.) that asks
*1. "Publish artifacts on build agent only"
2. "Publish artifacts on the server" (default)
3. "Publish artifacts on both the agent and the server"*

Ok, I'll go ahead and create the JIRA issue.

Thank you Yegor for your quick feedback! :)

0

Issue http://www.jetbrains.net/jira/browse/TW-4339

--
Best regards,

Yegor Yarko
Project Manager
JetBrains, Inc
http://www.jetbrains.com
"Develop with pleasure!"

0

Why I can't open the Jira to see it's status?

0

Hi Mykhaylo,

This issue is over 10 years old. We moved our jira installation to our own Youtrack, you can find that same issue here: https://youtrack.jetbrains.com/issue/TW-4339

While this issue is still in the backlog, a very similar one was fixed a long time ago: https://youtrack.jetbrains.com/issue/TW-15448 (you can find it in the related issues to the original one)

0

Please sign in to leave a comment.