checkout - 使用自托管代理解压缩时 GitHub Action 结帐失败
问题描述
我正在使用 GitHub Actions 和安装在 Windows 2019 服务器上的自托管代理设置 CI/CD 管道。
我面临的问题是 action actions/checkout@v2 无法签出 repo 并完全解压缩它。当我说“完全解压缩”时,我的意思是目标文件夹中有一些文件在停止之前设法解压缩。
从日志:
Run actions/checkout@v2
Syncing repository: Syd/ExternWebb
Getting Git version info
Deleting the contents of 'C:\actions-runner\_work\ExternWebb\ExternWebb'
The repository will be downloaded using the GitHub REST API
To create a local Git repository instead, add Git 2.18 or higher to the PATH
Downloading the archive
Writing archive to disk
Extracting the archive
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoLogo -Sta -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command "$ErrorActionPreference = 'Stop' ; try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ; [System.IO.Compression.ZipFile]::ExtractToDirectory('C:\actions-runner\_work\ExternWebb\ExternWebb\b3193a49-e100-4cbd-81c9-6bd23ff47313.tar.gz', 'C:\actions-runner\_work\ExternWebb\ExternWebb\b3193a49-e100-4cbd-81c9-6bd23ff47313')"
Exception calling "ExtractToDirectory" with "2" argument(s): "Could not find a part of the path 'C:\actions-runner\_wor
k\ExternWebb\ExternWebb\b3193a49-e100-4cbd-81c9-6bd23ff47313\Syd-ExternWebb-77d0427f54bc3e4d6694
f0719ca9fe3ab3be3706\ExternWebb.Library\Custom\Plugins\DomainRedirectModule\DomainRedirectConfigurationCollection
.cs'."
At line:1 char:111
+ ... catch { } ; [System.IO.Compression.ZipFile]::ExtractToDirectory('C:\a ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : DirectoryNotFoundException
Error: The process 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe' failed with exit code 1
我尝试在本地自托管代理上运行相同的操作,没有任何问题。
一篇 reddit帖子建议可以通过通过 Git 获取 repo 来缓解错误,并在日志中指出以下线索:
The repository will be downloaded using the GitHub REST API
To create a local Git repository instead, add Git 2.18 or higher to the PATH
我尝试安装 Git v.2.30 并将其添加到 PATH 中,但由于某种原因,该操作仍通过 GIT API 下载存储库。我不知道是否需要重新启动服务器,但 git 命令在 Powershell 中可用。
我猜这就是为什么本地自托管代理(可以访问 GIT)可以签出 repo,但在服务器上运行的代理不能。
这是工作流 yml 文件:
name: Build Stage
on:
push:
branches: [ develop ]
pull_request:
branches: [ develop ]
jobs:
build:
runs-on: [self-hosted, stage]
env:
CONFIG: Stage
BUILD_FOLDER: _build
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checking out source code
uses: actions/checkout@v2
任何见解都值得赞赏。
解决方案
确保在安装 Git 后停止并重新启动 GitHub Actions Runner 服务。那是为我做的。
推荐阅读
- javascript - 有时 Lambda 不会将数据写入 AWS S3 存储桶
- r - 将 R fread 中的字符日期转换为显示四位数年份格式
- if-statement - Pine Script 条件语句语法
- azure - 将证书分配给 Azure 应用程序 GW 中的后端 HTTP 设置
- r - 为什么我在 install.packages 中收到警告:无法删除先前安装的软件包“tibble”权限已恢复“tibble”?
- php - 在执行删除语句之前删除约束?
- javascript - 如何将嵌套类型合并为一个
- javascript - 适用于 Big canvas.toDataURL 的 Cordova iOS WKWebView 解决方法
- javascript - 请解释类型断言
- javascript - 绑定函数移除自身