chore: release master #83
This file contains hidden or 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
name: Quality checks 👌🧪 | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
on: | |
pull_request: | |
paths-ignore: | |
- '**/*.md' | |
workflow_call: | |
workflow_dispatch: | |
jobs: | |
ci: | |
name: Dart CI Checks | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
work_dir: [ openapi-generator, openapi-generator-annotations ] | |
defaults: | |
run: | |
working-directory: ${{ matrix.work_dir }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
# - name: Start Docker compose containers | |
# if: ${{ matrix.work_dir == 'openapi-generator' }} | |
# run: docker-compose -f "docker-compose.yaml" up -d --build | |
- name: Setup Dart | |
uses: dart-lang/[email protected] | |
with: | |
sdk: stable | |
- name: Install Melos | |
run: dart pub global activate melos | |
- name: Bootstrap Melos | |
run: melos bootstrap | |
- name: Install Dependencies | |
run: dart pub get | |
- name: Run Docker Compose on Specific Package | |
run: | | |
melos exec -p openapi-generator -- docker-compose -f "docker-compose.yaml" up -d --build | |
- name: Build runner | |
run: melos exec -p openapi-generator dart run build_runner build --delete-conflicting-outputs | |
- name: Validate formatting | |
run: melos format --set-exit-if-changed | |
- name: Run analyzer | |
run: melos analyze --fatal-warnings | |
- name: Run tests | |
run: melos run test:all | |
- name: Install coverage tools | |
run: dart pub global activate coverage | |
- name: Install Coverage Tools | |
run: dart pub global activate coverage combine_coverage | |
- name: Format Coverage for Each Package | |
run: | | |
# Find each package's coverage directory and format to lcov | |
for dir in $(find . -name "coverage" -type d); do | |
$HOME/.pub-cache/bin/format_coverage \ | |
--lcov \ | |
--in=$dir \ | |
--out=$dir/coverage.lcov \ | |
--packages=$dir/../.packages \ | |
--report-on=lib | |
done | |
- name: Combine Coverage Reports | |
run: | | |
mkdir -p coverage # Create a root coverage folder if it doesn't exist | |
dart pub global run combine_coverage \ | |
--repo-path="." \ | |
--output=coverage/combined.lcov # Combines all into a single lcov file | |
- name: Upload Combined Coverage to Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
files: ./coverage/combined.lcov | |
flags: combined_coverage | |
name: Combined Code Coverage | |
fail_ci_if_error: true | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} # Required only for private repositories | |
code_coverage: | |
name: Collect and Upload Combined Coverage | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Setup Dart | |
uses: dart-lang/setup-dart@v1 | |
- name: Install Dependencies with Melos | |
run: dart pub global activate melos && melos bootstrap | |
- name: Run Tests with Coverage for All Packages | |
run: | | |
melos exec -- dart run test --coverage=coverage | |
- name: Install Coverage Tools | |
run: dart pub global activate coverage | |
- name: Format Coverage for Each Package | |
run: | | |
for dir in $(find . -name "coverage"); do | |
$HOME/.pub-cache/bin/format_coverage \ | |
--lcov \ | |
--in=$dir \ | |
--out=$dir/coverage.lcov \ | |
--packages=.packages \ | |
--report-on=lib | |
done | |
- name: Combine Coverage | |
run: | | |
dart pub global activate combine_coverage | |
dart pub global run combine_coverage --repo-path="." # Adjust path to your monorepo root | |
- name: Upload Combined Coverage to Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
files: ./coverage/combined.lcov # Adjust path if necessary | |
flags: combined_coverage | |
name: Combined Code Coverage | |
fail_ci_if_error: true | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} # Required only for private repos | |
build: | |
name: Build example project 🛠️ | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
defaults: | |
run: | |
working-directory: example | |
steps: | |
- name: Checkout ⬇️ | |
uses: actions/checkout@v3 | |
- name: Build Example Project 🛠 | |
uses: subosito/flutter-action@v2 | |
with: | |
cache: true | |
channel: 'stable' | |
- run: flutter pub get | |
- run: flutter pub run build_runner build --delete-conflicting-outputs | |
- run: flutter build apk | |
# - name: Upload artifact (Client) ⬆️💻 | |
# uses: actions/[email protected] | |
# with: | |
# name: example | |
# path: | | |
# example/build/web | |
pr_context: | |
name: Save PR context as artifact | |
if: ${{ always() && !cancelled() && github.event_name == 'pull_request' }} | |
runs-on: ubuntu-latest | |
needs: | |
# - dependency-review | |
- build | |
- ci | |
steps: | |
- name: Save PR context | |
env: | |
PR_NUMBER: ${{ github.event.number }} | |
PR_SHA: ${{ github.sha }} | |
run: | | |
echo $PR_NUMBER > PR_number | |
echo $PR_SHA > PR_sha | |
- name: Upload PR number as artifact | |
uses: actions/[email protected] | |
with: | |
name: PR_context | |
path: | | |
PR_number | |
PR_sha | |
conventional_commits: | |
name: Conventional commits check 💬 | |
if: ${{ github.event_name == 'pull_request' }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout ⬇️ | |
uses: actions/[email protected] | |
- name: Check if all commits comply with the specification | |
uses: webiny/[email protected] |