@@ -15,48 +15,75 @@ jobs:
15
15
ci :
16
16
name : Dart CI Checks
17
17
runs-on : ubuntu-latest
18
- strategy :
19
- fail-fast : false
20
- matrix :
21
- work_dir : [ openapi-generator, openapi-generator-annotations ]
22
- defaults :
23
- run :
24
- working-directory : ${{ matrix.work_dir }}
18
+ # strategy:
19
+ # fail-fast: false
20
+ # matrix:
21
+ # work_dir: [ openapi-generator, openapi-generator-annotations ]
22
+ # defaults:
23
+ # run:
24
+ # working-directory: ${{ matrix.work_dir }}
25
25
steps :
26
26
- name : Checkout
27
27
uses : actions/checkout@v3
28
- - name : Start Docker compose containers
29
- if : ${{ matrix.work_dir == 'openapi-generator' }}
30
- run : docker-compose -f "docker-compose.yaml" up -d --build
28
+ # - name: Start Docker compose containers
29
+ # if: ${{ matrix.work_dir == 'openapi-generator' }}
30
+ # run: docker-compose -f "docker-compose.yaml" up -d --build
31
31
- name : Setup Dart
32
32
33
33
with :
34
34
sdk : stable
35
+ - name : Install Melos
36
+ run : dart pub global activate melos
37
+ - name : Bootstrap Melos
38
+ run : melos bootstrap
35
39
- name : Install Dependencies
36
- run : dart pub get
40
+ run : melos exec -- "dart pub get"
41
+ - name : Run Docker Compose on Specific Package
42
+ run : |
43
+ melos exec -p openapi-generator -- docker-compose -f "docker-compose.yaml" up -d --build
37
44
- name : Build runner
38
- if : ${{ matrix.work_dir == 'openapi-generator' }}
39
- run : dart run build_runner build --delete-conflicting-outputs
45
+ run : melos exec -p openapi-generator dart run build_runner build --delete-conflicting-outputs
40
46
- name : Validate formatting
41
- run : dart format ./ --set-exit-if-changed
47
+ run : melos format --set-exit-if-changed
42
48
- name : Run analyzer
43
- run : dart analyze --fatal-warnings
49
+ run : melos analyze --fatal-warnings
44
50
- name : Run tests
45
- run : dart run test --coverage="coverage"
51
+ run : melos run test:all
52
+
46
53
- name : Install coverage tools
47
54
run : dart pub global activate coverage
48
- - name : format coverage
49
- run : $HOME/.pub-cache/bin/format_coverage --lcov --in=coverage --out=./coverage.lcov --package=. --report-on=lib
50
- - name : Upload coverage reports to Codecov
55
+
56
+ - name : Install Coverage Tools
57
+ run : dart pub global activate coverage combine_coverage
58
+
59
+ - name : Format Coverage for Each Package
60
+ run : |
61
+ # Find each package's coverage directory and format to lcov
62
+ for dir in $(find . -name "coverage" -type d); do
63
+ $HOME/.pub-cache/bin/format_coverage \
64
+ --lcov \
65
+ --in=$dir \
66
+ --out=$dir/coverage.lcov \
67
+ --packages=$dir/../.packages \
68
+ --report-on=lib
69
+ done
70
+
71
+ - name : Combine Coverage Reports
72
+ run : |
73
+ mkdir -p coverage # Create a root coverage folder if it doesn't exist
74
+ dart pub global run combine_coverage \
75
+ --repo-path="." \
76
+ --output=coverage/combined.lcov # Combines all into a single lcov file
77
+
78
+ - name : Upload Combined Coverage to Codecov
51
79
uses : codecov/codecov-action@v3
80
+ with :
81
+ files : ./coverage/combined.lcov
82
+ flags : combined_coverage
83
+ name : Combined Code Coverage
84
+ fail_ci_if_error : true
52
85
env :
53
- files : ./coverage.lcov
54
- verbose : true
55
- flags : ${{ matrix.work_dir }}
56
- CODECOV_TOKEN : ${{ secrets.CODECOV_TOKEN }}
57
- - name : Stop Docker Container
58
- if : ${{ matrix.work_dir == 'openapi-generator' && always() }}
59
- run : docker-compose -f "docker-compose.yaml" down
86
+ CODECOV_TOKEN : ${{ secrets.CODECOV_TOKEN }} # Required only for private repositories
60
87
61
88
build :
62
89
name : Build example project 🛠️
0 commit comments