启动 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 服务。
安装该服务:
检查是否不存在具有所需名称和 ID 的服务(请参阅步骤 4 ;服务名称默认为 TeamCity Build Agent)。 如果已安装,请将其卸载。
检查
<agent home>\launcher\conf\wrapper.conf
文件中的wrapper.java.command
属性是否包含指向 JDK 安装目录中的 Java 可执行文件的有效路径。 您可以使用wrapper.java.command=../jre/bin/java
来操作从 Windows 分发文件安装的代理。 确保指定java.exe
文件的路径,不要加任何引号。如果您想以用户帐户(推荐)而不是“系统"来运行代理,请在
<agent home>\launcher\conf\wrapper.conf
文件中添加适当的凭证,并添加wrapper.ntservice.account
和wrapper.ntservice.password
属性。(对于同一台机器上的第二个及后续代理)修改
<agent>\launcher\conf\wrapper.conf
文件,使得wrapper.console.title
、wrapper.ntservice.name
、wrapper.ntservice.displayname
和wrapper.ntservice.description
属性在操作系统中具有唯一值。以具有足够权限注册新代理服务的用户身份运行
<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
来管理已安装的服务。 例如(假设默认服务名称):
<agent home>\launcher\conf\wrapper.conf
文件也可以用于更改代理 JVM 参数。
请注意,用来运行构建代理服务的用户帐户必须拥有足够的权限来启动 / 停止代理服务。
Linux 下自动启动代理
要在 Linux 机器上自动运行代理,需要使用 agent.sh start
命令配置一个守护进程来启动它,并使用 agent.sh stop
命令来停止它。
对于 systemd
,请参见示例 teamcityagent.service
配置文件:
对于 init.d
,请参考此示例程序:
导航至服务的脚本目录:
cd /etc/init.d/打开构建代理服务脚本:
sudo vim buildAgent将以下内容粘贴到文件中:
#!/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设定文件的执行权限:
sudo chmod 755 buildAgent使用适当的工具,在机器启动和重启时启动代理服务:
对于 Debian/Ubuntu:
sudo update-rc.d buildAgent defaults对于 Red Hat / CentOS :
sudo chkconfig buildAgent on
macOS 下自动启动代理
对于 macOS,TeamCity 提供了在构建用户登录时自动加载构建代理的功能。
推荐的方法是使用 launchd
(LaunchAgent):
要通过 launchd
配置自动构建代理的启动,请按照以下步骤操作:
在
buildAgent.zip
上安装构建代理。准备
conf / buildAgent.properties
文件(至少设置代理名称)。确保
buildAgent
目录下的所有文件都由your_build_user
所拥有,以保证代理升级过程的适当进行。通过命令加载构建代理:
mkdir buildAgent/logs # Directory should be created under your_build_user user sh buildAgent/bin/mac.launchd.sh load在
your_build_user
帐户下运行这些命令。 等待几分钟,以便构建代理从 TeamCity 服务器自动升级。 您可以在日志中查看该过程:tail -f buildAgent/logs/teamcity-agent.log当构建代理升级并成功连接到 TeamCity 服务器后,停止该代理:
sh buildAgent/bin/mac.launchd.sh unload在 构建代理 从 TeamCity 服务器升级之后,将
buildAgent/bin/jetbrains.teamcity.BuildAgent.plist
文件复制到$HOME/Library/LaunchAgents/
目录(您可能需要创建它)。 如果您不希望 TeamCity 以 root 权限启动,请在.plist
文件中指定UserName
密钥,例如:<key>UserName</key> <string>your_build_user</string>将您的 macOS 系统配置为 自动登录 作为
your_build_user
,如 此处 所述。重启机器。 在系统启动时,构建用户应自动登录,构建代理应该启动。
要快速检查构建代理是否正在运行,请使用以下命令:launchctl list | grep BuildAgent 69722 0 jetbrains.teamcity.BuildAgent
停止构建代理
要手动停止代理,运行 <Agent home>\agent
脚本并使用 stop
参数。
使用 stop
来请求在当前构建完成后停止。 使用 stop force
请求立即停止(如果代理正在运行构建,它将会被突然停止(取消))。
在 Linux 下,您也可以使用 stop kill
杀死代理进程。
如果代理程序带有附属的控制台运行,您也可以在控制台中按下 Ctrl+C
来停止代理程序(如果正在运行的构建,它将会被取消)。
如果一个构建代理已经作为一个 LaunchAgent
服务在 macOS上启动,可以使用 launchctl
工具来停止: