github - 如何设置 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
关于如何进行的任何想法?
解决方案
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()
推荐阅读
- linux - git在windows和linux之间切换后强制刷新索引
- node.js - 使用 BLoC 模式的 Flutter 登录系统
- php - PHP邮件功能发送空白电子邮件
- typescript - TypeScript 中的哪些结构不仅仅包含类型信息?
- c# - 使用 Distinct 和 Order By 时实体框架中的多个查询和较差的性能
- python - 在与系统时钟同步的python中每5分钟运行一次函数的最佳方法是什么?
- reactjs - 在没有 Internet 连接的 Windows Server 上托管静态反应应用程序的最佳方法是什么
- makefile - 如果变量为空,如何跳过 Make 目标?
- css - 如何在不使用 calc 函数的情况下创建只有部分可滚动的 CSS 网格布局?
- jenkins - 尝试使用 Jenkins Httprequest 插件进行 Apk 上传