From 8a5752a6e3885912645bea8c6ef4840650fd6bf4 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Sat, 9 Dec 2023 15:44:06 -0600 Subject: [PATCH 01/14] ci: revamp workflows --- .github/actions/dart_package/action.yaml | 98 ++++++++++++++++++++++++ .github/codecov.yml | 3 + .github/workflows/bloc.yaml | 68 ---------------- .github/workflows/bloc_concurrency.yaml | 68 ---------------- .github/workflows/bloc_test.yaml | 68 ---------------- .github/workflows/bloc_tools.yaml | 69 ----------------- .github/workflows/build.yaml | 22 ------ .github/workflows/main.yaml | 88 +++++++++++++++++++++ 8 files changed, 189 insertions(+), 295 deletions(-) create mode 100644 .github/actions/dart_package/action.yaml create mode 100644 .github/codecov.yml delete mode 100644 .github/workflows/bloc.yaml delete mode 100644 .github/workflows/bloc_concurrency.yaml delete mode 100644 .github/workflows/bloc_test.yaml delete mode 100644 .github/workflows/bloc_tools.yaml delete mode 100644 .github/workflows/build.yaml create mode 100644 .github/workflows/main.yaml diff --git a/.github/actions/dart_package/action.yaml b/.github/actions/dart_package/action.yaml new file mode 100644 index 00000000000..c43b449c17d --- /dev/null +++ b/.github/actions/dart_package/action.yaml @@ -0,0 +1,98 @@ +name: Dart Package Workflow +description: Build and test Dart packages. + +inputs: + codecov_token: + required: true + description: The Codecov token used to upload coverage + concurrency: + required: false + default: "4" + description: The value of the concurrency flag (-j) used when running tests + coverage_excludes: + required: false + default: "" + description: Globs to exclude from coverage + dart_sdk: + required: false + default: "stable" + description: "The dart sdk version to use" + working_directory: + required: false + default: "." + description: The working directory for this workflow + min_coverage: + required: false + default: "100" + description: The minimum coverage percentage value + min_score: + required: false + default: "120" + description: The minimum pana score value + analyze_directories: + required: false + default: "lib test" + description: Directories to analyze + report_on: + required: false + default: "lib" + description: Directories to report on when collecting coverage + platform: + required: false + default: "vm" + description: Platform to use when running tests + +runs: + using: "composite" + steps: + - name: ๐ŸŽฏ Setup Dart + uses: dart-lang/setup-dart@v1 + with: + sdk: ${{inputs.dart_sdk}} + + - name: ๐Ÿ“ฆ Install Dependencies + working-directory: ${{ inputs.working_directory }} + shell: ${{ inputs.shell }} + run: dart pub get + + - name: โœจ Format + working-directory: ${{ inputs.working_directory }} + shell: ${{ inputs.shell }} + run: dart format --set-exit-if-changed . + + - name: ๐Ÿ” Analyze + working-directory: ${{ inputs.working_directory }} + shell: ${{ inputs.shell }} + run: dart analyze --fatal-warnings ${{inputs.analyze_directories}} + + - name: ๐Ÿงช Test + working-directory: ${{ inputs.working_directory }} + shell: ${{ inputs.shell }} + run: | + dart pub global activate coverage + dart test -j ${{inputs.concurrency}} --coverage=coverage --platform=${{inputs.platform}} && dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=${{inputs.report_on}} --check-ignore + + - name: โฌ†๏ธ Upload Coverage + uses: codecov/codecov-action@v3 + env: + PACKAGE_PATH: ${{ inputs.working_directory}} + with: + flags: ${{ PACKAGE_PATH##*/ }} + token: ${{ inputs.codecov_token }} + + - name: ๐Ÿ“Š Verify Coverage + uses: VeryGoodOpenSource/very_good_coverage@v2 + with: + path: ${{inputs.working_directory}}/coverage/lcov.info + exclude: ${{inputs.coverage_excludes}} + min_coverage: ${{inputs.min_coverage}} + + - name: ๐Ÿ’ฏ Verify Pub Score + working-directory: ${{ inputs.working_directory }} + shell: ${{ inputs.shell }} + run: | + PANA=$(pana . --no-warning); PANA_SCORE=$(echo $PANA | sed -n "s/.*Points: \([0-9]*\)\/\([0-9]*\)./\1\/\2/p") + echo "score: $PANA_SCORE" + IFS='/'; read -a SCORE_ARR <<< "$PANA_SCORE"; SCORE=SCORE_ARR[0]; TOTAL=SCORE_ARR[1] + if [ -z "$1" ]; then MINIMUM_SCORE=TOTAL; else MINIMUM_SCORE=$1; fi + if (( $SCORE < $MINIMUM_SCORE )); then echo "minimum score $MINIMUM_SCORE was not met!"; exit 1; fi diff --git a/.github/codecov.yml b/.github/codecov.yml new file mode 100644 index 00000000000..b7052f68ce4 --- /dev/null +++ b/.github/codecov.yml @@ -0,0 +1,3 @@ +flag_management: + default_rules: + carryforward: true diff --git a/.github/workflows/bloc.yaml b/.github/workflows/bloc.yaml deleted file mode 100644 index 2c1a9cebbae..00000000000 --- a/.github/workflows/bloc.yaml +++ /dev/null @@ -1,68 +0,0 @@ -name: bloc - -on: - push: - paths: - - "packages/bloc/**" - - ".github/workflows/bloc.yaml" - - pull_request: - paths: - - "packages/bloc/**" - - ".github/workflows/bloc.yaml" - -jobs: - build: - defaults: - run: - working-directory: packages/bloc - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - uses: dart-lang/setup-dart@v1 - - - name: Install Dependencies - run: dart pub get - - - name: Format - run: dart format --set-exit-if-changed . - - - name: Analyze - run: dart analyze --fatal-infos --fatal-warnings . - - - name: Run Tests - run: | - dart pub global activate coverage 1.2.0 - dart test --coverage=coverage && dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib - - - name: Check Code Coverage - uses: VeryGoodOpenSource/very_good_coverage@v2 - with: - path: packages/bloc/coverage/lcov.info - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - - pana: - defaults: - run: - working-directory: packages/bloc - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - uses: subosito/flutter-action@v2.10.0 - - - name: Install Dependencies - run: | - flutter packages get - flutter pub global activate pana - sudo apt-get install webp - - - name: Verify Pub Score - run: ../../tool/verify_pub_score.sh diff --git a/.github/workflows/bloc_concurrency.yaml b/.github/workflows/bloc_concurrency.yaml deleted file mode 100644 index ec368b74332..00000000000 --- a/.github/workflows/bloc_concurrency.yaml +++ /dev/null @@ -1,68 +0,0 @@ -name: bloc_concurrency - -on: - push: - paths: - - "packages/bloc_concurrency/**" - - ".github/workflows/bloc_concurrency.yaml" - - pull_request: - paths: - - "packages/bloc_concurrency/**" - - ".github/workflows/bloc_concurrency.yaml" - -jobs: - build: - defaults: - run: - working-directory: packages/bloc_concurrency - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - uses: dart-lang/setup-dart@v1 - - - name: Install Dependencies - run: dart pub get - - - name: Format - run: dart format --set-exit-if-changed . - - - name: Analyze - run: dart analyze --fatal-infos --fatal-warnings . - - - name: Run Tests - run: | - dart pub global activate coverage 1.2.0 - dart test --coverage=coverage && dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib - - - name: Check Code Coverage - uses: VeryGoodOpenSource/very_good_coverage@v2 - with: - path: packages/bloc_concurrency/coverage/lcov.info - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - - pana: - defaults: - run: - working-directory: packages/bloc_concurrency - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - uses: subosito/flutter-action@v2.10.0 - - - name: Install Dependencies - run: | - flutter packages get - flutter pub global activate pana - sudo apt-get install webp - - - name: Verify Pub Score - run: ../../tool/verify_pub_score.sh diff --git a/.github/workflows/bloc_test.yaml b/.github/workflows/bloc_test.yaml deleted file mode 100644 index 2fc7690d7f5..00000000000 --- a/.github/workflows/bloc_test.yaml +++ /dev/null @@ -1,68 +0,0 @@ -name: bloc_test - -on: - push: - paths: - - "packages/bloc_test/**" - - ".github/workflows/bloc_test.yaml" - - pull_request: - paths: - - "packages/bloc_test/**" - - ".github/workflows/bloc_test.yaml" - -jobs: - build: - defaults: - run: - working-directory: packages/bloc_test - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - uses: dart-lang/setup-dart@v1 - - - name: Install Dependencies - run: dart pub get - - - name: Format - run: dart format --set-exit-if-changed . - - - name: Analyze - run: dart analyze --fatal-infos --fatal-warnings . - - - name: Run Tests - run: | - dart pub global activate coverage 1.2.0 - dart test --coverage=coverage && dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib - - - name: Check Code Coverage - uses: VeryGoodOpenSource/very_good_coverage@v2 - with: - path: packages/bloc_test/coverage/lcov.info - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - - pana: - defaults: - run: - working-directory: packages/bloc_test - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - uses: subosito/flutter-action@v2.10.0 - - - name: Install Dependencies - run: | - flutter packages get - flutter pub global activate pana - sudo apt-get install webp - - - name: Verify Pub Score - run: ../../tool/verify_pub_score.sh diff --git a/.github/workflows/bloc_tools.yaml b/.github/workflows/bloc_tools.yaml deleted file mode 100644 index 3ceca1a39d8..00000000000 --- a/.github/workflows/bloc_tools.yaml +++ /dev/null @@ -1,69 +0,0 @@ -name: bloc_tools - -on: - pull_request: - paths: - - ".github/workflows/bloc_tools.yaml" - - "packages/bloc_tools/**" - push: - branches: - - master - paths: - - ".github/workflows/bloc_tools.yaml" - - "packages/bloc_tools/**" - -jobs: - build: - defaults: - run: - working-directory: packages/bloc_tools - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - uses: subosito/flutter-action@v2.10.0 - - - name: Install Dependencies - run: flutter packages get - - - name: Format - run: dart format --set-exit-if-changed . - - - name: Analyze - run: flutter analyze . - - - name: Verify Build - run: flutter pub run test --run-skipped -t pull-request-only - - - name: Run Tests - run: flutter test -x pull-request-only --no-pub --coverage --test-randomize-ordering-seed random - - - name: Check Code Coverage - uses: VeryGoodOpenSource/very_good_coverage@v2 - with: - path: packages/bloc_tools/coverage/lcov.info - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - - pana: - defaults: - run: - working-directory: packages/bloc_tools - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - uses: subosito/flutter-action@v2.10.0 - - - name: Install Dependencies - run: | - flutter packages get - flutter pub global activate pana - - - name: Verify Pub Score - run: ../../tool/verify_pub_score.sh diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml deleted file mode 100644 index f3e3aeeced0..00000000000 --- a/.github/workflows/build.yaml +++ /dev/null @@ -1,22 +0,0 @@ -name: build - -on: - pull_request: - branches: - - master - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: noop - run: echo 'noop' - - semantic_pull_request: - uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/semantic_pull_request.yml@v1 - - pana: - runs-on: ubuntu-latest - steps: - - name: noop - run: echo 'noop' diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml new file mode 100644 index 00000000000..a051ba5b219 --- /dev/null +++ b/.github/workflows/main.yaml @@ -0,0 +1,88 @@ +name: ci + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +on: + pull_request: + types: [review_requested, ready_for_review] + push: + branches: [master] + +jobs: + semantic_pull_request: + name: โœ… Semantic Pull Request + uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/semantic_pull_request.yml@v1 + + changes: + runs-on: ubuntu-latest + + outputs: + needs_dart_build: ${{ steps.needs_dart_build.outputs.changes }} + + name: ๐Ÿ‘€ Detect Changes + + steps: + - name: ๐Ÿ“š Git Checkout + uses: actions/checkout@v3 + + - uses: dorny/paths-filter@v2 + name: Build Detection + id: needs_dart_build + with: + filters: | + bloc_concurrency: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/dart_package/action.yaml + - packages/bloc_concurrency/** + bloc_test: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/dart_package/action.yaml + - packages/bloc_test/** + bloc_tools: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/dart_package/action.yaml + - packages/bloc_tools/** + bloc: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/dart_package/action.yaml + - packages/bloc/** + + build_dart_packages: + needs: changes + if: ${{ needs.changes.outputs.needs_dart_build != '[]' }} + + strategy: + matrix: + package: ${{ fromJSON(needs.changes.outputs.needs_dart_build) }} + + runs-on: ubuntu-latest + + name: ๐ŸŽฏ Build ${{ matrix.package }} + + steps: + - name: ๐Ÿ“š Git Checkout + uses: actions/checkout@v3 + + - name: ๐ŸŽฏ Build ${{ matrix.package }} + uses: ./.github/actions/dart_package + with: + codecov_token: ${{ secrets.CODECOV_TOKEN }} + working_directory: packages/${{ matrix.package }} + min_coverage: 100 + + ci: + needs: [semantic_pull_request, build_dart_packages] + if: ${{ always() }} + + runs-on: ubuntu-latest + + steps: + - name: โ›”๏ธ exit(1) on failure + if: ${{ contains(join(needs.*.result, ','), 'failure') }} + run: exit 1 From 88e41648fd6f0f380f0ffa5de7edbb8aba95b55b Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Sat, 9 Dec 2023 15:48:04 -0600 Subject: [PATCH 02/14] adjust pr trigger --- .github/workflows/main.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index a051ba5b219..78ed4cd6f58 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -6,7 +6,7 @@ concurrency: on: pull_request: - types: [review_requested, ready_for_review] + types: [opened, reopened, review_requested, ready_for_review] push: branches: [master] From f60ebf36d68fae3681088112fa3356a082f46e0a Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Sat, 9 Dec 2023 15:51:11 -0600 Subject: [PATCH 03/14] adjust pr trigger --- .github/workflows/main.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 78ed4cd6f58..ae38de374db 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -6,7 +6,6 @@ concurrency: on: pull_request: - types: [opened, reopened, review_requested, ready_for_review] push: branches: [master] @@ -18,6 +17,8 @@ jobs: changes: runs-on: ubuntu-latest + if: github.event.pull_request.draft == false + outputs: needs_dart_build: ${{ steps.needs_dart_build.outputs.changes }} From 8b9b36acac9d048036036d45d5df9802fbb3ea18 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Sat, 9 Dec 2023 15:53:52 -0600 Subject: [PATCH 04/14] adjustments --- .github/actions/dart_package/action.yaml | 2 +- .github/workflows/main.yaml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/actions/dart_package/action.yaml b/.github/actions/dart_package/action.yaml index c43b449c17d..047a5929c66 100644 --- a/.github/actions/dart_package/action.yaml +++ b/.github/actions/dart_package/action.yaml @@ -77,7 +77,7 @@ runs: env: PACKAGE_PATH: ${{ inputs.working_directory}} with: - flags: ${{ PACKAGE_PATH##*/ }} + flags: ${{ ${PACKAGE_PATH##*/} }} token: ${{ inputs.codecov_token }} - name: ๐Ÿ“Š Verify Coverage diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index ae38de374db..75b6ceaa111 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -20,7 +20,7 @@ jobs: if: github.event.pull_request.draft == false outputs: - needs_dart_build: ${{ steps.needs_dart_build.outputs.changes }} + needs_dart_package_checks: ${{ steps.needs_dart_package_checks.outputs.changes }} name: ๐Ÿ‘€ Detect Changes @@ -30,7 +30,7 @@ jobs: - uses: dorny/paths-filter@v2 name: Build Detection - id: needs_dart_build + id: needs_dart_package_checks with: filters: | bloc_concurrency: @@ -54,17 +54,17 @@ jobs: - ./.github/actions/dart_package/action.yaml - packages/bloc/** - build_dart_packages: + dart_package_checks: needs: changes - if: ${{ needs.changes.outputs.needs_dart_build != '[]' }} + if: ${{ needs.changes.outputs.needs_dart_package_checks != '[]' }} strategy: matrix: - package: ${{ fromJSON(needs.changes.outputs.needs_dart_build) }} + package: ${{ fromJSON(needs.changes.outputs.needs_dart_package_checks) }} runs-on: ubuntu-latest - name: ๐ŸŽฏ Build ${{ matrix.package }} + name: ๐ŸŽฏ ${{ matrix.package }} steps: - name: ๐Ÿ“š Git Checkout @@ -78,7 +78,7 @@ jobs: min_coverage: 100 ci: - needs: [semantic_pull_request, build_dart_packages] + needs: [semantic_pull_request, dart_package_checks] if: ${{ always() }} runs-on: ubuntu-latest From bcfa0a4ec9feecae5454b9613cc14529ff4dbfd1 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Sat, 9 Dec 2023 15:55:42 -0600 Subject: [PATCH 05/14] fix --- .github/actions/dart_package/action.yaml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/actions/dart_package/action.yaml b/.github/actions/dart_package/action.yaml index 047a5929c66..d86931983ce 100644 --- a/.github/actions/dart_package/action.yaml +++ b/.github/actions/dart_package/action.yaml @@ -72,12 +72,19 @@ runs: dart pub global activate coverage dart test -j ${{inputs.concurrency}} --coverage=coverage --platform=${{inputs.platform}} && dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=${{inputs.report_on}} --check-ignore + - name: ๐Ÿ“ฆ Detect Package Name + env: + PACKAGE_PATH: ${{ inputs.working_directory}} + id: package + shell: ${{ inputs.shell }} + run: echo "name=${PACKAGE_PATH##*/}" >> $GITHUB_OUTPUT + - name: โฌ†๏ธ Upload Coverage uses: codecov/codecov-action@v3 env: PACKAGE_PATH: ${{ inputs.working_directory}} with: - flags: ${{ ${PACKAGE_PATH##*/} }} + flags: ${{ steps.package.outputs.name }} token: ${{ inputs.codecov_token }} - name: ๐Ÿ“Š Verify Coverage From c9c7d534e1802f38e17dc63177872d290a1684cd Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Sat, 9 Dec 2023 15:57:22 -0600 Subject: [PATCH 06/14] fix pana installation --- .github/actions/dart_package/action.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/actions/dart_package/action.yaml b/.github/actions/dart_package/action.yaml index d86931983ce..94f000d2cb1 100644 --- a/.github/actions/dart_package/action.yaml +++ b/.github/actions/dart_package/action.yaml @@ -98,6 +98,8 @@ runs: working-directory: ${{ inputs.working_directory }} shell: ${{ inputs.shell }} run: | + dart pub global activate pana + sudo apt-get install webp PANA=$(pana . --no-warning); PANA_SCORE=$(echo $PANA | sed -n "s/.*Points: \([0-9]*\)\/\([0-9]*\)./\1\/\2/p") echo "score: $PANA_SCORE" IFS='/'; read -a SCORE_ARR <<< "$PANA_SCORE"; SCORE=SCORE_ARR[0]; TOTAL=SCORE_ARR[1] From 9dc14eed0f82dc5c0c6a9eb894f75e8638c263f8 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Sat, 9 Dec 2023 16:04:05 -0600 Subject: [PATCH 07/14] add flutter checks --- .github/actions/flutter_package/action.yaml | 104 ++++++++++++++++++++ .github/workflows/flutter_bloc.yaml | 66 ------------- .github/workflows/hydrated_bloc.yaml | 66 ------------- .github/workflows/main.yaml | 48 ++++++++- .github/workflows/replay_bloc.yaml | 66 ------------- 5 files changed, 151 insertions(+), 199 deletions(-) create mode 100644 .github/actions/flutter_package/action.yaml delete mode 100644 .github/workflows/flutter_bloc.yaml delete mode 100644 .github/workflows/hydrated_bloc.yaml delete mode 100644 .github/workflows/replay_bloc.yaml diff --git a/.github/actions/flutter_package/action.yaml b/.github/actions/flutter_package/action.yaml new file mode 100644 index 00000000000..fc3480486af --- /dev/null +++ b/.github/actions/flutter_package/action.yaml @@ -0,0 +1,104 @@ +name: Flutter Package Workflow +description: Build and test a Flutter package. + +inputs: + codecov_token: + required: true + description: The Codecov token used to upload coverage + concurrency: + required: false + default: "4" + description: The value of the concurrency flag (-j) used when running tests + coverage_excludes: + required: false + default: "" + description: Globs to exclude from coverage + working_directory: + required: false + default: "." + description: The working directory for this workflow + min_coverage: + required: false + default: "100" + description: The minimum coverage percentage value + analyze_directories: + required: false + default: "lib test" + description: Directories to analyze + report_on: + required: false + default: "lib" + description: Directories to report on when collecting coverage + platform: + required: false + default: "vm" + description: Platform to use when running tests + +runs: + using: "composite" + steps: + - name: ๐Ÿฆ Setup Flutter + uses: subosito/flutter-action@v2 + + - name: ๐Ÿ“ฆ Install Dependencies + working-directory: ${{ inputs.working_directory }} + shell: ${{ inputs.shell }} + run: flutter pub get + + - name: โœจ Format + working-directory: ${{ inputs.working_directory }} + shell: ${{ inputs.shell }} + run: dart format --set-exit-if-changed . + + - name: ๐Ÿ” Analyze + working-directory: ${{ inputs.working_directory }} + shell: ${{ inputs.shell }} + run: dart analyze --fatal-warnings ${{inputs.analyze_directories}} + + - name: ๐Ÿงช Test + working-directory: ${{ inputs.working_directory }} + shell: ${{ inputs.shell }} + run: flutter test --coverage + + - name: Exclude Generated Code from Coverage + if: ${{ inputs.coverage_excludes != '' }} + working-directory: ${{ inputs.working_directory }} + shell: ${{ inputs.shell }} + run: | + mv coverage/lcov.info coverage/lcov.info.bak + sudo apt-get -y install lcov + lcov --remove coverage/lcov.info.bak "${{inputs.coverage_excludes}}" -o coverage/lcov.info + + - name: ๐Ÿ“ฆ Detect Package Name + env: + PACKAGE_PATH: ${{ inputs.working_directory}} + id: package + shell: ${{ inputs.shell }} + run: echo "name=${PACKAGE_PATH##*/}" >> $GITHUB_OUTPUT + + - name: โฌ†๏ธ Upload Coverage + uses: codecov/codecov-action@v3 + env: + PACKAGE_PATH: ${{ inputs.working_directory}} + with: + flags: ${{ steps.package.outputs.name }} + token: ${{ inputs.codecov_token }} + + - name: ๐Ÿ“Š Verify Coverage + uses: VeryGoodOpenSource/very_good_coverage@v2 + with: + path: ${{inputs.working_directory}}/coverage/lcov.info + exclude: ${{inputs.coverage_excludes}} + min_coverage: ${{inputs.min_coverage}} + + - name: ๐Ÿ’ฏ Verify Pub Score + working-directory: ${{ inputs.working_directory }} + shell: ${{ inputs.shell }} + run: | + dart pub global activate pana + sudo apt-get install webp + PANA=$(pana . --no-warning); PANA_SCORE=$(echo $PANA | sed -n "s/.*Points: \([0-9]*\)\/\([0-9]*\)./\1\/\2/p") + echo "score: $PANA_SCORE" + IFS='/'; read -a SCORE_ARR <<< "$PANA_SCORE"; SCORE=SCORE_ARR[0]; TOTAL=SCORE_ARR[1] + if [ -z "$1" ]; then MINIMUM_SCORE=TOTAL; else MINIMUM_SCORE=$1; fi + if (( $SCORE < $MINIMUM_SCORE )); then echo "minimum score $MINIMUM_SCORE was not met!"; exit 1; fi diff --git a/.github/workflows/flutter_bloc.yaml b/.github/workflows/flutter_bloc.yaml deleted file mode 100644 index 734f487b131..00000000000 --- a/.github/workflows/flutter_bloc.yaml +++ /dev/null @@ -1,66 +0,0 @@ -name: flutter_bloc - -on: - push: - paths: - - "packages/flutter_bloc/**" - - ".github/workflows/flutter_bloc.yaml" - - pull_request: - paths: - - "packages/flutter_bloc/**" - - ".github/workflows/flutter_bloc.yaml" - -jobs: - build: - defaults: - run: - working-directory: packages/flutter_bloc - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - uses: subosito/flutter-action@v2.10.0 - - - name: Install Dependencies - run: flutter packages get - - - name: Format - run: dart format --set-exit-if-changed . - - - name: Analyze - run: flutter analyze lib test example - - - name: Run tests - run: flutter test --no-pub --coverage --test-randomize-ordering-seed random - - - name: Check Code Coverage - uses: VeryGoodOpenSource/very_good_coverage@v2 - with: - path: packages/flutter_bloc/coverage/lcov.info - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - - pana: - defaults: - run: - working-directory: packages/flutter_bloc - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - uses: subosito/flutter-action@v2.10.0 - - - name: Install Dependencies - run: | - flutter packages get - flutter pub global activate pana - sudo apt-get install webp - - - name: Verify Pub Score - run: ../../tool/verify_pub_score.sh diff --git a/.github/workflows/hydrated_bloc.yaml b/.github/workflows/hydrated_bloc.yaml deleted file mode 100644 index f087f9ae57a..00000000000 --- a/.github/workflows/hydrated_bloc.yaml +++ /dev/null @@ -1,66 +0,0 @@ -name: hydrated_bloc - -on: - push: - paths: - - "packages/hydrated_bloc/**" - - ".github/workflows/hydrated_bloc.yaml" - - pull_request: - paths: - - "packages/hydrated_bloc/**" - - ".github/workflows/hydrated_bloc.yaml" - -jobs: - build: - defaults: - run: - working-directory: packages/hydrated_bloc - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - uses: subosito/flutter-action@v2.10.0 - - - name: Install Dependencies - run: flutter pub get - - - name: Format - run: dart format --set-exit-if-changed . - - - name: Analyze - run: flutter analyze lib test example - - - name: Run tests - run: flutter test -j 1 --no-pub --coverage --test-randomize-ordering-seed random - - - name: Check Code Coverage - uses: VeryGoodOpenSource/very_good_coverage@v2 - with: - path: packages/hydrated_bloc/coverage/lcov.info - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - - pana: - defaults: - run: - working-directory: packages/hydrated_bloc - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - uses: subosito/flutter-action@v2.10.0 - - - name: Install Dependencies - run: | - flutter packages get - flutter pub global activate pana - sudo apt-get install webp - - - name: Verify Pub Score - run: ../../tool/verify_pub_score.sh 110 diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 75b6ceaa111..0be78c7832d 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -54,11 +54,33 @@ jobs: - ./.github/actions/dart_package/action.yaml - packages/bloc/** + - uses: dorny/paths-filter@v2 + name: Build Detection + id: needs_flutter_package_checks + with: + filters: | + flutter_bloc: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/dart_package/action.yaml + - packages/flutter_bloc/** + replay_bloc: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/dart_package/action.yaml + - packages/replay_bloc/** + hydrated_bloc: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/dart_package/action.yaml + - packages/hydrated_bloc/** + dart_package_checks: needs: changes if: ${{ needs.changes.outputs.needs_dart_package_checks != '[]' }} strategy: + fail-fast: false matrix: package: ${{ fromJSON(needs.changes.outputs.needs_dart_package_checks) }} @@ -77,8 +99,32 @@ jobs: working_directory: packages/${{ matrix.package }} min_coverage: 100 + flutter_package_checks: + needs: changes + if: ${{ needs.changes.outputs.needs_flutter_package_checks != '[]' }} + + strategy: + fail-fast: false + matrix: + package: ${{ fromJSON(needs.changes.outputs.needs_flutter_package_checks) }} + + runs-on: ubuntu-latest + + name: ๐Ÿฆ ${{ matrix.package }} + + steps: + - name: ๐Ÿ“š Git Checkout + uses: actions/checkout@v3 + + - name: ๐ŸŽฏ Build ${{ matrix.package }} + uses: ./.github/actions/flutter_package + with: + codecov_token: ${{ secrets.CODECOV_TOKEN }} + working_directory: packages/${{ matrix.package }} + min_coverage: 100 + ci: - needs: [semantic_pull_request, dart_package_checks] + needs: [semantic_pull_request, dart_package_checks, flutter_package_checks] if: ${{ always() }} runs-on: ubuntu-latest diff --git a/.github/workflows/replay_bloc.yaml b/.github/workflows/replay_bloc.yaml deleted file mode 100644 index db0f07a370c..00000000000 --- a/.github/workflows/replay_bloc.yaml +++ /dev/null @@ -1,66 +0,0 @@ -name: replay_bloc - -on: - push: - paths: - - "packages/replay_bloc/**" - - ".github/workflows/replay_bloc.yaml" - - pull_request: - paths: - - "packages/replay_bloc/**" - - ".github/workflows/replay_bloc.yaml" - -jobs: - build: - defaults: - run: - working-directory: packages/replay_bloc - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - uses: subosito/flutter-action@v2.10.0 - - - name: Install Dependencies - run: flutter pub get - - - name: Format - run: dart format --set-exit-if-changed . - - - name: Analyze - run: flutter analyze lib test example - - - name: Run tests - run: flutter test -j 1 --no-pub --coverage --test-randomize-ordering-seed random - - - name: Check Code Coverage - uses: VeryGoodOpenSource/very_good_coverage@v2 - with: - path: packages/replay_bloc/coverage/lcov.info - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - - pana: - defaults: - run: - working-directory: packages/replay_bloc - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - uses: subosito/flutter-action@v2.10.0 - - - name: Install Dependencies - run: | - flutter packages get - flutter pub global activate pana - sudo apt-get install webp - - - name: Verify Pub Score - run: ../../tool/verify_pub_score.sh From 6799802ffc427c3246b545cc95d8e7552393bcbd Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Sat, 9 Dec 2023 16:06:19 -0600 Subject: [PATCH 08/14] fix --- .github/workflows/main.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 0be78c7832d..035e1c0bddb 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -21,6 +21,7 @@ jobs: outputs: needs_dart_package_checks: ${{ steps.needs_dart_package_checks.outputs.changes }} + needs_flutter_package_checks: ${{ steps.needs_flutter_package_checks.outputs.changes }} name: ๐Ÿ‘€ Detect Changes @@ -29,7 +30,7 @@ jobs: uses: actions/checkout@v3 - uses: dorny/paths-filter@v2 - name: Build Detection + name: Dart Package Detection id: needs_dart_package_checks with: filters: | @@ -55,7 +56,7 @@ jobs: - packages/bloc/** - uses: dorny/paths-filter@v2 - name: Build Detection + name: Flutter Package Detection id: needs_flutter_package_checks with: filters: | From 4e51b0b8c68d473fbcbf93b7f6e7b31f5434a9ec Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Sat, 9 Dec 2023 16:19:02 -0600 Subject: [PATCH 09/14] add examples --- .github/actions/flutter_package/action.yaml | 19 +++- .github/workflows/main.yaml | 115 +++++++++++++++++++- 2 files changed, 128 insertions(+), 6 deletions(-) diff --git a/.github/actions/flutter_package/action.yaml b/.github/actions/flutter_package/action.yaml index fc3480486af..1a2426eb2c3 100644 --- a/.github/actions/flutter_package/action.yaml +++ b/.github/actions/flutter_package/action.yaml @@ -5,6 +5,14 @@ inputs: codecov_token: required: true description: The Codecov token used to upload coverage + collect_coverage: + required: false + default: "true" + description: Whether to collect code coverage + collect_score: + required: false + default: "true" + description: Whether to collect the pana score concurrency: required: false default: "4" @@ -58,10 +66,13 @@ runs: - name: ๐Ÿงช Test working-directory: ${{ inputs.working_directory }} shell: ${{ inputs.shell }} - run: flutter test --coverage + run: | + if [ -d "test" ]; then + flutter test --no-pub --test-randomize-ordering-seed random --coverage + fi - name: Exclude Generated Code from Coverage - if: ${{ inputs.coverage_excludes != '' }} + if: ${{ inputs.collect_coverage == 'true' && inputs.coverage_excludes != '' }} working-directory: ${{ inputs.working_directory }} shell: ${{ inputs.shell }} run: | @@ -70,6 +81,7 @@ runs: lcov --remove coverage/lcov.info.bak "${{inputs.coverage_excludes}}" -o coverage/lcov.info - name: ๐Ÿ“ฆ Detect Package Name + if: inputs.collect_coverage == 'true' env: PACKAGE_PATH: ${{ inputs.working_directory}} id: package @@ -77,6 +89,7 @@ runs: run: echo "name=${PACKAGE_PATH##*/}" >> $GITHUB_OUTPUT - name: โฌ†๏ธ Upload Coverage + if: inputs.collect_coverage == 'true' uses: codecov/codecov-action@v3 env: PACKAGE_PATH: ${{ inputs.working_directory}} @@ -85,6 +98,7 @@ runs: token: ${{ inputs.codecov_token }} - name: ๐Ÿ“Š Verify Coverage + if: inputs.collect_coverage == 'true' uses: VeryGoodOpenSource/very_good_coverage@v2 with: path: ${{inputs.working_directory}}/coverage/lcov.info @@ -92,6 +106,7 @@ runs: min_coverage: ${{inputs.min_coverage}} - name: ๐Ÿ’ฏ Verify Pub Score + if: inputs.collect_score == 'true' working-directory: ${{ inputs.working_directory }} shell: ${{ inputs.shell }} run: | diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 035e1c0bddb..3e6e485b602 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -22,6 +22,7 @@ jobs: outputs: needs_dart_package_checks: ${{ steps.needs_dart_package_checks.outputs.changes }} needs_flutter_package_checks: ${{ steps.needs_flutter_package_checks.outputs.changes }} + needs_example_checks: ${{ steps.needs_example_checks.outputs.changes }} name: ๐Ÿ‘€ Detect Changes @@ -63,19 +64,95 @@ jobs: flutter_bloc: - ./.github/codecov.yml - ./.github/workflows/main.yaml - - ./.github/actions/dart_package/action.yaml + - ./.github/actions/flutter_package/action.yaml - packages/flutter_bloc/** replay_bloc: - ./.github/codecov.yml - ./.github/workflows/main.yaml - - ./.github/actions/dart_package/action.yaml + - ./.github/actions/flutter_package/action.yaml - packages/replay_bloc/** hydrated_bloc: - ./.github/codecov.yml - ./.github/workflows/main.yaml - - ./.github/actions/dart_package/action.yaml + - ./.github/actions/flutter_package/action.yaml - packages/hydrated_bloc/** + - uses: dorny/paths-filter@v2 + name: Example Detection + id: needs_example_checks + with: + filters: | + flutter_bloc_with_stream: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/flutter_package/action.yaml + - examples/flutter_bloc_with_stream/** + flutter_complex_list: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/flutter_package/action.yaml + - examples/flutter_complex_list/** + flutter_counter: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/flutter_package/action.yaml + - examples/flutter_counter/** + flutter_dynamic_form: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/flutter_package/action.yaml + - examples/flutter_dynamic_form/** + flutter_firebase_login: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/flutter_package/action.yaml + - examples/flutter_firebase_login/** + flutter_form_validation: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/flutter_package/action.yaml + - examples/flutter_form_validation/** + flutter_infinite_list: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/flutter_package/action.yaml + - examples/flutter_infinite_list/** + flutter_login: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/flutter_package/action.yaml + - examples/flutter_login/** + flutter_shopping_cart: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/flutter_package/action.yaml + - examples/flutter_shopping_cart/** + flutter_timer: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/flutter_package/action.yaml + - examples/flutter_timer/** + flutter_todos: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/flutter_package/action.yaml + - examples/flutter_todos/** + flutter_weather: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/flutter_package/action.yaml + - examples/flutter_weather/** + flutter_wizard: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/flutter_package/action.yaml + - examples/flutter_wizard/** + github_search/flutter_github_search: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/flutter_package/action.yaml + - examples/github_search/flutter_github_search/** + dart_package_checks: needs: changes if: ${{ needs.changes.outputs.needs_dart_package_checks != '[]' }} @@ -124,8 +201,38 @@ jobs: working_directory: packages/${{ matrix.package }} min_coverage: 100 + example_checks: + needs: changes + if: ${{ needs.changes.outputs.needs_example_checks != '[]' }} + + strategy: + fail-fast: false + matrix: + example: ${{ fromJSON(needs.changes.outputs.needs_example_checks) }} + + runs-on: ubuntu-latest + + name: ๐Ÿง‘โ€๐ŸŽ“ ${{ matrix.example }} + + steps: + - name: ๐Ÿ“š Git Checkout + uses: actions/checkout@v3 + + - name: ๐ŸŽฏ Build ${{ matrix.example }} + uses: ./.github/actions/flutter_package + with: + collect_coverage: false + collect_score: false + working_directory: examples/${{ matrix.example }} + ci: - needs: [semantic_pull_request, dart_package_checks, flutter_package_checks] + needs: + [ + semantic_pull_request, + dart_package_checks, + flutter_package_checks, + example_checks, + ] if: ${{ always() }} runs-on: ubuntu-latest From c6052ac1e78138f1499151ed78045d023150b3b4 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Sat, 9 Dec 2023 16:22:52 -0600 Subject: [PATCH 10/14] fix example analyze directories --- .github/workflows/flutter_examples.yaml | 92 ------------------------- .github/workflows/main.yaml | 1 + 2 files changed, 1 insertion(+), 92 deletions(-) delete mode 100644 .github/workflows/flutter_examples.yaml diff --git a/.github/workflows/flutter_examples.yaml b/.github/workflows/flutter_examples.yaml deleted file mode 100644 index 57c240a9200..00000000000 --- a/.github/workflows/flutter_examples.yaml +++ /dev/null @@ -1,92 +0,0 @@ -name: flutter_examples - -on: - push: - paths: - - ".github/workflows/flutter_examples.yaml" - - "packages/flutter_bloc/**" - - "examples/flutter_bloc_with_stream/**" - - "examples/flutter_complex_list/**" - - "examples/flutter_counter/**" - - "examples/flutter_dynamic_form/**" - - "examples/flutter_firebase_login/**" - - "examples/flutter_form_validation/**" - - "examples/flutter_infinite_list/**" - - "examples/flutter_login/**" - - "examples/flutter_shopping_cart/**" - - "examples/flutter_timer/**" - - "examples/flutter_todos/**" - - "examples/flutter_weather/**" - - "examples/flutter_wizard/**" - - "examples/github_search/flutter_github_search/**" - - pull_request: - paths: - - ".github/workflows/flutter_examples.yaml" - - "packages/flutter_bloc/**" - - "examples/flutter_bloc_with_stream/**" - - "examples/flutter_complex_list/**" - - "examples/flutter_counter/**" - - "examples/flutter_dynamic_form/**" - - "examples/flutter_firebase_login/**" - - "examples/flutter_form_validation/**" - - "examples/flutter_infinite_list/**" - - "examples/flutter_login/**" - - "examples/flutter_shopping_cart/**" - - "examples/flutter_timer/**" - - "examples/flutter_todos/**" - - "examples/flutter_weather/**" - - "examples/flutter_wizard/**" - - "examples/github_search/flutter_github_search/**" - -jobs: - examples: - strategy: - matrix: - folder: - [ - "packages/flutter_bloc/example", - "examples/flutter_bloc_with_stream", - "examples/flutter_complex_list", - "examples/flutter_counter", - "examples/flutter_dynamic_form", - "examples/flutter_firebase_login", - "examples/flutter_form_validation", - "examples/flutter_infinite_list", - "examples/flutter_login", - "examples/flutter_shopping_cart", - "examples/flutter_timer", - "examples/flutter_todos", - "examples/flutter_todos/packages/local_storage_todos_api", - "examples/flutter_todos/packages/todos_api", - "examples/flutter_todos/packages/todos_repository", - "examples/flutter_weather", - "examples/flutter_wizard", - "examples/github_search/flutter_github_search", - ] - fail-fast: false - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: subosito/flutter-action@v2.10.0 - - name: Install Dependencies - working-directory: ${{ matrix.folder }} - run: flutter packages get - - name: Format - working-directory: ${{ matrix.folder }} - run: dart format --set-exit-if-changed lib - - name: Analyze - working-directory: ${{ matrix.folder }} - run: flutter analyze lib - - name: Run tests - working-directory: ${{ matrix.folder }} - run: | - if [ -d "test" ]; then - flutter test --no-pub --test-randomize-ordering-seed random - fi - build: - needs: [examples] - runs-on: ubuntu-latest - steps: - - name: noop - run: echo 'noop' diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 3e6e485b602..7e212739a31 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -221,6 +221,7 @@ jobs: - name: ๐ŸŽฏ Build ${{ matrix.example }} uses: ./.github/actions/flutter_package with: + analyze_directories: lib collect_coverage: false collect_score: false working_directory: examples/${{ matrix.example }} From 642810395d944f1333398b7e06422fc89cdfe9d3 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Sat, 9 Dec 2023 16:23:31 -0600 Subject: [PATCH 11/14] chore: bloc_tools pana score --- packages/bloc_tools/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/bloc_tools/pubspec.yaml b/packages/bloc_tools/pubspec.yaml index adbdcae8e4b..80def24be29 100644 --- a/packages/bloc_tools/pubspec.yaml +++ b/packages/bloc_tools/pubspec.yaml @@ -14,7 +14,7 @@ dependencies: args: ^2.1.0 io: ^1.0.0 mason: ^0.1.0-dev.33 - pub_updater: ^0.3.0 + pub_updater: ^0.4.0 dev_dependencies: build_runner: ^2.0.0 From 5248753a4f9c9e2bd22f6e0e7ec186e7e2ff7bd6 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Sat, 9 Dec 2023 16:34:47 -0600 Subject: [PATCH 12/14] add angular_dart --- .github/DOCS_ISSUE_TEMPLATE.md | 15 ---- .../actions/angular_dart_package/action.yaml | 81 +++++++++++++++++++ .github/workflows/angular_bloc.yaml | 70 ---------------- .github/workflows/angular_dart_examples.yaml | 70 ---------------- .github/workflows/docs.yaml | 21 ----- .github/workflows/main.yaml | 57 +++++++++++-- 6 files changed, 132 insertions(+), 182 deletions(-) delete mode 100644 .github/DOCS_ISSUE_TEMPLATE.md create mode 100644 .github/actions/angular_dart_package/action.yaml delete mode 100644 .github/workflows/angular_bloc.yaml delete mode 100644 .github/workflows/angular_dart_examples.yaml delete mode 100644 .github/workflows/docs.yaml diff --git a/.github/DOCS_ISSUE_TEMPLATE.md b/.github/DOCS_ISSUE_TEMPLATE.md deleted file mode 100644 index 19d8cde3172..00000000000 --- a/.github/DOCS_ISSUE_TEMPLATE.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "[Translations] Update docs" -labels: documentation, translation ---- -Update Translations to include changes from {{ sha }}. - -- [ ] az (@KenanYusubov) -- [ ] cs -- [ ] es (@KingDarBoja or @Classy-Bear) -- [ ] fr (@sachaarbonel or @StefanYYC) -- [ ] jp (@dshukertjr) -- [ ] ko-kr (@zoomKoding) -- [ ] pt-br (@rodrigobastosv or @alisson-suzigan) -- [ ] ru (@basilex) -- [ ] zh-cn (@jakecastelli) diff --git a/.github/actions/angular_dart_package/action.yaml b/.github/actions/angular_dart_package/action.yaml new file mode 100644 index 00000000000..2ffa5314a60 --- /dev/null +++ b/.github/actions/angular_dart_package/action.yaml @@ -0,0 +1,81 @@ +name: Angular Dart Package Workflow +description: Build and test Angular Dart packages. + +inputs: + codecov_token: + required: true + description: The Codecov token used to upload coverage + concurrency: + required: false + default: "4" + description: The value of the concurrency flag (-j) used when running tests + coverage_excludes: + required: false + default: "" + description: Globs to exclude from coverage + dart_sdk: + required: false + default: "stable" + description: "The dart sdk version to use" + working_directory: + required: false + default: "." + description: The working directory for this workflow + min_coverage: + required: false + default: "100" + description: The minimum coverage percentage value + min_score: + required: false + default: "120" + description: The minimum pana score value + analyze_directories: + required: false + default: "lib test" + description: Directories to analyze + report_on: + required: false + default: "lib" + description: Directories to report on when collecting coverage + platform: + required: false + default: "vm" + description: Platform to use when running tests + +runs: + using: "composite" + steps: + - name: ๐ŸŽฏ Setup Dart + uses: dart-lang/setup-dart@v1 + with: + sdk: ${{inputs.dart_sdk}} + + - name: ๐Ÿ“ฆ Install Dependencies + working-directory: ${{ inputs.working_directory }} + shell: ${{ inputs.shell }} + run: dart pub get + + - name: ๐Ÿ› ๏ธ Build + working-directory: ${{ inputs.working_directory }} + shell: ${{ inputs.shell }} + run: | + dart pub global activate webdev + webdev build + + - name: โœจ Format + working-directory: ${{ inputs.working_directory }} + shell: ${{ inputs.shell }} + run: dart format --set-exit-if-changed . + + - name: ๐Ÿ” Analyze + working-directory: ${{ inputs.working_directory }} + shell: ${{ inputs.shell }} + run: dart analyze --fatal-warnings ${{inputs.analyze_directories}} + + - name: ๐Ÿงช Test + working-directory: ${{ inputs.working_directory }} + shell: ${{ inputs.shell }} + run: | + if [ -d "test" ]; then + dart run build_runner test --fail-on-severe + fi diff --git a/.github/workflows/angular_bloc.yaml b/.github/workflows/angular_bloc.yaml deleted file mode 100644 index 43a58e4f364..00000000000 --- a/.github/workflows/angular_bloc.yaml +++ /dev/null @@ -1,70 +0,0 @@ -name: angular_bloc - -on: - push: - paths: - - "packages/angular_bloc/**" - - ".github/workflows/angular_bloc.yaml" - - pull_request: - paths: - - "packages/angular_bloc/**" - - ".github/workflows/angular_bloc.yaml" - -jobs: - build: - defaults: - run: - working-directory: packages/angular_bloc - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - uses: dart-lang/setup-dart@v1 - with: - sdk: 3.0.0 - - - name: Install Dependencies - run: dart pub get - - - name: Format - run: dart format --set-exit-if-changed . - - - name: Analyze - run: dart analyze --fatal-infos --fatal-warnings . - - - name: Run Tests - run: | - dart pub global activate coverage 1.2.0 - dart test --coverage=coverage && dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib - - - name: Check Code Coverage - uses: VeryGoodOpenSource/very_good_coverage@v2 - with: - path: packages/angular_bloc/coverage/lcov.info - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v3 - with: - token: ${{ secrets.CODECOV_TOKEN }} - - pana: - defaults: - run: - working-directory: packages/angular_bloc - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - uses: subosito/flutter-action@v2.10.0 - - - name: Install Dependencies - run: | - flutter packages get - flutter pub global activate pana - sudo apt-get install webp - - - name: Verify Pub Score - run: ../../tool/verify_pub_score.sh 110 diff --git a/.github/workflows/angular_dart_examples.yaml b/.github/workflows/angular_dart_examples.yaml deleted file mode 100644 index 3e9ec6582b0..00000000000 --- a/.github/workflows/angular_dart_examples.yaml +++ /dev/null @@ -1,70 +0,0 @@ -name: angular_dart_examples - -on: - push: - paths: - - ".github/workflows/angular_dart_examples.yaml" - - "packages/angular_bloc/**" - - "examples/angular_counter/**" - - "examples/github_search/common_github_search/**" - - "examples/github_search/angular_github_search/**" - - pull_request: - paths: - - ".github/workflows/angular_dart_examples.yaml" - - "packages/angular_bloc/**" - - "examples/angular_counter/**" - - "examples/github_search/common_github_search/**" - - "examples/github_search/angular_github_search/**" - -jobs: - examples: - strategy: - matrix: - folder: - [ - "examples/angular_counter", - "examples/github_search/common_github_search", - "examples/github_search/angular_github_search", - ] - fail-fast: false - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - uses: dart-lang/setup-dart@v1 - with: - sdk: 3.0.0 - - - name: Install Dependencies - working-directory: ${{ matrix.folder }} - run: dart pub get - - - name: Install webdev - if: matrix.folder != 'examples/github_search/common_github_search' - working-directory: ${{ matrix.folder }} - run: | - dart pub global activate webdev - webdev build - - - name: Format - working-directory: ${{ matrix.folder }} - run: dart format --set-exit-if-changed . - - - name: Analyze - working-directory: ${{ matrix.folder }} - run: dart analyze --fatal-infos --fatal-warnings . - - - name: Run tests - working-directory: ${{ matrix.folder }} - run: | - if [ -d "test" ]; then - dart run build_runner test --fail-on-severe - fi - - build: - needs: [examples] - runs-on: ubuntu-latest - steps: - - name: noop - run: echo 'noop' diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml deleted file mode 100644 index e8d1cf661bc..00000000000 --- a/.github/workflows/docs.yaml +++ /dev/null @@ -1,21 +0,0 @@ -name: docs - -on: - push: - branches: - - master - paths: - - '.github/workflows/docs.yaml' - - 'README.md' - - 'docs/*' - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: JasonEtco/create-an-issue@v2 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - filename: .github/DOCS_ISSUE_TEMPLATE.md diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 7e212739a31..9161e961db3 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -20,9 +20,10 @@ jobs: if: github.event.pull_request.draft == false outputs: + needs_angular_dart_example_checks: ${{ steps.needs_angular_dart_example_checks.outputs.changes }} needs_dart_package_checks: ${{ steps.needs_dart_package_checks.outputs.changes }} needs_flutter_package_checks: ${{ steps.needs_flutter_package_checks.outputs.changes }} - needs_example_checks: ${{ steps.needs_example_checks.outputs.changes }} + needs_flutter_example_checks: ${{ steps.needs_flutter_example_checks.outputs.changes }} name: ๐Ÿ‘€ Detect Changes @@ -30,11 +31,32 @@ jobs: - name: ๐Ÿ“š Git Checkout uses: actions/checkout@v3 + - uses: dorny/paths-filter@v2 + name: Angular Dart Package Detection + id: needs_angular_dart_example_checks + with: + filters: | + angular_counter: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/angular_dart_package/action.yaml + - examples/angular_counter/** + github_search/angular_github_search: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/dart_package/action.yaml + - examples/github_search/angular_github_search/** + - uses: dorny/paths-filter@v2 name: Dart Package Detection id: needs_dart_package_checks with: filters: | + angular_bloc: + - ./.github/codecov.yml + - ./.github/workflows/main.yaml + - ./.github/actions/dart_package/action.yaml + - packages/angular_bloc/** bloc_concurrency: - ./.github/codecov.yml - ./.github/workflows/main.yaml @@ -79,7 +101,7 @@ jobs: - uses: dorny/paths-filter@v2 name: Example Detection - id: needs_example_checks + id: needs_flutter_example_checks with: filters: | flutter_bloc_with_stream: @@ -201,14 +223,36 @@ jobs: working_directory: packages/${{ matrix.package }} min_coverage: 100 - example_checks: + angular_dart_example_checks: + needs: changes + if: ${{ needs.changes.outputs.needs_angular_dart_example_checks != '[]' }} + + strategy: + fail-fast: false + matrix: + example: ${{ fromJSON(needs.changes.outputs.needs_angular_dart_example_checks) }} + + runs-on: ubuntu-latest + + name: ๐Ÿ›ก๏ธ ${{ matrix.example }} + + steps: + - name: ๐Ÿ“š Git Checkout + uses: actions/checkout@v3 + + - name: ๐ŸŽฏ Build ${{ matrix.example }} + uses: ./.github/actions/angular_dart_package + with: + working_directory: examples/${{ matrix.example }} + + flutter_example_checks: needs: changes - if: ${{ needs.changes.outputs.needs_example_checks != '[]' }} + if: ${{ needs.changes.outputs.needs_flutter_example_checks != '[]' }} strategy: fail-fast: false matrix: - example: ${{ fromJSON(needs.changes.outputs.needs_example_checks) }} + example: ${{ fromJSON(needs.changes.outputs.needs_flutter_example_checks) }} runs-on: ubuntu-latest @@ -232,7 +276,8 @@ jobs: semantic_pull_request, dart_package_checks, flutter_package_checks, - example_checks, + angular_dart_example_checks, + flutter_example_checks, ] if: ${{ always() }} From d0a50aa3f83f015aed8d3146b6cdb193e5ab67c4 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Sat, 9 Dec 2023 16:41:12 -0600 Subject: [PATCH 13/14] fix angular_dart --- .github/actions/dart_package/action.yaml | 6 +----- .github/workflows/main.yaml | 1 + 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/actions/dart_package/action.yaml b/.github/actions/dart_package/action.yaml index 94f000d2cb1..cd590030950 100644 --- a/.github/actions/dart_package/action.yaml +++ b/.github/actions/dart_package/action.yaml @@ -37,10 +37,6 @@ inputs: required: false default: "lib" description: Directories to report on when collecting coverage - platform: - required: false - default: "vm" - description: Platform to use when running tests runs: using: "composite" @@ -70,7 +66,7 @@ runs: shell: ${{ inputs.shell }} run: | dart pub global activate coverage - dart test -j ${{inputs.concurrency}} --coverage=coverage --platform=${{inputs.platform}} && dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=${{inputs.report_on}} --check-ignore + dart test -j ${{inputs.concurrency}} --coverage=coverage && dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=${{inputs.report_on}} --check-ignore - name: ๐Ÿ“ฆ Detect Package Name env: diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 9161e961db3..b325304f778 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -243,6 +243,7 @@ jobs: - name: ๐ŸŽฏ Build ${{ matrix.example }} uses: ./.github/actions/angular_dart_package with: + analyze_directories: lib working_directory: examples/${{ matrix.example }} flutter_example_checks: From abb92e5cd5e28476f8d48f89c92506b75956fb58 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Sat, 9 Dec 2023 16:44:19 -0600 Subject: [PATCH 14/14] rename to build --- .github/workflows/main.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index b325304f778..bb694b1a674 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -1,4 +1,4 @@ -name: ci +name: build concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -271,7 +271,7 @@ jobs: collect_score: false working_directory: examples/${{ matrix.example }} - ci: + build: needs: [ semantic_pull_request,