| # 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: |
| name: ${{ matrix.os }} Flutter Prep |
| outputs: |
| latest_flutter_candidate: ${{ steps.flutter-candidate.outputs.FLUTTER_CANDIDATE }} |
| strategy: |
| matrix: |
| os: [ubuntu-latest, macos-latest] |
| runs-on: ${{ matrix.os }} |
| steps: |
| - name: git clone devtools |
| uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 |
| |
| - name: Get Latest Flutter Candidate |
| id: flutter-candidate |
| run: | |
| LATEST_FLUTTER_CANDIDATE=$(./tool/latest_flutter_candidate.sh) |
| echo "FLUTTER_CANDIDATE=$LATEST_FLUTTER_CANDIDATE" >> $GITHUB_OUTPUT |
| |
| - name: Load Cached Flutter SDK |
| id: cache-flutter |
| uses: actions/cache@v3 |
| with: |
| path: | |
| ./flutter-sdk |
| key: flutter-sdk-${{ runner.os }}-${{ steps.flutter-candidate.outputs.FLUTTER_CANDIDATE }} |
| |
| - if: ${{ steps.cache-flutter.outputs.cache-hit != 'true' }} |
| name: Clone Flutter SDK if none cached |
| run: | |
| git clone https://github.com/flutter/flutter.git ./flutter-sdk |
| cd flutter-sdk |
| git checkout $LATEST_FLUTTER_CANDIDATE |
| env: |
| LATEST_FLUTTER_CANDIDATE: ${{ steps.flutter-candidate.outputs.FLUTTER_CANDIDATE }} |
| |
| - name: Assert that the Latest Flutter Candidate is checked out |
| run: | |
| cd flutter-sdk |
| HEAD_SHA=$(git rev-parse HEAD) |
| LATEST_FLUTTER_CANDIDATE_SHA=$(git rev-parse "origin/$LATEST_FLUTTER_CANDIDATE") |
| if [ "$HEAD_SHA" != "$LATEST_FLUTTER_CANDIDATE_SHA" ]; then |
| echo "::error ,title=Error checking out Latest Flutter Candidate::{expected HEAD to be at $LATEST_FLUTTER_CANDIDATE_SHA but got $HEAD_SHA}" |
| exit 1 |
| fi |
| env: |
| LATEST_FLUTTER_CANDIDATE: ${{ steps.flutter-candidate.outputs.FLUTTER_CANDIDATE }} |
| |
| - name: Setup Flutter SDK |
| run: | |
| ./flutter-sdk/bin/flutter config --no-analytics |
| ./flutter-sdk/bin/flutter doctor |
| ./flutter-sdk/bin/cache/dart-sdk/bin/dart --disable-analytics |
| |
| main: |
| name: main |
| needs: flutter-prep |
| runs-on: ubuntu-latest |
| strategy: |
| fail-fast: false |
| steps: |
| - name: git clone |
| uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 |
| - name: Load Cached Flutter SDK |
| uses: actions/cache@v3 |
| with: |
| path: | |
| ./flutter-sdk |
| key: flutter-sdk-${{ runner.os }}-${{ needs.flutter-prep.outputs.latest_flutter_candidate }} |
| |
| - name: tool/bots.sh |
| env: |
| BOT: main |
| run: ./tool/bots.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@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 |
| - name: Load Cached Flutter SDK |
| uses: actions/cache@v3 |
| with: |
| path: | |
| ./flutter-sdk |
| key: flutter-sdk-${{ runner.os }}-${{ needs.flutter-prep.outputs.latest_flutter_candidate }} |
| - name: tool/bots.sh |
| env: |
| BOT: ${{ matrix.bot }} |
| PLATFORM: vm |
| run: ./tool/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@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 |
| - name: Load Cached Flutter SDK |
| uses: actions/cache@v3 |
| with: |
| path: | |
| ./flutter-sdk |
| key: flutter-sdk-${{ runner.os }}-${{ needs.flutter-prep.outputs.latest_flutter_candidate }} |
| - name: tool/bots.sh |
| env: |
| BOT: ${{ matrix.bot }} |
| PLATFORM: vm |
| ONLY_GOLDEN: ${{ matrix.only_golden }} |
| run: ./tool/bots.sh |
| |
| - name: Upload Golden Failure Artifacts |
| uses: actions/upload-artifact@v3 |
| if: failure() |
| with: |
| name: golden_image_failures.${{ matrix.bot }} |
| path: packages/devtools_app/test/**/failures/*.png |
| |
| |
| # TODO(https://github.com/flutter/devtools/issues/1715): add a windows compatible version of tool/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@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 |
| # |
| # - name: tool/bots.sh |
| # env: |
| # BOT: ${{ matrix.bot }} |
| # PLATFORM: vm |
| # run: ./tool/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@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 |
| # - name: tool/bots.sh |
| # env: |
| # BOT: ${{ matrix.bot }} |
| # run: ./tool/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 |
| |