【问题标题】:TeamCity: Disable build trigger for all TeamCity projectsTeamCity:禁用所有 TeamCity 项目的构建触发器
【发布时间】:2017-01-16 07:34:49
【问题描述】:

我想问有没有什么办法可以通过运行脚本来禁用所有 TeamCity 项目的构建触发器?

我有一个场景,我需要禁用所有构建触发器以阻止构建运行。这是因为有时,我可能需要在构建代理机器上执行一些升级过程,这需要一天以上的时间。

我不希望为每个不同 TeamCity 项目的每个构建触发器手动单击禁用按钮。有没有办法自动化这个过程?

提前致谢。

【问题讨论】:

    标签: teamcity


    【解决方案1】:

    使用 Team City REST API。

    鉴于您的 Team City 部署在 http://dummyhost.com 并且您启用了系统管理员角色的访客访问(否则只需从 guestAuth 切换到 httpAuth 在 URL 中并在请求中指定带有密码的用户,详细信息在文档中)您可以下一步:

    1. 获取所有构建配置 GET http://dummyhost.com/guestAuth/app/rest/buildTypes/
    2. 为每个构建配置获取所有触发器 GET http://dummyhost.com/guestAuth/app/rest/buildTypes/id:***YOUR_BUILD_CONFIGID***/triggers/
    3. 为每个触发器禁用它 PUT http://dummyhost.com/guestAuth/app/rest/buildTypes/id:***YOUR_BUILD_CONFIGID***/triggers/***YOUR_TRIGGER_ID***/disabled

    查看完整文档here

    【讨论】:

    • 太棒了!非常感谢您的回复。这正是我使用 TeamCity RestAPI 所寻找的。​​span>
    • 注意:如果未经授权(例如通过 httpAuth),TeamCity 版本 10 的错误消息是 HTTP Status 405 - Request method 'PUT' not supported。登录后,PUT'ing 到提到的 URL 就像魅力一样。
    • 感谢您的提示。这是具有适当授权的工作脚本示例:stackoverflow.com/a/43998789/603516
    【解决方案2】:

    您可以暂停构建队列。见this video。这样你根本不需要接触构建配置;你只是让 TC 停下来。

    对于特定于代理的升级,最好只禁用您正在使用的代理。见here

    这些都不是你问的“通过运行脚本”,但我认为你只是要求一个脚本解决方案以避免大量的 GUI 点击。

    【讨论】:

    • 感谢您的回复。你是对的,我正在寻找一个可以自动化这个手动过程的脚本解决方案。有什么方法可以开发一个脚本来获取包含构建触发器设置的 xml 标记并将其更改为禁用触发器?只是好奇
    【解决方案3】:

    另一种解决方案可能是简单地禁用代理,这样就不会再运行构建了。

    【讨论】:

      【解决方案4】:

      这是一个 bash 脚本,可通过 TeamCity REST API 按项目名称模式批量暂停所有(仍未暂停)构建配置:

      TEAMCITY_HOST=http://teamcity.company.com
      CREDS="-u domain\user:password"
      curl $CREDS --request GET "$TEAMCITY_HOST/app/rest/buildTypes/" \
      | sed -r "s/(<buildType)/\n\\1/g" | grep "Project Name Regex" \
      | grep -v 'paused="true"' | grep -Po '(?<=buildType id=")[^"]*' \
      | xargs -I {} curl -v $CREDS --request PUT "$TEAMCITY_HOST/app/rest/buildTypes/id:{}/paused" --header "Content-Type: text/plain" --data "true"
      

      【讨论】:

      • 这会禁用整个配置而不是触发器
      猜你喜欢
      • 1970-01-01
      • 2013-10-09
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多