Teamcity与Subversion在Windows上发布提交脚本

时间:2016-12-28 09:58:14

标签: shell batch-file svn teamcity

我们希望Teamcity在每次提交到subversion时构建我们的解决方案。 在文档之后,我们将创建一个.sh脚本: -

SERVER=https://buildserver-url
USER=buildserver-user
PASS="<password>"

LOCATOR=$1

# The following is one-line:
(sleep 10;  curl --user $USER:$PASS -X POST "$SERVER/app/rest/vcs-root-instances/commitHookNotification?locator=$LOCATOR" -o /dev/null) >/dev/null 2>&1 <&1 &

exit 0

Subversion正在Windows环境中运行,因此.sh文件将失败。 我们正在尝试将其转换为.bat文件,我们有: -

set SERVER=https://buildserver-url
set USER=buildserver
set PASS=password

LOCATOR=%1%

(timeout 10;  curl --user %USER%:%PASS% -X POST "%SERVER%/app/rest/vcs-root-instances/commitHookNotification?locator=%LOCATOR%" -o /dev/null) >/dev/null 2>%1% <%1% &

exit 0

但是,尝试使用

执行时仍然失败
"The system cannot find the path specified"

似乎我们可能正确地转换了这个?

1 个答案:

答案 0 :(得分:1)

您在curl / timeout.exe变量中出现的位置(例如$PATH%PATH%)引用的程序(例如curltimeout.exe)是什么?你引用的任何其他文件怎么样 - 你是指定完整路径

附注:您是否在Windows服务器上安装了/dev/nullNUL

此外,Windows上不存在 { "data":[ "name": "name1", "surname": "surname1", "id": "22", "motivations": [] }, "1:"{ "name": "name2", "surname": "surname2", "id": "23", "motivations": [] }, { "name": "name3", "surname": "surname3", "id": "24", "motivations": [] }], "sign": "9e46b7d6b140b", "last_call": 1446 } ;您需要重定向到class Person{ @DatabaseField String name; @DatabaseField String surname; @DatabaseField(id = true) int id; @DatabaseField(dataType = DataType.SERIALIZABLE) List<Motivation> motivations } public interface ApiService { public static final String TEST_SIGN = "test_KP1FE3R1"; @GET("api/person/{id}") Call<JsonObject>getPerson(@Path("id") String id, @QueryMap Map<String, String> options); } 。您不能只是更改文件扩展名和一些语法,并希望bash脚本可以在Windows上运行。

如果我在你的脚下,我会完全跳过批处理,并将脚本写成现代的,并且像Powershell一样理智。