| name: Dart CI | |
| permissions: | |
| contents: read | |
| on: | |
| # Run CI on pushes to the main branch, and on PRs against main. | |
| push: | |
| branches: [main, master] | |
| pull_request: | |
| branches: [main, master] | |
| schedule: | |
| - cron: '0 0 * * 0' | |
| env: | |
| PUB_ENVIRONMENT: bot.github | |
| _PUB_TEST_SNAPSHOT: ${{ github.workspace }}/.dart_tool/pub.dart.snapshot.dart2 | |
| _TESTS_FILE: .dart_tool/test_files | |
| jobs: | |
| # Check code formatting and static analysis on a single OS (linux) | |
| # against Dart stable and dev. | |
| analyze: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| sdk: [dev] | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 | |
| with: | |
| persist-credentials: false | |
| - uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260 | |
| with: | |
| sdk: ${{ matrix.sdk }} | |
| - id: install | |
| name: Install dependencies | |
| run: dart pub get | |
| - name: Check formatting | |
| run: dart format --output=none --set-exit-if-changed . | |
| if: always() && steps.install.outcome == 'success' | |
| - name: Analyze code | |
| run: dart analyze --fatal-infos | |
| if: always() && steps.install.outcome == 'success' | |
| # Run tests on a matrix consisting of three dimensions: | |
| # 1. OS: mac, windows, linux | |
| # 2. release channel: dev | |
| # 3. shard: 0, 1, 2, 3, 4, 5, 6 | |
| test: | |
| needs: analyze | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| sdk: [dev] | |
| shard: [0, 1, 2, 3, 4, 5, 6] | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 | |
| with: | |
| persist-credentials: false | |
| - uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260 | |
| with: | |
| sdk: ${{ matrix.sdk }} | |
| - name: Install dependencies | |
| run: dart pub get | |
| - name: Build snapshot | |
| shell: bash | |
| run: dart --snapshot="$_PUB_TEST_SNAPSHOT" bin/pub.dart | |
| - name: Run tests | |
| run: dart test --preset ci --total-shards=7 --shard-index=${{ matrix.shard }} |