TeamCity On-Premises 2024.03 Help

启动 TeamCity 代理

当新安装的代理第一次连接到服务器时,它会出现在管理员/用户可以授权的 Agents | Unauthorized agents 页面上。 代理在未在 TeamCity 用户界面中得到授权之前,不会运行构建。 代理在与服务器相同的计算机上运行默认被授权。

授权代理的数量受服务器上代理许可证的数量限制。 查看 许可政策 下的更多内容。

TeamCity 构建代理可以手动启动,也可以配置为自动启动。

手动启动

执行以下脚本:

  • 在 Windows 上: <installation path>\bin\agent.bat start

  • 在 Linux 和 macOS 上: <installation path>/bin/agent.sh start

自动启动

Windows 下的自动代理启动

要在 Windows 机器启动时自动运行代理,您可以设置代理作为 Windows 服务运行,或者使用其他方法。 使用 Windows 服务方法是最简单的方式,但是 Windows 对以这种方式运行的进程施加了一些限制

一个 TeamCity 代理在满足所有 要求 的情况下可以在 Windows 服务下可靠地工作,但对于配置为在代理上运行的构建过程来说,这种情况往往并非如此。 这就是为什么仅在您的所有构建脚本都支持此功能的情况下,才推荐将 TeamCity 代理作为 Windows 服务来运行。 否则,建议使用其他特定于操作系统的方法来自动启动 TeamCity 代理。
其中一种方法是在 Windows 启动时配置用户自动登录,然后使用 agent.bat start 在用户登录时配置 TeamCity 代理的启动(例如,通过 Windows 计划任务进行配置)。

使用 Windows 服务运行构建代理

在 Windows 上,您可能想要以服务的形式启动一个 TeamCity 代理,以便在没有任何用户登录的情况下运行它。 如果您使用 Windows 代理安装程序,那么在安装向导中您有选项可以安装服务。

以下指令可用于手动安装 Windows 服务(例如,完成 .zip 代理的安装后)。 此过程也应执行以在同一台机器上为 第二个及后续代理 创建 Windows 服务。

安装该服务:

  1. 检查是否不存在具有所需名称和 ID 的服务(请参阅步骤 4 ;服务名称默认为 TeamCity Build Agent)。 如果已安装,请将其卸载。

  2. 检查 <agent home>\launcher\conf\wrapper.conf 文件中的 wrapper.java.command 属性是否包含指向 JDK 安装目录中的 Java 可执行文件的有效路径。 您可以使用 wrapper.java.command=../jre/bin/java 来操作从 Windows 分发文件安装的代理。 确保指定 java.exe 文件的路径,不要加任何引号。

  3. 如果您想以用户帐户(推荐)而不是“系统"来运行代理,请在 <agent home>\launcher\conf\wrapper.conf 文件中添加适当的凭证,并添加 wrapper.ntservice.accountwrapper.ntservice.password 属性。

  4. (对于同一台机器上的第二个及后续代理)修改 <agent>\launcher\conf\wrapper.conf 文件,使得 wrapper.console.titlewrapper.ntservice.namewrapper.ntservice.displaynamewrapper.ntservice.description 属性在操作系统中具有唯一值。

  5. 以具有足够权限注册新代理服务的用户身份运行 <agent home>\bin\service.install.bat 脚本。 请确保只有在按照描述配置了代理之后,才首次启动它。

启动服务:

  • 运行 <agent home>/bin/service.start.bat (或使用标准的 Windows Services 小程序)。

停止服务:

  • 运行 <agent home>/bin/service.stop.bat (或使用标准的 Windows Services 小程序)。

您也可以使用标准的 Windows 工具 net.exe 来管理已安装的服务。 例如(假设默认服务名称):

net start TCBuildAgent

<agent home>\launcher\conf\wrapper.conf 文件也可以用于更改代理 JVM 参数。

请注意,用来运行构建代理服务的用户帐户必须拥有足够的权限来启动 / 停止代理服务。

Linux 下自动启动代理

要在 Linux 机器上自动运行代理,需要使用 agent.sh start 命令配置一个守护进程来启动它,并使用 agent.sh stop 命令来停止它。

对于 systemd ,请参见示例 teamcityagent.service 配置文件:

[Unit] Description=TeamCity Build Agent After=network.target [Service] Type=oneshot User=teamcityagent Group=teamcityagent ExecStart=/home/teamcityagent/agent/bin/agent.sh start ExecStop=-/home/teamcityagent/agent/bin/agent.sh stop # Support agent upgrade as the main process starts a child and exits then RemainAfterExit=yes # Support agent upgrade as the main process gets SIGTERM during upgrade and that maps to exit code 143 SuccessExitStatus=0 143 [Install] WantedBy=default.target

对于 init.d ,请参考此示例程序:

  1. 导航至服务的脚本目录:

    cd /etc/init.d/
  2. 打开构建代理服务脚本:

    sudo vim buildAgent
  3. 将以下内容粘贴到文件中:

    #!/bin/sh ### BEGIN INIT INFO # Provides: TeamCity Build Agent # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start build agent daemon at boot time # Description: Enable service provided by daemon. ### END INIT INFO #Provide the correct user name: USER="agentuser" case "$1" in start) su - $USER -c "cd BuildAgent/bin ; ./agent.sh start" ;; stop) su - $USER -c "cd BuildAgent/bin ; ./agent.sh stop" ;; *) echo "usage start/stop" exit 1 ;; esac exit 0
  4. 设定文件的执行权限:

    sudo chmod 755 buildAgent
  5. 使用适当的工具,在机器启动和重启时启动代理服务:

    • 对于 Debian/Ubuntu:

      sudo update-rc.d buildAgent defaults
    • 对于 Red Hat / CentOS :

      sudo chkconfig buildAgent on

macOS 下自动启动代理

对于 macOS,TeamCity 提供了在构建用户登录时自动加载构建代理的功能。

推荐的方法是使用 launchd (LaunchAgent):

要通过 launchd 配置自动构建代理的启动,请按照以下步骤操作:

  1. buildAgent.zip 上安装构建代理。

  2. 准备 conf / buildAgent.properties 文件(至少设置代理名称)。

  3. 确保 buildAgent 目录下的所有文件都由 your_build_user 所拥有,以保证代理升级过程的适当进行。

  4. 通过命令加载构建代理:

    mkdir buildAgent/logs  # Directory should be created under your_build_user user sh buildAgent/bin/mac.launchd.sh load
  5. your_build_user 帐户下运行这些命令。 等待几分钟,以便构建代理从 TeamCity 服务器自动升级。 您可以在日志中查看该过程:

    tail -f buildAgent/logs/teamcity-agent.log
  6. 当构建代理升级并成功连接到 TeamCity 服务器后,停止该代理:

    sh buildAgent/bin/mac.launchd.sh unload
  7. 在 构建代理 从 TeamCity 服务器升级之后,将 buildAgent/bin/jetbrains.teamcity.BuildAgent.plist 文件复制到 $HOME/Library/LaunchAgents/ 目录(您可能需要创建它)。 如果您不希望 TeamCity 以 root 权限启动,请在 .plist 文件中指定 UserName 密钥,例如:

    <key>UserName</key> <string>your_build_user</string>
  8. 将您的 macOS 系统配置为 自动登录 作为 your_build_user ,如 此处 所述。

  9. 重启机器。 在系统启动时,构建用户应自动登录,构建代理应该启动。
    要快速检查构建代理是否正在运行,请使用以下命令:

    launchctl list | grep BuildAgent 69722 0 jetbrains.teamcity.BuildAgent

停止构建代理

要手动停止代理,运行 <Agent home>\agent 脚本并使用 stop 参数。

使用 stop 来请求在当前构建完成后停止。 使用 stop force 请求立即停止(如果代理正在运行构建,它将会被突然停止(取消))。
在 Linux 下,您也可以使用 stop kill 杀死代理进程。

如果代理程序带有附属的控制台运行,您也可以在控制台中按下 Ctrl+C 来停止代理程序(如果正在运行的构建,它将会被取消)。

如果一个构建代理已经作为一个 LaunchAgent 服务在 macOS上启动,可以使用 launchctl 工具来停止:

launchctl unload $HOME/Library/LaunchAgents/jetbrains.teamcity.BuildAgent.plist # or launchctl remove jetbrains.teamcity.BuildAgent
最后修改日期: 16日 7月 2024年