@@ -25,38 +25,111 @@ jobs:
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
40
run : 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
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
85
+ env :
86
+ CODECOV_TOKEN : ${{ secrets.CODECOV_TOKEN }} # Required only for private repositories
87
+
88
+ code_coverage :
89
+ name : Collect and Upload Combined Coverage
90
+ runs-on : ubuntu-latest
91
+ steps :
92
+ - name : Checkout code
93
+ uses : actions/checkout@v3
94
+
95
+ - name : Setup Dart
96
+ uses : dart-lang/setup-dart@v1
97
+
98
+ - name : Install Dependencies with Melos
99
+ run : dart pub global activate melos && melos bootstrap
100
+
101
+ - name : Run Tests with Coverage for All Packages
102
+ run : |
103
+ melos exec -- dart run test --coverage=coverage
104
+
105
+ - name : Install Coverage Tools
106
+ run : dart pub global activate coverage
107
+
108
+ - name : Format Coverage for Each Package
109
+ run : |
110
+ for dir in $(find . -name "coverage"); do
111
+ $HOME/.pub-cache/bin/format_coverage \
112
+ --lcov \
113
+ --in=$dir \
114
+ --out=$dir/coverage.lcov \
115
+ --packages=.packages \
116
+ --report-on=lib
117
+ done
118
+
119
+ - name : Combine Coverage
120
+ run : |
121
+ dart pub global activate combine_coverage
122
+ dart pub global run combine_coverage --repo-path="." # Adjust path to your monorepo root
123
+
124
+ - name : Upload Combined Coverage to Codecov
51
125
uses : codecov/codecov-action@v3
126
+ with :
127
+ files : ./coverage/combined.lcov # Adjust path if necessary
128
+ flags : combined_coverage
129
+ name : Combined Code Coverage
130
+ fail_ci_if_error : true
52
131
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
132
+ CODECOV_TOKEN : ${{ secrets.CODECOV_TOKEN }} # Required only for private repos
60
133
61
134
build :
62
135
name : Build example project 🛠️
0 commit comments