GitLab Flutter CI失败,出现“tojunit: command not found”的错误。

3
我使用下面的 .gitlab-ci.yml 文件运行使用 junit 进行测试,并将报告导出为 XML artifact:
image: cirrusci/flutter:stable

before_script:
  - flutter pub get
  - flutter clean
  - flutter --version

stages:
  - analyze-and-test

analyze-and-test:
  stage: analyze-and-test
  script:
    - flutter build aot
    - flutter analyze
   # - flutter test
    - flutter test --machine | tojunit -o report.xml
  artifacts:
    when: always
    reports:
      junit:
        - report.xml
  only:
    - master
    - merge_requests

应用程序具有以下软件包依赖项:
dependencies:
  flutter:
    sdk: flutter
  junitreport: ^1.3.1

当运行此流水线时,我会得到以下错误:

$ flutter test --machine | tojunit -o report.xml
/usr/bin/bash: line 139: tojunit: command not found
Unhandled exception:
FileSystemException: writeFrom failed, path = '' (OS Error: Broken pipe, errno = 32)

我正在试图弄清楚为什么这个命令失败了。在调用analyze-and-test之前,在before_script段落中检索到包,因此应该能够找到该命令。我错过了什么吗?

1个回答

4

看起来CI机器上没有安装tojunit。根据junitreport安装说明,您需要运行这个命令来下载程序并使启动脚本可用:

pub global activate junitreport

首先,在before_script阶段添加以下命令:

before_script:
 - flutter pub get
 - flutter clean
 - flutter --version
 - flutter pub global activate junitreport

试着运行这个。

接下来,如果{dart-cache}/bin目录不在您的路径上,您将收到一个警告,其中包括如何修复它的提示。在这种情况下,您需要添加一些更多的命令(从提示中)到before_script


1
export PATH="$PATH":"$HOME/.pub-cache/bin" 需要这个命令。 - Sunil D S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接