Ovi*_*vid 4 windows perl github-actions
我已经将MooseX::Extended发布到了 CPAN(此处为 github 存储库)。
我正在尝试设置 github 操作,并且 linux 测试运行得很好。但是,(Windows 因以下错误而失败:
Configuring true-v1.0.2 ... OK
==> Found dependencies: Function::Parameters
--> Working on Function::Parameters
Fetching http://www.cpan.org/authors/id/M/MA/MAUKE/Function-Parameters-2.001003.tar.gz ... OK
Configuring Function-Parameters-2.001003 ... OK
Building Function-Parameters-2.001003 ... OK
Successfully installed Function-Parameters-2.001003
! Installing true failed. See C:\Users\RUNNER~1\.cpanm\work\1653412748.5640\build.log for details. Retry with --force to force install it.
Building true-v1.0.2 ... FAIL
Run Code Online (Sandbox Code Playgroud)
当然,我无法看到这一点C:\Users\RUNNER~1\.cpanm\work\1653412748.5640\build.log
来理解发生了什么。
该true
模块通过了 Windows 上的 CPAN 测试人员测试,因此我不知道为什么它在 Github Actions 中失败。
我的工作流程如下所示:
Configuring true-v1.0.2 ... OK
==> Found dependencies: Function::Parameters
--> Working on Function::Parameters
Fetching http://www.cpan.org/authors/id/M/MA/MAUKE/Function-Parameters-2.001003.tar.gz ... OK
Configuring Function-Parameters-2.001003 ... OK
Building Function-Parameters-2.001003 ... OK
Successfully installed Function-Parameters-2.001003
! Installing true failed. See C:\Users\RUNNER~1\.cpanm\work\1653412748.5640\build.log for details. Retry with --force to force install it.
Building true-v1.0.2 ... FAIL
Run Code Online (Sandbox Code Playgroud)
我无法访问 Windows 盒子。有谁知道我错过了什么?
由于 GitHub Actions/Workflows 使用的 Windows 容器已经预装了Strawberry Perl版本,因此它不允许您安装任何其他版本。您无法删除预安装的 Perl 版本,并且通过 Chocolatey 删除/安装新版本也几乎是不可能的。如果您重新安装容器上已有的 Chocolatey 版本,它似乎允许这样做,但它基本上是NOOP
为您提供的测试设置。
容器还安装了MinGW;这对我们来说也可能是坏事。单独安装 MinGW 会阻止构建 XS 模块(无论它们是依赖项还是您自己的模块是 XS 模块)。当然,只有当 MinGW 出现在PATH
Perl 安装之前时才会发生这种情况,但是当您删除一个 Perl 并添加另一个 Perl 时,您就会遇到这个问题。
为了解决这个问题,最好的做法是从PATH
环境变量中删除当前安装的 Perl 版本以及当前安装的 MinGW 版本。一旦两者都安全地退出 PATH,您就可以安装 Portable[1] Strawberry Perl,将该 Perl 的路径放入您的路径中PATH
,然后开始使用全新安装的 Strawberry Perl 进行测试。GitHub 最近打破了我们直接在 Action YAML 文件中执行此操作的能力。
这一切听起来很让人头疼,但事实并非如此。为此,我们可以使用一个 Action:actions-setup-perl。通过此操作,您可以使用您喜欢的任何版本的 Perl 轻松进行测试。因此,如果您听到有人报告 Windows 上的 Perl v5.26 的错误,您现在可以将其添加到您的矩阵中并轻松测试,无需用户进行任何来回操作:
name: windows
on:
push:
branches:
- '*'
tags-ignore:
- '*'
pull_request:
jobs:
perl:
runs-on: windows-latest
strategy:
fail-fast: true
matrix:
perl-version:
- '5.30'
# - '5.28'
# - '5.26'
# - '5.24'
# - '5.22'
# - '5.20'
# - '5.18'
# - '5.16'
- '5.14'
steps:
- name: Setup perl
uses: shogo82148/actions-setup-perl@v1
with:
perl-version: ${{ matrix.perl-version }}
distribution: strawberry
- name: Set git to use LF
run: |
git config --global core.autocrlf false
git config --global core.eol lf
- uses: actions/checkout@v2
- name: perl -V
run: perl -V
- name: Ensure we have a working toolchain
run: cpanm ExtUtils::Manifest App::cpanminus
- name: Install Dependencies
run: cpanm -n --installdeps .
- name: Run Tests
run: cpanm --test-only -v .
Run Code Online (Sandbox Code Playgroud)
[1]
Strawberry Perl 的便携式版本是压缩的、已编译的 Perl 版本,不需要您在 Windows 上运行安装程序。这意味着不需要更高的权限等。您只需将存档解压缩到要运行 Perl 的目录中,然后在$env:PATH
变量中添加 Perl 的相关路径即可。它消除了构建不规则等带来的任何烦恼。我发现它是在 Windows 上进行测试的最明智的方法。
归档时间: |
|
查看次数: |
410 次 |
最近记录: |