name: stream_flutter_workflow env: ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' flutter_version: "3.10.4" on: pull_request: paths: - 'packages/**' - '.github/workflows/stream_flutter_workflow.yml' types: - opened - reopened - synchronize - ready_for_review push: branches: - master - develop concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: analyze: timeout-minutes: 15 if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - name: "Git Checkout" uses: actions/checkout@v3 with: fetch-depth: 0 - name: "Install Flutter" uses: subosito/flutter-action@v2 with: cache: true flutter-version: ${{ env.flutter_version }} - name: "Install Tools" run: | flutter pub global activate melos - name: "Bootstrap Workspace" run: melos bootstrap --verbose - name: "Dart Analyze" run: | melos run analyze - name: "Pub Check" if: github.base_ref == 'master' run: | melos run lint:pub format: runs-on: ubuntu-latest if: github.event.pull_request.draft == false timeout-minutes: 15 steps: - name: "Git Checkout" uses: actions/checkout@v3 with: fetch-depth: 0 - name: "Install Flutter" uses: subosito/flutter-action@v2 with: cache: true flutter-version: ${{ env.flutter_version }} - name: "Install Tools" run: | flutter pub global activate melos - name: "Bootstrap Workspace" run: melos bootstrap - name: "Melos Format" run: melos run format - name: "Validate Formatting" run: | ./.github/workflows/scripts/validate-formatting.sh test: runs-on: ubuntu-latest if: github.event.pull_request.draft == false timeout-minutes: 30 steps: - name: "Git Checkout" uses: actions/checkout@v3 with: fetch-depth: 0 - name: "Install Flutter" uses: subosito/flutter-action@v2 with: cache: true flutter-version: ${{ env.flutter_version }} - name: "Install Tools" run: | flutter pub global activate melos flutter pub global activate remove_from_coverage - name: "Bootstrap Workspace" run: melos bootstrap - name: "Flutter Test" run: melos run test:all - name: "Collect Coverage" run: melos run coverage:ignore-file --no-select - name: "Upload Coverage" uses: codecov/codecov-action@v3 with: token: ${{secrets.CODECOV_TOKEN}} files: packages/*/coverage/lcov.info - name: "Stream Chat Coverage Check" uses: VeryGoodOpenSource/very_good_coverage@v2.1.0 with: path: packages/stream_chat/coverage/lcov.info min_coverage: 79 - name: "Stream Chat Localizations Coverage Check" uses: VeryGoodOpenSource/very_good_coverage@v2.1.0 with: path: packages/stream_chat_localizations/coverage/lcov.info min_coverage: 100 - name: "Stream Chat Persistence Coverage Check" uses: VeryGoodOpenSource/very_good_coverage@v2.1.0 with: path: packages/stream_chat_persistence/coverage/lcov.info min_coverage: 95 - name: "Stream Chat Flutter Core Coverage Check" uses: VeryGoodOpenSource/very_good_coverage@v2.1.0 with: path: packages/stream_chat_flutter_core/coverage/lcov.info min_coverage: 30 - name: "Stream Chat Flutter Coverage Check" uses: VeryGoodOpenSource/very_good_coverage@v2.1.0 with: path: packages/stream_chat_flutter/coverage/lcov.info min_coverage: 44 draft-build: runs-on: ubuntu-latest if: github.event.pull_request.draft == true timeout-minutes: 1 steps: - name: Run a one-line script run: echo Draft PR, you are good.