# This workflow uses actions that are not certified by GitHub. # They are provided by a third-party and are governed by # separate terms of service, privacy policy, and support # documentation. name: Flutter on: push: branches-ignore: [] pull_request: branches: [ "develop", "prod" ] jobs: lint: runs-on: macos-latest steps: - uses: actions/checkout@v4 - name: Set Up Flutter uses: subosito/flutter-action@v2 with: flutter-version: '3.29.2' channel: 'stable' - name: Linting project run: flutter analyze format: runs-on: macos-latest needs: lint # Only when lint fails, and its a push to develop branch if: ${{ failure() }} && github.event_name == 'push' #&& github.ref == 'refs/heads/develop' steps: - uses: actions/checkout@v4 - name: Set Up Flutter uses: subosito/flutter-action@v2 with: flutter-version: '3.29.2' channel: 'stable' - name: Get & upgrade dependencies run: | flutter pub get flutter pub upgrade --major-versions - name: Formatting Code run: | flutter analyze dart fix --apply dart format . --set-exit-if-changed || true - name: Commit Format Changes #if: failure() && steps.format.outcome == 'failure' run: | git config --global user.name "GitHub Actions" git config --global user.email "actions@github.com" git add . git commit -m "Pipeline: Auto-formatting" git push build: runs-on: macos-latest steps: - uses: actions/checkout@v4 - name: Set Up Flutter uses: subosito/flutter-action@v2 with: flutter-version: '3.29.2' channel: 'stable' - name: Install dependencies run: flutter pub get - name: Analyze project source run: flutter analyze --fatal-infos - name: Run App run: flutter run test: runs-on: macos-latest steps: - uses: actions/checkout@v4 - name: Set Up Flutter uses: subosito/flutter-action@v2 with: flutter-version: '3.29.2' channel: 'stable' - name: Run tests run: flutter test