How can I build a git tag in TeamCity?

不羁的心 提交于 2019-12-20 08:27:25

问题


I want to provide a git tag to the TeamCity server to build it. I pass the tag (i.e. release_1.1) as a parameter to the job. So inside the job the tag is available as %tag%, but under the Version Control Settings I don't see any way to use this parameter so the server can checkout this tag. Is there any way this parameter can be used in the settings to checkout the tag?


回答1:


  1. Go to Edit Configuration Settings -> Version Control Settings
  2. For all your VCS roots for this build configuration click Edit and then:

    1. put '+:refs/tags/*' into Branch specification textbox
    2. check Use tags as branches

Then you'll be able to choose a tag when you press the '...' button beside run.




回答2:


I've managed to get the following working:

In the Build Configuration, under "Build Parameters":

Define a Configuration Parameter:

  • Name: TagToBuild
  • Kind: Configuration parameter
  • Value:
  • Spec:
    • Label: Tag to build
    • Description: This should be the full path to the tag, i.e. refs/tags/0.5.5
    • Display: Prompt
    • Type: Text

Note that the "value" field was intentionally left blank.

Then, in the VCS Root:

  • Branch Name: %TagToBuild%

When I run the build, I'm then prompted to supply a branch/tag name:

Entering a value such as refs/tags/0.5.0 results in a nice build, with the branch name listed in the results:

If you try to help the user in any way beyond the description, this seems to fail. So you can't do any of the following:

  1. In the Configuration Parameter set the "Value" to refs/tags/ and have the user add the tag name.
  2. In the VCS Root set the "Branch Name" to refs/tags/%TagToBuild%.

In both cases on our slightly old (7.1) instance of Team City I got the error:

Failed to collect changes, error: Argument 2 for @NotNull parameter of jetbrains/buildServer/buildTriggers/vcs/VcsRootChangesLoader.loadChanges must not be null




回答3:


I've not done this with tags, but I've done this with branches. I tell TeamCity to build all branches by specifying it should build +:refs/heads/*. Now whenever I push any branch, TeamCity builds it. Then within the build I then use git branch and look for the line that starts with a *. I embed that branch name in a convenient spot (AssemblyInfo.cs for .NET, package.json for node.) see http://confluence.jetbrains.com/display/TCD8/Working+with+Feature+Branches




回答4:


You need to specify the tag format in refs/tags/${tagName}.

So yours would be refs/tags/release_1.1.



来源:https://stackoverflow.com/questions/20353729/how-can-i-build-a-git-tag-in-teamcity

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!