Как настроить dart.yml для запуска тестов с помощью build_runner - PullRequest
1 голос
/ 09 февраля 2020

Я пытаюсь настроить Непрерывную интеграцию для моего проекта Dart, но при запуске pub run build_runner test:

  Failed to run Chrome: No such file or directory

появляется ошибка файла. Вы можете увидеть полную работу, выполненную здесь: https://github.com/UC-Davis-molecular-computing/scadnano/runs/434176213

Я попытался установить dart.yml, придерживающийся по умолчанию , но я изменил последнюю строку с pub run test на pub run build_runner test как требуется для OverReact Framework .

Так что мой 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

Любые идеи о том, как действовать?

1 Ответ

0 голосов
/ 11 февраля 2020

Это верно, что Ubuntu-latest содержит google-chrome, но, поскольку у вас есть следующее в вашей конфигурации:

    container:
      image:  google/dart:latest

Это означает, что ваше изображение Ubuntu порождает контейнер docker на основе "google / dart: latest "и запускает остальную часть вашего скрипта внутри этого контейнера. Я извлек содержимое /usr/bin как для "google / dart: latest", так и для "ubuntu-latest", с которым можно ознакомиться здесь:

https://gist.github.com/julemand101/1e74aee8e5152fb18b4913bbeaf805b6

Как видно из этого вывода, контейнер "google / dart: latest" не имеет исполняемого файла google-chrome (я осмотрел другие места на изображении и не смог его обнаружить). Но в Ubuntu-latest он есть.

Поскольку Dart SDK намного проще установить, чем в Google chrome, я думаю, что самый простой способ решить эту проблему - установить Dart SDK в образе Ubuntu-latest (и, следовательно, не использовать функцию контейнера в действии github) как несколько этапов установки, которые следуют этому руководству:

https://dart.dev/get-dart#install -using-apt-get

И после затем запустите остальную часть сценария как обычно. Я попытался сделать пример этого здесь:

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()

https://github.com/julemand101/AdventOfCode2019/blob/85475933c1cc5617610c9287b03813fde748039a/.github/workflows/dart.yml

И вы можете увидеть успешную сборку здесь: https://github.com/julemand101/AdventOfCode2019/runs/438192908

...