Can TeamCity help me to release a version?

Assumes that I'm working in a project, after a few builds I decide to release a version to my customer. At that time I need to create a branch, a tag and generate artifact for that version. Can TeamCity help me to do it? If so, how can I do it?

14 comments

Yes, but it's clunkier and less powerful than it needs to be. In addition to our regular build, we have a special "release" build. This does the same as the regular build, but is set to label the SVN repository on success. We can then go back and branch off of that label, as needed.

What would be handy is if VCS branches or tags could be created for the contents any build, manually via the build server.

--Dave Griffith

0

Thanks Dave.

I imagine that someday we will have a Release button on Recent history builds grid, click it, enter some information and we will have a released version. Also we will have a Release tab to keep track all released versions.

t800t8

0

Yeah, I'm not sure why there hasn't been anything done along those lines yet. Seems like a small amount of work to do for a pretty great story.

--Dave Griffith

0

Dave,

>What would be handy is if VCS branches or tags could be created for the contents any build, manually via the build server.

Actually, creating VCS tag is possible for a finished build. Check "Label this build sources" in the "VCS revisions and labels" section of the Changes tab of the build results. (This is available since 3.0)

--
Best regards,

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

0

Wow, that may be the most well hidden piece of functionality I've seen in quite some time. Good to know. Thanks.

--Dave Griffith

0

Can you please describe your vision of the "Release" feature in more detail?

Do you want TeamCity to create a branch in VCS in this case?
Do you mean triggering an appropriate build under "generate artifact"?

What other options would you like to see on releasing a build?

One of the approaches to implementing the feature can be allowing to run another build, taking current one as the base one. The build can then perform all the necessary operations. This will allow for maximum flexibility, but will not be "one click" solution, though.

--
Best regards,

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

0

Dave,

We had some hard time figuring out where we should place the section and decided to stick with the current place. Perhaps, when we introduce something like build "release" action, creating the label action will go to the same place.

--
Best regards,

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

0

Well, I hadn't really had it fleshed out, but here goes a minimal vision.

For each build configuration (with a reasonable runner, not "inspections" or "locate duplicates"), there should be a flag as to whether it is a build for a release. If the flag is set, you should be allowed to configure a second set of actions to take place on release. When a releaseable configuration is run (successfully), there should be a button on the build results page to release the build. That causes the release actions to be run, using any artifacts created by the initial run, and also causes VCS tagging or branching, optionally.

Each releasable configuration should also have a "Releases" tab, with information about all of the releases available. Being able to diff between release inputs on this page would be great, but not required.

Releasing should be a separately securable activity from running the build (i.e. only the boss QA person can release).

Other builds should be able to have artifact or triggering dependencies not just on the successful run of a build, but on a successful release.

There needs to be a ".lastReleased" URL for each releasable build, similar to ".lastBuild" and ".lastSuccessful".

Separately configurable notification on build release.

A big old line item on the next press release saying "TeamCity, now with release management capabilities!"

Almost all of this is currently doable with multiple build configurations and artifact dependencies (we do that now), but it's a common enough pattern that it should be explicitly supported. This is especially the case when you add in IDE integrations ("Diff with last release"), or integration with the planned issue tracker ("Show issues fixed in this release").


One of the approaches to implementing the feature can be allowing to run another build, taking current one as the base one. The build can then perform all the necessary operations. This will allow for maximum flexibility, but will not be "one click" solution, though.



Exactly. Releasing software is a "two-click" problem, not a "one-click" problem. You build, and then you release.

--Dave Griffith

0

What Dave mentioned here is exact what I want to have :)

0

Additionally, the "Release" action should allow you to specify a release number (which can't be determined automatically, because marketting always decides to muck with it) and optionally attach a release notes file.

I think that's all, actually.

--Dave Griffith

0

Dave,

Thank you for the detailed description!

We will try to figure out how this all lines up with the current abilities and will certainly move in this direction.

Feel free to add more cases if they come to your mind.

--
Best regards,

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

0

I think that pretty much covers it. I certainly understand about balancing dev resources, but I think release management could be a serious differentiator for you all, and fits in well with "Develop with Pleasure" Maybe I'll try to come up with a similar post for the other big functional extension piece I keep thinking should be a part of TeamCity (code review support).

--Dave Griffith

0

Yegor,

Does this use case ever end up in something/somewhere in teamcity??

Do you have any recommendations on how this can be done today with TeamCity?


--
Regards,

David Castañeda

0

Hello,

When you have artifact dependencies configured, you can use Promote feature. This mean you can specify custom artifacts for a build by click Actions | Promote on the build results page of initial build. As the result, "release" build will pick up release-ready artifacts created by the initial run.

Please also watch/vote for the declared build feature: http://youtrack.jetbrains.net/issue/TW-920.



Kind regards,
Marina
0

Please sign in to leave a comment.