| # Copyright 2020 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| name: devtools |
| |
| on: |
| pull_request: |
| push: |
| branches: |
| - master |
| |
| # Declare default permissions as read only. |
| permissions: read-all |
| |
| env: |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| jobs: |
| flutter-prep: |
| uses: ./.github/workflows/flutter-prep.yaml |
| |
| main: |
| name: main |
| needs: flutter-prep |
| runs-on: ubuntu-latest |
| strategy: |
| fail-fast: false |
| steps: |
| - name: git clone |
| uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac |
| - name: Load Cached Flutter SDK |
| uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 |
| with: |
| path: | |
| ./tool/flutter-sdk |
| key: flutter-sdk-${{ runner.os }}-${{ needs.flutter-prep.outputs.latest_flutter_candidate }} |
| |
| - name: tool/ci/bots.sh |
| env: |
| BOT: main |
| run: ./tool/ci/bots.sh |
| |
| dcm: |
| name: Dart Code Metrics |
| needs: flutter-prep |
| runs-on: ubuntu-latest |
| strategy: |
| fail-fast: false |
| steps: |
| - name: Clone Flutter DevTools |
| uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac |
| with: |
| ref: "${{ github.event.pull_request.head.sha }}" |
| - name: Load Cached Flutter SDK |
| uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 |
| with: |
| path: | |
| ./tool/flutter-sdk |
| key: flutter-sdk-${{ runner.os }}-${{ needs.flutter-prep.outputs.latest_flutter_candidate }} |
| - name: Run tool/ci/bots.sh |
| run: ./tool/ci/bots.sh |
| - name: Install DCM |
| run: | |
| sudo apt-get update |
| wget -qO- https://dcm.dev/pgp-key.public | sudo gpg --dearmor -o /usr/share/keyrings/dcm.gpg |
| echo 'deb [signed-by=/usr/share/keyrings/dcm.gpg arch=amd64] https://dcm.dev/debian stable main' | sudo tee /etc/apt/sources.list.d/dart_stable.list |
| sudo apt-get update |
| sudo apt-get install dcm=1.13.4-1 # To avoid errors add `-1` (build number) to the version |
| sudo chmod +x /usr/bin/dcm |
| echo "$(dcm --version)" |
| - name: Setup Dart SDK |
| uses: dart-lang/setup-dart@b64355ae6ca0b5d484f0106a033dd1388965d06d |
| - name: Run DCM on root |
| run: | |
| dcm analyze packages/devtools_app packages/devtools_shared packages/devtools_test |
| |
| test-packages: |
| name: ${{ matrix.package }} test |
| needs: flutter-prep |
| runs-on: ubuntu-latest |
| strategy: |
| fail-fast: false |
| matrix: |
| package: |
| - devtools_app_shared |
| - devtools_extensions |
| - devtools_shared |
| steps: |
| - name: git clone |
| uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac |
| - name: Load Cached Flutter SDK |
| uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 |
| with: |
| path: | |
| ./tool/flutter-sdk |
| key: flutter-sdk-${{ runner.os }}-${{ needs.flutter-prep.outputs.latest_flutter_candidate }} |
| - name: tool/ci/package_tests.sh |
| env: |
| PACKAGE: ${{ matrix.package }} |
| run: ./tool/ci/package_tests.sh |
| |
| test: |
| name: ${{ matrix.bot }} |
| needs: flutter-prep |
| runs-on: ubuntu-latest |
| strategy: |
| fail-fast: false |
| matrix: |
| bot: |
| - build_ddc |
| - build_dart2js |
| - test_ddc |
| - test_dart2js |
| steps: |
| - name: git clone |
| uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac |
| - name: Load Cached Flutter SDK |
| uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 |
| with: |
| path: | |
| ./tool/flutter-sdk |
| key: flutter-sdk-${{ runner.os }}-${{ needs.flutter-prep.outputs.latest_flutter_candidate }} |
| - name: tool/ci/bots.sh |
| env: |
| BOT: ${{ matrix.bot }} |
| PLATFORM: vm |
| run: ./tool/ci/bots.sh |
| |
| macos-test: |
| needs: flutter-prep |
| name: macos goldens ${{ matrix.bot }} |
| runs-on: macos-latest |
| strategy: |
| fail-fast: false |
| matrix: |
| bot: |
| - test_dart2js |
| only_golden: |
| - true |
| |
| steps: |
| - name: git clone |
| uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac |
| - name: Load Cached Flutter SDK |
| uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 |
| with: |
| path: | |
| ./tool/flutter-sdk |
| key: flutter-sdk-${{ runner.os }}-${{ needs.flutter-prep.outputs.latest_flutter_candidate }} |
| - name: tool/ci/bots.sh |
| env: |
| BOT: ${{ matrix.bot }} |
| PLATFORM: vm |
| ONLY_GOLDEN: ${{ matrix.only_golden }} |
| run: ./tool/ci/bots.sh |
| |
| - name: Upload Golden Failure Artifacts |
| uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 |
| if: failure() |
| with: |
| name: golden_image_failures.${{ matrix.bot }} |
| path: packages/devtools_app/test/**/failures/*.png |
| - name: Notify of Quick Fix |
| if: failure() |
| env: |
| WORKFLOW_ID: ${{ github.run_id }} |
| run: | |
| echo "::notice title=To Quickly Fix Goldens:: Run \`devtools_tool fix-goldens --run-id=$WORKFLOW_ID\` on your local branch." |
| |
| devtools-app-integration-test: |
| name: devtools_app integration-test ${{ matrix.bot }} - ${{ matrix.device }} - shard ${{ matrix.shard }} |
| needs: flutter-prep |
| runs-on: macos-latest |
| strategy: |
| fail-fast: false |
| matrix: |
| # Consider running integration tests in ddc mode, too. |
| bot: [integration_dart2js] |
| device: [flutter, flutter-web, dart-cli] |
| # Option 1/1 will run all tests for a device in a single shard. |
| # Option 1/2 and 2/2 should be enabled to run tests for a device in 2 shards. |
| shard: [1/1, 1/2, 2/2, 1/3, 2/3, 3/3] |
| exclude: |
| # The 'flutter' device should be ran in three shards. |
| - device: flutter |
| shard: 1/1 |
| - device: flutter |
| shard: 1/2 |
| - device: flutter |
| shard: 2/2 |
| # The 'flutter-web' device should be ran in two shards. |
| - device: flutter-web |
| shard: 1/1 |
| - device: flutter-web |
| shard: 1/3 |
| - device: flutter-web |
| shard: 2/3 |
| - device: flutter-web |
| shard: 3/3 |
| # The 'dart-cli' device can be ran in a single shard. |
| - device: dart-cli |
| shard: 1/2 |
| - device: dart-cli |
| shard: 2/2 |
| - device: dart-cli |
| shard: 1/3 |
| - device: dart-cli |
| shard: 2/3 |
| - device: dart-cli |
| shard: 3/3 |
| steps: |
| - name: git clone |
| uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac |
| - name: Load Cached Flutter SDK |
| uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 |
| with: |
| path: | |
| ./tool/flutter-sdk |
| key: flutter-sdk-${{ runner.os }}-${{ needs.flutter-prep.outputs.latest_flutter_candidate }} |
| - name: tool/ci/bots.sh |
| env: |
| BOT: ${{ matrix.bot }} |
| DEVICE: ${{ matrix.device }} |
| SHARD: ${{ matrix.shard }} |
| DEVTOOLS_PACKAGE: devtools_app |
| run: ./tool/ci/bots.sh |
| |
| - name: Upload Golden Failure Artifacts |
| uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 |
| if: failure() |
| with: |
| name: golden_image_failures.${{ matrix.bot }} |
| path: packages/devtools_app/integration_test/**/failures/*.png |
| |
| devtools-extensions-integration-test: |
| name: devtools_extensions integration-test ${{ matrix.bot }} |
| needs: flutter-prep |
| runs-on: ubuntu-latest |
| strategy: |
| fail-fast: false |
| matrix: |
| # Consider running integration tests in ddc mode, too. |
| bot: [integration_dart2js] |
| steps: |
| - name: git clone |
| uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac |
| - name: Load Cached Flutter SDK |
| uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 |
| with: |
| path: | |
| ./tool/flutter-sdk |
| key: flutter-sdk-${{ runner.os }}-${{ needs.flutter-prep.outputs.latest_flutter_candidate }} |
| - name: tool/ci/bots.sh |
| env: |
| BOT: ${{ matrix.bot }} |
| DEVTOOLS_PACKAGE: devtools_extensions |
| run: ./tool/ci/bots.sh |
| |
| benchmark-performance: |
| name: benchmark-performance |
| needs: flutter-prep |
| runs-on: ubuntu-latest |
| strategy: |
| fail-fast: false |
| steps: |
| - name: git clone |
| uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac |
| - name: Load Cached Flutter SDK |
| uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 |
| with: |
| path: | |
| ./tool/flutter-sdk |
| key: flutter-sdk-${{ runner.os }}-${{ needs.flutter-prep.outputs.latest_flutter_candidate }} |
| - name: tool/ci/benchmark_performance.sh |
| run: ./tool/ci/benchmark_performance.sh |
| |
| benchmark-size: |
| name: benchmark-size |
| needs: flutter-prep |
| runs-on: ubuntu-latest |
| strategy: |
| fail-fast: false |
| steps: |
| - name: git clone |
| uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac |
| - name: Load Cached Flutter SDK |
| uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 |
| with: |
| path: | |
| ./tool/flutter-sdk |
| key: flutter-sdk-${{ runner.os }}-${{ needs.flutter-prep.outputs.latest_flutter_candidate }} |
| - name: tool/ci/benchmark_size.sh |
| run: ./tool/ci/benchmark_size.sh |
| |
| |
| # TODO(https://github.com/flutter/devtools/issues/1715): add a windows compatible version of tool/ci/bots.sh |
| # and run it from this job. |
| # windows-test: |
| # name: windows ${{ matrix.bot }} |
| # runs-on: windows-latest |
| # strategy: |
| # fail-fast: false |
| # matrix: |
| # bot: |
| # - test_dart2js |
| # steps: |
| # - name: git clone |
| # uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac |
| # |
| # - name: tool/ci/bots.sh |
| # env: |
| # BOT: ${{ matrix.bot }} |
| # PLATFORM: vm |
| # run: ./tool/ci/bots.sh |
| |
| # TODO(https://github.com/flutter/devtools/issues/1987): rewrite integration tests. |
| # integration: |
| # name: integration ${{ matrix.bot }} |
| # runs-on: ubuntu-latest |
| # strategy: |
| # fail-fast: false |
| # matrix: |
| # bot: |
| # - integration_ddc |
| # - integration_dart2js |
| # steps: |
| # - name: git clone |
| # uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac |
| # - name: tool/ci/bots.sh |
| # env: |
| # BOT: ${{ matrix.bot }} |
| # run: ./tool/ci/bots.sh |
| |
| # TODO(https://github.com/flutter/devtools/issues/2437): |
| # PLATFORM=chrome is going away. We need to move these tests to run with |
| # chromedriver. |
| # - BOT=test_ddc PLATFORM=chrome |
| # PLATFORM=chrome is going away. We need to move these tests to run with |
| # chromedriver. |
| # - BOT=test_dart2js PLATFORM=chrome |
| |