首页 > 解决方案 > 如何设置 dart.yml 以使用 build_runner 运行测试

问题描述

我正在尝试为我的 Dart 项目设置持续集成 (CI),但是当我运行时出现文件未找到错误pub run build_runner test

Failed to run Chrome: No such file or directory

您可以在此处查看执行的完整作业。

我已经尝试将dart.yml坚持设置为默认值,但我根据OverReact 框架的要求将最后一行从pub run test更改为。pub run build_runner test

所以我dart.yml读到:

name: Dart CI

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    container:
      image:  google/dart:latest

    steps:
    - uses: actions/checkout@v2
    - name: Install dependencies
      run: pub get
    - name: Run tests
      run: pub run build_runner test

关于如何进行的任何想法?

标签: githubdartcontinuous-integrationgithub-actionsdart-pub

解决方案


ubuntu-latest包含google-chrome但由于您的配置中有以下内容是正确的:

container:
  image:  google/dart:latest

这意味着您的 ubuntu 映像正在生成一个 docker 容器,google/dart:latest并在此容器内运行脚本的其余部分。我已经提取了/usr/bin两者google/dart:latest的内容ubuntu-latest,可以在这里看到

正如我们从这个输出中看到的那样,google/dart:latest容器没有google-chrome可执行文件——我在图像的其他地方四处看了看,没有发现它。但ubuntu-latest确实包含它。

由于 Dart SDK 比 google chrome 更容易安装,我想解决问题的最简单方法是在ubuntu-latest镜像中安装 Dart SDK——因此不要在 Github 操作中使用容器功能——作为遵循这个的多个安装步骤指导

并且,在此之后,然后正常运行脚本的其余部分。我试过在这里做一个例子:

name: Dart CI

on:
  - push

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - name: Setup Dart SDK Step 1
      run: sudo apt-get update
    - name: Setup Dart SDK Step 2
      run: sudo apt-get install apt-transport-https
    - name: Setup Dart SDK Step 3
      run: sudo sh -c 'wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -'
    - name: Setup Dart SDK Step 4
      run: sudo sh -c 'wget -qO- https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list'
    - name: Setup Dart SDK Step 5
      run: sudo apt-get update
    - name: Setup Dart SDK Step 6
      run: sudo apt-get -y install dart

    - uses: actions/checkout@v1
    - name: Install dependencies
      run: PATH="$PATH:/usr/lib/dart/bin" pub get
    - name: Run tests
      run: PATH="$PATH:/usr/lib/dart/bin" pub run test
    - name: Run analyzer
      run: PATH="$PATH:/usr/lib/dart/bin" dartanalyzer --fatal-infos --fatal-warnings .
      if: always()
    - name: Run dartfmt
      run: PATH="$PATH:/usr/lib/dart/bin" dartfmt -n --set-exit-if-changed .
      if: always()

您也可以在此处查看代码。你可以在这里看到一个成功的构建。


推荐阅读