feat(perf): Swift Package Manager support #10798
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: all_plugins | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
on: | |
pull_request: | |
paths-ignore: | |
- 'docs/**' | |
- 'website/**' | |
- '**.md' | |
push: | |
branches: | |
- main | |
paths-ignore: | |
- 'docs/**' | |
- 'website/**' | |
- '**.md' | |
jobs: | |
analyze: | |
timeout-minutes: 45 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 | |
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 | |
with: | |
channel: 'stable' | |
cache: true | |
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa | |
with: | |
melos-version: '5.3.0' | |
- name: 'Run Analyze' | |
run: melos analyze-ci | |
# Separated from "analyse" action as pubspec_override file is not being taken into account when running `flutter pub publish --dry-run` | |
# This will fail on CI until this is fixed: https://github.com/invertase/melos/issues/467 | |
# You need to switch to Flutter 3.3.0, and run this test manually to check it works and update PR to confirm its success | |
pub_dry_run: | |
timeout-minutes: 30 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 | |
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 | |
with: | |
channel: 'stable' | |
cache: true | |
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa | |
with: | |
melos-version: '5.3.0' | |
- name: 'Pub Check' | |
run: | | |
melos exec -c 1 --no-private --ignore="*example*" -- \ | |
dart pub publish --dry-run | |
pub_get_check: | |
timeout-minutes: 30 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 | |
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 | |
with: | |
channel: 'stable' | |
cache: true | |
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa | |
with: | |
melos-version: '5.3.0' | |
- name: 'Flutter Pub Get' | |
run: | | |
melos exec -c 1 --scope="*example*" -- \ | |
"flutter pub get" | |
format: | |
# switch back to ubuntu-latest when swiftformat is working again | |
runs-on: macos-latest | |
timeout-minutes: 20 | |
steps: | |
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 | |
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 | |
with: | |
channel: 'stable' | |
cache: true | |
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa | |
with: | |
melos-version: '5.3.0' | |
- uses: Homebrew/actions/setup-homebrew@master | |
- name: 'Install Tools' | |
run: | | |
alias python=python3 | |
flutter pub global activate flutter_plugin_tools | |
brew install swiftformat | |
brew install clang-format | |
brew link --overwrite --force clang-format | |
- name: 'Formatter version' | |
run: | | |
clang-format --version | |
swiftformat --version | |
- name: 'Dart, Java and Objective-C ' | |
run: | | |
flutter pub global run flutter_plugin_tools format | |
./.github/workflows/scripts/validate-formatting.sh | |
- name: 'Swift' | |
if: ${{ success() || failure() }} | |
run: | | |
swiftformat . | |
./.github/workflows/scripts/validate-formatting.sh | |
build_examples_dart: | |
timeout-minutes: 30 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 | |
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 | |
with: | |
channel: 'stable' | |
cache: true | |
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa | |
with: | |
melos-version: '5.3.0' | |
- name: 'Build Examples' | |
run: | | |
melos exec -c 1 --scope="*example*" --dir-exists="web" -- \ | |
"flutter build web" | |
swift-integration: | |
runs-on: macos-latest | |
timeout-minutes: 30 | |
env: | |
FLUTTER_DEPENDENCIES: "cloud_firestore firebase_remote_config cloud_functions firebase_database firebase_auth firebase_storage firebase_analytics firebase_messaging firebase_performance" | |
steps: | |
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 | |
- uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 | |
with: | |
# TODO - enabling swift is on `master` channel at the moment. Update when it's on `stable` | |
channel: 'master' | |
- name: Setup firebase_core example app to test Swift integration | |
# run this before running melos boostrap to ensure the example app is set up | |
run: | | |
cd packages/firebase_core/firebase_core/example | |
flutter pub add $FLUTTER_DEPENDENCIES | |
cd ../../../.. | |
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa | |
with: | |
melos-version: '5.3.0' | |
- name: 'Swift Integration Setup' | |
run: flutter config --enable-swift-package-manager | |
- name: 'Build Apps with Swift Package Manager' | |
run: dart ./.github/workflows/scripts/swift-integration.dart $FLUTTER_DEPENDENCIES | |
test: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 | |
- uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 | |
with: | |
channel: 'stable' | |
cache: true | |
- uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa | |
with: | |
melos-version: '5.3.0' | |
- name: 'Flutter Test' | |
run: melos run test --no-select | |
- name: 'Flutter Test - Web' | |
run: melos run test:web --no-select | |
check-files-license-headers: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 | |
- uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 | |
with: | |
go-version: '^1.13.1' | |
# Go is used by addlicense command (addlicense is used in melos run | |
# check-license-header) | |
- run: go install github.com/google/addlicense@latest | |
- name: Install Dart | |
uses: dart-lang/setup-dart@0a8a0fc875eb934c15d08629302413c671d3f672 | |
- name: Install Melos | |
uses: bluefireteam/melos-action@c7dcb921b23cc520cace360b95d02b37bf09cdaa | |
with: | |
# Running `melos bootstrap` is not needed because we use Melos just | |
# for the `check-license-header` script. | |
run-bootstrap: false | |
melos-version: '5.3.0' | |
- name: Check license header | |
run: melos run check-license-header |