# 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: read-all

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@de0fac2e4500dabe0009e67214ff5f5447ce83dd
      - 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd
        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.36.0-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@e51d8e571e22473a2ddebf0ef8a2123f0ab2c02c
      - name: Run DCM on root
        run: |
          dcm analyze 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd
      - 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd
      - 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd
      - 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd
      - 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@v7
        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@de0fac2e4500dabe0009e67214ff5f5447ce83dd
      - 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@v7
        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@de0fac2e4500dabe0009e67214ff5f5447ce83dd
      - 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd
      - 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd
      - 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd
      - 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd
#
#      - 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@de0fac2e4500dabe0009e67214ff5f5447ce83dd
#      - 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

