-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
⚡️ Improve melos and workflow setup (#2021)
- Reduce separate workflows and matrices to the minimum (`30+` → `3`). - Add a script to apply file patches for corresponding SDKs. - Add a script to produce `.melos_ignored_packages` for steps. - Annotate test platforms for plugins. - Fix linter recognition between Dart SDK versions. ### New Pull Request Checklist - [x] I have read the [Documentation](https://pub.dev/documentation/dio/latest/) - [x] I have searched for a similar pull request in the [project](https://github.com/cfug/dio/pulls) and found none - [x] I have updated this branch with the latest `main` branch to avoid conflicts (via merge from master or rebase) - [ ] I have added the required tests to prove the fix/feature I'm adding - [ ] I have updated the documentation (if necessary) - [x] I have run the tests without failures - [x] I have updated the `CHANGELOG.md` in the corresponding package ### Additional context and info (if any) Melos has poor support around versions and packages filtering. It has `MELOS_PACKAGES` and `packageFilter` for sessions, but those fields are not working well across its major versions. The main idea about filtering our packages is to prevent unsatisfied packages from being handled by melos process. For example, if `native_dio_adapter` requires Flutter `3.13.0` and the current Flutter is `2.15.1`, exclude it from packages. To do this, I've added a script to serialize the melos workspace first, then determine whether the Dart version satisfies the package version. It produces package lists according to demand (satisfied packages or ignored packages).
- Loading branch information
Showing
18 changed files
with
149 additions
and
254 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
name: Tests | ||
name: Verify packages abilities | ||
|
||
on: | ||
push: | ||
|
@@ -14,136 +14,50 @@ on: | |
paths-ignore: | ||
- "**.md" | ||
|
||
jobs: | ||
format: | ||
name: Check formatting | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
directory: [ | ||
"dio", | ||
"example", | ||
"example_flutter_app", | ||
"plugins/cookie_manager", | ||
"plugins/http2_adapter", | ||
"plugins/native_dio_adapter" | ||
] | ||
defaults: | ||
run: | ||
working-directory: ${{ matrix.directory }} | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: dart-lang/[email protected] | ||
with: | ||
sdk: stable | ||
- run: dart format --set-exit-if-changed . | ||
|
||
analyze: | ||
needs: format | ||
name: Analyze Dart-only libraries | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
directory: ["dio", "example", "plugins/cookie_manager", "plugins/http2_adapter"] | ||
defaults: | ||
run: | ||
working-directory: ${{ matrix.directory }} | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Prepare Dart SDK | ||
uses: dart-lang/[email protected] | ||
with: | ||
sdk: stable | ||
- name: Analyze | ||
run: dart pub get && dart analyze --fatal-infos | ||
|
||
analyze_flutter: | ||
needs: format | ||
name: Analyze Flutter libraries | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
directory: ["example_flutter_app", "plugins/native_dio_adapter"] | ||
defaults: | ||
run: | ||
working-directory: ${{ matrix.directory }} | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Prepare Flutter SDK | ||
uses: subosito/[email protected] | ||
with: | ||
cache: true | ||
channel: stable | ||
- name: Analyze | ||
run: flutter pub get && flutter analyze --fatal-infos | ||
defaults: | ||
run: | ||
shell: bash -leo pipefail {0} | ||
|
||
test_dio: | ||
needs: [analyze, analyze_flutter] | ||
name: Run unit tests with dio | ||
runs-on: ubuntu-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
sdk: [ 2.15.0, stable, beta ] | ||
platform: [ vm, chrome, firefox ] | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: dart-lang/[email protected] | ||
with: | ||
sdk: ${{ matrix.sdk }} | ||
- run: | | ||
chmod +x ./scripts/prepare_pinning_certs.sh | ||
./scripts/prepare_pinning_certs.sh | ||
shell: bash | ||
- run: dart pub get | ||
working-directory: dio | ||
- run: dart test --chain-stack-traces --platform=${{ matrix.platform }} | ||
working-directory: dio | ||
|
||
test_plugins: | ||
needs: [analyze, analyze_flutter] | ||
name: Run unit tests with plugins | ||
jobs: | ||
workflows: | ||
runs-on: ubuntu-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
sdk: [ 2.15.0, stable, beta ] | ||
directory: ["plugins/cookie_manager", "plugins/http2_adapter"] | ||
sdk: [ min, stable, beta ] | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: dart-lang/[email protected] | ||
- uses: subosito/[email protected] | ||
with: | ||
sdk: ${{ matrix.sdk }} | ||
cache: true | ||
flutter-version: ${{ matrix.sdk == 'min' && '2.8.0' || '' }} | ||
channel: ${{ matrix.sdk == 'min' && '' || matrix.channel }} | ||
- run: | | ||
chmod +x ./scripts/prepare_pinning_certs.sh | ||
./scripts/prepare_pinning_certs.sh | ||
shell: bash | ||
- name: Install proxy | ||
if: matrix.directory == 'plugins/http2_adapter' | ||
- name: Install proxy for tests | ||
run: sudo apt-get install -y squid | ||
- run: dart pub get | ||
working-directory: ${{ matrix.directory }} | ||
- run: dart test --chain-stack-traces | ||
working-directory: ${{ matrix.directory }} | ||
|
||
test_flutter_plugins: | ||
needs: [analyze, analyze_flutter] | ||
name: Run unit tests with Flutter plugins | ||
runs-on: ubuntu-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
channel: [ min, stable, beta ] | ||
directory: ["plugins/native_dio_adapter"] | ||
defaults: | ||
run: | ||
working-directory: ${{ matrix.directory }} | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Prepare Flutter SDK | ||
uses: subosito/[email protected] | ||
- uses: bluefireteam/melos-action@v2 | ||
with: | ||
cache: true | ||
flutter-version: ${{ matrix.channel == 'min' && '3.13.0' || '' }} | ||
channel: ${{ matrix.channel == 'min' && 'stable' || matrix.channel }} | ||
- run: flutter test | ||
run-bootstrap: false | ||
- name: Patching files for Flutter ${{ matrix.sdk }} | ||
run: dart ./scripts/files_patch.dart | ||
- name: Check satisfied packages | ||
run: | | ||
dart ./scripts/melos_ignored_packages.dart | ||
echo $(cat .melos_ignored_packages) >> ~/.bash_profile | ||
- name: Bootstrap | ||
run: melos bootstrap $(eval echo $IGNORED_PACKAGES) | ||
- name: '[Verify step] Format' | ||
run: melos exec $(eval echo $IGNORED_PACKAGES) -- "dart format --set-exit-if-changed ." | ||
- name: '[Verify step] Analyze Dart packages' | ||
run: melos exec $(eval echo $IGNORED_PACKAGES) --no-flutter -- "dart analyze --fatal-infos" | ||
- name: '[Verify step] Analyze Flutter packages' | ||
run: melos exec $(eval echo $IGNORED_PACKAGES) --flutter -- "flutter analyze --fatal-infos" | ||
- name: '[Verify step] Publish dry-run' | ||
run: melos exec $(eval echo $IGNORED_PACKAGES) --ignore="*example*" -- "dart pub publish --dry-run" | ||
- name: '[Verify step] Test Dart packages' | ||
run: melos exec $(eval echo $IGNORED_PACKAGES) --ignore="*example*" --no-flutter -- "dart test --chain-stack-traces --platform=vm,chrome,firefox" | ||
- name: '[Verify step] Test Flutter packages' | ||
run: melos exec $(eval echo $IGNORED_PACKAGES) --ignore="*example*" --flutter -- "flutter test" |
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
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -23,4 +23,3 @@ dependency_overrides: | |
|
||
dev_dependencies: | ||
lints: any | ||
test: ^1.22.1 |
This file was deleted.
Oops, something went wrong.
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
This file was deleted.
Oops, something went wrong.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,3 +10,7 @@ ide: | |
intellij: | ||
enabled: true | ||
moduleNamePrefix: '' | ||
|
||
command: | ||
bootstrap: | ||
runPubGetInParallel: false |
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
@TestOn('vm') | ||
import 'dart:collection'; | ||
import 'dart:convert'; | ||
import 'dart:io'; | ||
|
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
@TestOn('vm') | ||
import 'dart:io'; | ||
import 'dart:typed_data'; | ||
|
||
|
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,7 +2,7 @@ | |
|
||
## Unreleased | ||
|
||
*None.* | ||
- Adds the missing `flutter` dependency. | ||
|
||
## 1.1.0 | ||
|
||
|
Oops, something went wrong.