使用存储库级别的自托管运行器
你可能无法为组织拥有的存储库创建自托管运行器。
企业所有者和组织所有者可以选择允许哪些存储库创建存储库级别的自托管运行器。 拥有“管理组织运行器和运行器组”权限的用户只能选择允许哪些存储库为组织中的存储库创建存储库级自托管运行器。
有关自定义组织角色的详细信息,请参阅“关于自定义组织角色”。
有关详细信息,请参阅 在企业中为 GitHub Actions 实施策略 和 禁用或限制组织的 GitHub Actions。
检查自托管运行器的状态
自托管运行器可位于存储库、组织或 GitHub 上的企业帐户设置中。 要管理自托管运行器,您必须拥有以下权限,具体取决于添加自托管运行器的位置:
-
用户存储库:你必须是存储库所有者。
-
组织:你必须是组织所有者。
-
组织存储库:你必须是组织所有者,或者拥有对存储库的管理员访问权限。
-
企业帐户:你必须是企业所有者。
-
在组织或仓库中,导航到主页,然后单击“ Settings”****。
-
在左侧边栏中,单击 “操作”,然后单击“运行器” 。
-
在“运行器”下,可以查看已注册运行器的列表,包括运行器的名称、标签和状态。
状态可以是下列其中一项:
- 空闲****:运行器已连接到 GitHub,并已准备好执行作业。
- 活动:运行器当前正在执行作业。
- 脱机****:运行器未连接到 GitHub。 这可能是因为机器处于离线状态,自托管运行器应用程序未在机器上运行,或者自托管运行器应用程序无法与 GitHub 通信。
网络连接疑难解答
检查自托管运行器网络连接
可以结合使用自托管运行器应用程序的 config
脚本与 --check
参数,以检查自托管运行器是否可以访问 GitHub 上所有必需的网络服务。
除了 --check
外,还必须为脚本提供两个参数:
--url
,其中包含指向 GitHub 存储库、组织或企业的 URL。 例如,--url https://github.com/octo-org/octo-repo
。--pat
,值为必须具有workflow
范围的 personal access token (classic),或具有工作流读写权限的 fine-grained personal access token。 例如,--pat ghp_abcd1234
。 有关详细信息,请参阅“管理个人访问令牌”。
例如:
config.cmd --check --url https://github.com/YOUR-ORG/YOUR-REPO --pat GHP_ABCD1234
该脚本测试每项服务,并为每项服务输出 PASS
或 FAIL
。 如有任何失败的检查,您可以在日志文件中看到更多关于问题的详细信息。 日志文件位于安装了运行器应用程序的 _diag
目录中,每个检查的日志文件的路径显示在脚本的控制台输出中。
如有任何失败的检查,您也应该验证您自己托管的运行器是否符合所有通信要求。 有关详细信息,请参阅“关于自托管运行程序”。
禁用 TLS 证书验证
默认情况下,自托管运行器应用程序验证 GitHub 的 TLS 证书。 如果遇到网络问题,您可能希望禁用 TLS 证书验证以进行测试。
若要在自托管运行器应用程序中禁用 TLS 证书验证,请在配置和运行自托管运行器应用程序之前将 GITHUB_ACTIONS_RUNNER_TLS_NO_VERIFY
环境变量设置为 1
。
[Environment]::SetEnvironmentVariable('GITHUB_ACTIONS_RUNNER_TLS_NO_VERIFY', '1')
./config.cmd --url https://github.com/YOUR-ORG/YOUR-REPO --token
./run.cmd
Warning
不建议禁用 TLS 验证,因为 TLS 在自托管运行器应用程序和 之间提供了隐私和数据完整性。 我们建议您在自托管运行器的操作系统证书存储中安装 证书。 有关如何安装 证书的指导,请咨询您的操作系统供应商。
查阅自托管运行应用程序日志文件
您可以监控自托管运行器应用程序的状态及其活动。 日志文件保存在你安装运行器应用程序的 _diag
目录中,每次启动应用程序时都会生成新的日志。 文件名开头为 Runner_
,后面是应用程序启动时的 UTC 时间戳。
Warning
临时运行器的运行器应用程序日志文件必须在外部转发和保留,以便进行故障排除和诊断。 有关临时运行器和自动缩放自托管运行器的详细信息,请参阅“使用自托管运行器自动缩放”。
有关工作流作业执行的详细日志,请参阅介绍 Worker_
文件的下一节。
查看作业日志文件
自托管的运行器应用程序为它处理的每个作业创建详细的日志文件。 这些文件存储在安装了运行器应用程序的 _diag
目录中,文件名以 Worker_
开头。
使用 PowerShell 检查自托管的运行器应用程序服务
对于将应用程序运行为服务的 Windows 自托管运行器,您可以使用 PowerShell 来监控其实时活动。 服务使用命名约定 GitHub Actions Runner (<org>-<repo>.<runnerName>)
。 还可以通过检查运行器目录中的 .service 文件来查找服务的名称:
PS C:\actions-runner> Get-Content .service
actions.runner.octo-org-octo-repo.runner01.service
可以在 Windows 服务应用程序 (services.msc
) 中查看运行器的状态。 您也可以使用 PowerShell 来检查服务是否在运行:
PS C:\actions-runner> Get-Service "actions.runner.octo-org-octo-repo.runner01.service" | Select-Object Name, Status
Name Status
---- ------
actions.runner.octo-org-octo-repo.runner01.service Running
您可以使用 PowerShell 来检查自托管运行器的近期活动。 在此示例输出中,可以看到应用程序启动,接收名为 testAction
的作业,然后显示结果状态:
PS C:\actions-runner> Get-EventLog -LogName Application -Source ActionsRunnerService
Index Time EntryType Source InstanceID Message
----- ---- --------- ------ ---------- -------
136 Mar 17 13:45 Information ActionsRunnerService 100 2020-03-17 13:45:48Z: Job Greeting completed with result: Succeeded
135 Mar 17 13:45 Information ActionsRunnerService 100 2020-03-17 13:45:34Z: Running job: testAction
134 Mar 17 13:41 Information ActionsRunnerService 100 2020-03-17 13:41:54Z: Listening for Jobs
133 Mar 17 13:41 Information ActionsRunnerService 100 û Connected to GitHub
132 Mar 17 13:41 Information ActionsRunnerService 0 Service started successfully.
131 Mar 17 13:41 Information ActionsRunnerService 100 Starting Actions Runner listener
130 Mar 17 13:41 Information ActionsRunnerService 100 Starting Actions Runner Service
129 Mar 17 13:41 Information ActionsRunnerService 100 create event log trace source for actions-runner service
监控自动更新过程
建议定期检查自动更新过程,因为如果自托管的运行器低于某个版本阈值,将会无法处理作业。 自托管的运行器应用程序自动更新本身,但请注意,此过程不包括对操作系统或其他软件的任何更新;您需要单独管理这些更新。
你可以在 Runner_
日志文件中查看更新活动。 例如:
[Feb 12 12:37:07 INFO SelfUpdater] An update is available.
此外,还可以在位于安装了运行器应用程序的 _diag
目录中的 SelfUpdate 日志文件中找到详细信息。
检查运行器上安装的 Docker 引擎
如果生成失败并出现以下错误:
Error: Input required and not supplied: java-version
检查自托管运行器上安装的 Docker 引擎。 为了将操作的输入传递到 Docker 容器中,运行器所用环境变量的名称中可能包含短划线。 如果 Docker 引擎不是二进制可执行文件,而是 shell 包装器或链接(例如,使用 snap
安装在 Linux 上的 Docker 引擎),操作可能无法获取输入。 要解决此错误,请将自托管运行器配置为使用其他 Docker 引擎。
要检查 Docker 引擎是否是使用 snap
安装的,请使用 which
命令。 在以下示例中,Docker 引擎是使用 snap
安装的:
$ which docker
/snap/bin/docker