Skip to content

Commit

Permalink
Merge 8ff5d8c into ci-optimization-deps_no_smithy
Browse files Browse the repository at this point in the history
  • Loading branch information
rmconsole7-wk authored Apr 2, 2024
2 parents ef42ae7 + 8ff5d8c commit 17d9c6b
Show file tree
Hide file tree
Showing 10 changed files with 450 additions and 147 deletions.
82 changes: 82 additions & 0 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: Unit test coverage

on:
workflow_call:
inputs:
sdk:
required: true
type: string
previous_commit_sha:
required: true
type: string
use_cached_coverage:
required: true
type: boolean

jobs:
test-ddc:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dart-lang/setup-dart@v1
with:
sdk: ${{ inputs.sdk }}

- name: Run Tests (DDC + coverage)
if: ${{ !inputs.use_cached_coverage }}
run: dart run dart_dev test --test-args="--coverage=reports/coverage" -P dartdevc

- name: Upload New Coverage Data
if: ${{ !inputs.use_cached_coverage }}
uses: actions/upload-artifact@v4
with:
name: coverage
path: reports/coverage

generate-coverage:
runs-on: ubuntu-latest
needs: [ test-ddc ]
steps:
- uses: actions/checkout@v4
- uses: dart-lang/setup-dart@v1
with:
sdk: ${{ inputs.sdk }}
- name: Download Package Config
uses: actions/download-artifact@v4
with:
name: package_config@${{ inputs.sdk }}
path: .dart_tool

- name: Download New Coverage Data
if: ${{ !inputs.use_cached_coverage }}
uses: actions/download-artifact@v4
with:
name: coverage
path: reports/coverage

- name: Download Cached Coverage Data
if: ${{ inputs.use_cached_coverage }}
uses: actions/cache/restore@v4
with:
path: |
reports/coverage
key: coverage@${{ inputs.previous_commit_sha }}

- name: Activate Coverage Package
run: dart pub global activate coverage

- name: Format Coverage
run: dart pub global run coverage:format_coverage --packages=.dart_tool/package_config.json --report-on=lib --lcov -o reports/coverage/lcov.info -i reports/coverage

- name: Cache Coverage Data
uses: actions/cache/save@v4
with:
path: |
reports/coverage
key: coverage@${{ github.sha }}

- name: Report Coverage
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: reports/coverage/lcov.info
166 changes: 20 additions & 146 deletions .github/workflows/dart_ci.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Dart CI
name: CI

on:
push:
Expand All @@ -10,158 +10,32 @@ on:
- '**'

jobs:
build:
runs-on: ubuntu-latest
source-check:
uses: ./.github/workflows/source-check.yml
lib:
needs: [ source-check ]
strategy:
fail-fast: false
matrix:
# Can't run on `dev` (Dart 3) until we're fully null-safe.
sdk: [ 2.18.7, 2.19.6 ]
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v0.2
with:
sdk: ${{ matrix.sdk }}

- name: Print Dart SDK version
run: dart --version

- id: install
name: Install dependencies
run: dart pub get

- name: Validate dependencies
run: dart run dependency_validator
if: always() && steps.install.outcome == 'success'

- name: Verify formatting
run: dart run dart_dev format --check
# Only run on one sdk version in case there are conflicts
if: always() && matrix.sdk != '2.18.7' && steps.install.outcome == 'success'

# Analyze before generated files are created to verify that component boilerplate analysis is "clean" without the need for building
- name: Analyze example source (pre-build)
run: |
# Analyze lib to ensure public APIs don't depend on build-to-cache files,
# which could cause analysis issues for consumers who haven't run a build yet.
dart analyze lib
dart analyze example/boilerplate_versions
if: always() && steps.install.outcome == 'success'

- id: build
timeout-minutes: 6
name: Build generated files / precompile DDC assets
run: |
dart run build_runner build --delete-conflicting-outputs -o ddc_precompiled
if: always() && steps.install.outcome == 'success'

- name: Verify that generated files are up-to-date
run: |
if [ ${{ matrix.sdk }} = '2.18.7' ]; then
git diff --exit-code
else
# Don't check these generated files for other SDKs, since they may generate differently
# due to different resolved dependencies.
git diff --exit-code -- ":(exclude)test/mockito.mocks.dart" ":(exclude)test/over_react/component_declaration/redux_component_test/test_reducer.g.dart"
fi
if: always() && steps.install.outcome == 'success' && steps.install.build == 'success'

# Analyze again after generated files are created to verify that those generated classes don't cause analysis errors
- name: Analyze project source (post-build)
run: dart analyze
if: always() && steps.install.outcome == 'success' && steps.build.outcome == 'success'

- name: Run tests (VM)
# Can't use build_runner (which dart_dev uses if you depend on it) to run VM tests, since we get the error:
# Unable to spawn isolate: /…/build_runner_testRU6M77/.packages: Error: Problem in packages configuration file: Unexpected character
run: dart test -P vm
if: always() && steps.install.outcome == 'success' && steps.build.outcome == 'success'

- name: Run tests (DDC)
run: dart test --precompiled ddc_precompiled -P dartdevc
if: always() && steps.install.outcome == 'success' && steps.build.outcome == 'success'

- name: Run tests (dart2js)
run: dart run dart_dev test --build-args="-r" -P dart2js
if: always() && steps.install.outcome == 'success' && steps.build.outcome == 'success'

validate_analyzer:
runs-on: ubuntu-latest
uses: ./.github/workflows/lib_ci.yml
with:
sdk: ${{ matrix.sdk }}
# Only generate coverage for the latest SDK we support
gen_coverage: ${{ matrix.sdk == '2.19.6' }}
run_dart_checks: ${{ needs.source-check.outputs.run_dart_checks == 'true' }}
is_tag_build: ${{ needs.source-check.outputs.is_tag_build == 'true' }}
previous_commit_sha: ${{ needs.source-check.outputs.previous_commit_sha }}

analyzer-plugin:
needs: [ source-check ]
if: ${{ needs.source-check.outputs.is_tag_build == 'false' && needs.source-check.outputs.run_dart_checks == 'true' }}
strategy:
fail-fast: false
matrix:
# Can't run on `dev` (Dart 3) until we're fully null-safe.
sdk: [ 2.18.7, 2.19.6 ]
analyzer:
# We only have one version currently, but we'll leave this CI step in place
# for the next time we need to support multiple analyzer versions.
- ^5.1.0
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v0.2
with:
sdk: ${{ matrix.sdk }}

- name: Print Dart SDK version
run: dart --version

- name: Update analyzer constraint to ${{ matrix.analyzer }} and validate `dart pub get` can resolve
id: resolve
run: |
dart tool/set_analyzer_constraint.dart "${{ matrix.analyzer }}"
# Show the updated version constraint
git diff pubspec.yaml
dart pub get

- name: Analyze package source
run: dart analyze .

- name: Verify builder runs without errors
run: dart run build_runner build --build-filter='**.dart' --delete-conflicting-outputs

- name: Run builder tests
run: dart test -p vm -- test/vm_tests/builder

analyzer_plugin:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./tools/analyzer_plugin
strategy:
fail-fast: false
matrix:
# Can't run on `stable` (Dart 3) until we're fully null-safe.
sdk: [ 2.19.6 ]
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v0.2
with:
sdk: ${{ matrix.sdk }}

- name: Print Dart SDK version
run: dart --version

- id: link
name: Override over_react dependency with local path
run: cd ../.. && dart pub get && dart tool/travis_link_plugin_deps.dart

- id: install
name: Install dependencies
run: dart pub get
if: always() && steps.link.outcome == 'success'

- name: Validate dependencies
run: dart run dependency_validator
if: always() && steps.install.outcome == 'success'

- name: Analyze
run: dart run dart_dev analyze
if: always() && steps.install.outcome == 'success'

- name: Verify formatting
run: dart run dart_dev format --check
if: always() && matrix.sdk == '2.7.2' && steps.install.outcome == 'success'

- name: Run tests
run: dart run dart_dev test
if: always() && steps.install.outcome == 'success'
uses: ./.github/workflows/plugin_ci.yml
with:
sdk: ${{ matrix.sdk }}
50 changes: 50 additions & 0 deletions .github/workflows/install.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Shared install / pub cache job

on:
workflow_call:
inputs:
sdk:
required: true
type: string
store_package_config:
required: false
default: false
type: boolean
store_lockfile:
required: true
type: boolean

jobs:
pub-get:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dart-lang/setup-dart@v1
with:
sdk: ${{ inputs.sdk }}

- name: Check pub cache
id: cache
uses: actions/cache@v4
with:
path: .dart_tool
key: ${{ runner.os }};${{ hashFiles('**/pubspec.yaml','**/pubspec.lock') || 'none' }}@${{ inputs.sdk }}

- id: install
name: Install dependencies
run: dart pub get

- name: Upload pubspec.lock
if: ${{ inputs.store_lockfile }}
uses: actions/upload-artifact@v4
with:
name: pubspec.lock@${{ inputs.sdk }}
path: pubspec.lock

- name: Upload Package Config
if: ${{ inputs.store_package_config }}
uses: actions/upload-artifact@v4
with:
name: package_config@${{ inputs.sdk }}
path: .dart_tool/package_config.json
retention-days: 1
Loading

0 comments on commit 17d9c6b

Please sign in to comment.