| # Copyright 2020 The Flutter Authors | |
| # Use of this source code is governed by a BSD-style license that can be | |
| # found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd. | |
| name: devtools | |
| on: | |
| pull_request: | |
| push: | |
| branches: | |
| - master | |
| # Declare default permissions as read only. | |
| permissions: | |
| contents: read | |
| defaults: | |
| run: | |
| # Use Bash on all platforms including Windows to avoid | |
| # two copies of bot scripts. | |
| shell: bash | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| jobs: | |
| flutter-prep: | |
| uses: ./.github/workflows/flutter-prep.yaml | |
| main: | |
| name: ${{ matrix.os }} main | |
| needs: flutter-prep | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest] | |
| steps: | |
| - name: git clone | |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 | |
| - name: Load Cached Flutter SDK | |
| uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 | |
| 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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 | |
| with: | |
| ref: "${{ github.event.pull_request.head.sha }}" | |
| - name: Load Cached Flutter SDK | |
| uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 | |
| 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.38.3-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@7654d458321ee25acccccfdb86cd48bd95768ff1 | |
| - name: Run dcm analyze on root | |
| run: | | |
| dcm analyze packages/devtools_app packages/devtools_app_shared packages/devtools_extensions packages/devtools_shared packages/devtools_test | |
| - name: Run dcm checks on packages | |
| run: | | |
| dcm check-unused-code packages/devtools_app packages/devtools_app_shared packages/devtools_extensions packages/devtools_shared packages/devtools_test --exclude-public-api | |
| dcm check-dependencies packages/devtools_app packages/devtools_app_shared packages/devtools_extensions packages/devtools_shared packages/devtools_test | |
| test-packages: | |
| name: ${{ matrix.os }} ${{ matrix.package }} test | |
| needs: flutter-prep | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| package: | |
| - devtools_app_shared | |
| - devtools_extensions | |
| - devtools_shared | |
| os: [ubuntu-latest, windows-latest] | |
| steps: | |
| - name: git clone | |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 | |
| - name: Load Cached Flutter SDK | |
| uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 | |
| 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-tool: | |
| name: ${{ matrix.os }} Tool test | |
| needs: flutter-prep | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, windows-latest] | |
| steps: | |
| - name: git clone | |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 | |
| - name: Load Cached Flutter SDK | |
| uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 | |
| with: | |
| path: | | |
| ./tool/flutter-sdk | |
| key: flutter-sdk-${{ runner.os }}-${{ needs.flutter-prep.outputs.latest_flutter_candidate }} | |
| - name: tool/ci/tool_tests.sh | |
| run: ./tool/ci/tool_tests.sh | |
| test: | |
| name: ${{ matrix.os }} ${{ matrix.bot }} | |
| needs: flutter-prep | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| bot: | |
| - build_ddc | |
| - build_dart2js | |
| - test_ddc | |
| - test_dart2js | |
| os: [ubuntu-latest, windows-latest] | |
| steps: | |
| - name: git clone | |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 | |
| - name: Load Cached Flutter SDK | |
| uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 | |
| 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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 | |
| - name: Load Cached Flutter SDK | |
| uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 | |
| 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@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| 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 \`dt fix-goldens --run-id=$WORKFLOW_ID\` on your local branch." | |
| devtools-app-integration-test: | |
| name: ${{ matrix.os }} devtools_app integration-test ${{ matrix.bot }} - ${{ matrix.device }} - shard ${{ matrix.shard }} | |
| needs: flutter-prep | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # TODO(https://github.com/flutter/devtools/issues/9357): Re-enable tests on windows-latest. | |
| os: [macos-latest] | |
| # Consider running integration tests in ddc mode, too. | |
| bot: [integration_dart2js, integration_dart2wasm] | |
| 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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 | |
| - name: Load Cached Flutter SDK | |
| uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 | |
| 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@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a | |
| if: failure() | |
| with: | |
| name: golden_image_failures.${{ matrix.bot }} | |
| path: packages/devtools_app/integration_test/**/failures/*.png | |
| devtools-extensions-integration-test: | |
| name: ${{ matrix.os }} devtools_extensions integration-test ${{ matrix.bot }} | |
| needs: flutter-prep | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # Consider running integration tests in ddc mode, too. | |
| bot: [integration_dart2js, integration_wasm] | |
| os: [ubuntu-latest, windows-latest] | |
| steps: | |
| - name: git clone | |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 | |
| - name: Load Cached Flutter SDK | |
| uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 | |
| 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 | |
| devtools-webdriver-test: | |
| name: ${{ matrix.os }} devtools webdriver test | |
| needs: flutter-prep | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| bot: | |
| - test_webdriver | |
| os: [ubuntu-latest, windows-latest] | |
| steps: | |
| - name: git clone | |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 | |
| - name: Load Cached Flutter SDK | |
| uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 | |
| 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 | |
| benchmark-performance: | |
| name: benchmark-performance | |
| needs: flutter-prep | |
| runs-on: macos-latest | |
| strategy: | |
| fail-fast: false | |
| steps: | |
| - name: git clone | |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 | |
| - name: Load Cached Flutter SDK | |
| uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 | |
| 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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 | |
| - name: Load Cached Flutter SDK | |
| uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 | |
| 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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 | |
| # | |
| # - 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@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 | |
| # - 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 | |