TeamCity将参数从服务器传递给构建代理程序

时间:2016-03-29 09:10:47

标签: git continuous-integration teamcity

我想在构建代理上获取提交计数以进行手动版本控制,

version = git rev-list --count "branchname"

git在构建代理上不可用,因为我已经结帐"在服务器上自动"。

有没有办法将version从结帐服务器传递给构建代理? (不改变VCS checkout mode构建代理)?

我正在运行最新的9.1.6版TC。

4 个答案:

答案 0 :(得分:2)

基本上,不,你不能以你想要的方式做你想做的事情,你不能只在服务器上执行一些命令行命令。

为什么不正确配置内部版本号格式并构建计数器并使用它们呢?也可以在构建期间动态设置构建号。

答案 1 :(得分:2)

我在构建过程中收集当前分支名称和git哈希非常相似。遗憾的是,不,在结帐模式设置为服务器的构建过程中,您无法执行这些git命令。您需要更改结帐模式以构建代理,以确保工作目录中存在.git文件夹。从好的方面来说,我认为这并没有什么害处。它不会复制远程数据库,因此构建代理程序很难将更改推送到主存储库。

对于@hexct来说,一个rebase或者合并或者任何数量的东西都可能使这个数字变得不可靠。最好将自己绑定到git哈希而不是提交#。

答案 2 :(得分:2)

  

有没有办法将版本从结帐服务器传递给构建代理? (不改变VCS checkout模式来构建代理)?

简短的回答是 你无法做到

你可以尝试做的是:

- Add a version file to your repository,   
- **before** commiting use a git hook to update this file with the desired number
- Read the content of the file on your build server and you have it.

- Use a git hook to call a job on your build server which gets the 
  branch name and the number of commits and store it for later use somewhere

重点是,既然你无法做到这一点,你需要有点创意

示例挂钩可以是:

pre-receive hook

#!/bin/sh

branchName=$1

# Get the number of commits you need to store:
version = git rev-list --count $branchName

#############
# Now write the desired number to the desired file and let
# the build read it
#############

# Output colors
red='\033[0;31m';
green='\033[0;32m';
yellow='\033[0;33m';
default='\033[0;m';

# personal touch :-)
echo "${red}"
echo "                                         "
echo "                   |ZZzzz                "
echo "                   |                     "
echo "                   |                     "
echo "      |ZZzzz      /^\            |ZZzzz  "
echo "      |          |~~~|           |       "
echo "      |        |-     -|        / \      "
echo "     /^\       |[]+    |       |^^^|     "
echo "  |^^^^^^^|    |    +[]|       |   |     "
echo "  |    +[]|/\/\/\/\^/\/\/\/\/|^^^^^^^|   "
echo "  |+[]+   |~~~~~~~~~~~~~~~~~~|    +[]|   "
echo "  |       |  []   /^\   []   |+[]+   |   "
echo "  |   +[]+|  []  || ||  []   |   +[]+|   "
echo "  |[]+    |      || ||       |[]+    |   "
echo "  |_______|------------------|_______|   "
echo "                                         "
echo "${default}"

# set the exit code to 0 so the push will occur
exit 0;

答案 3 :(得分:1)

为什么你需要git counter?

最简单的方法是遵循TeamCity的原则。使用TeamCity计数器而不是git计数器。每次提交后设置构建触发器。并将标签设置回git以查看git历史记录中的构建版本。