| # Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file |
| # for details. All rights reserved. Use of this source code is governed by a |
| # BSD-style license that can be found in the LICENSE file. |
| |
| name: Dart CI |
| |
| on: |
| # Run on PRs and pushes to the default branch. |
| push: |
| branches: [ main ] |
| pull_request: |
| branches: [ main ] |
| schedule: |
| - cron: "0 0 * * 0" |
| |
| env: |
| PUB_ENVIRONMENT: bot.github |
| |
| jobs: |
| check_java_format: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v2 # v2 minimum required |
| - uses: axel-op/googlejavaformat-action@v3 |
| with: |
| args: "--set-exit-if-changed" |
| |
| analyze_jni_gen: |
| runs-on: ubuntu-latest |
| defaults: |
| run: |
| working-directory: ./pkgs/jni_gen |
| strategy: |
| fail-fast: false |
| matrix: |
| sdk: [stable] |
| steps: |
| - uses: actions/checkout@v2 |
| - uses: dart-lang/setup-dart@v1.0 |
| with: |
| sdk: ${{ matrix.sdk }} |
| - id: install |
| name: Install dependencies |
| run: dart pub get |
| - name: Check formatting |
| run: dart format --output=none --set-exit-if-changed . |
| if: always() && steps.install.outcome == 'success' |
| - name: Analyze code |
| run: dart analyze --fatal-infos |
| if: always() && steps.install.outcome == 'success' |
| |
| test_jni_gen: |
| needs: analyze_jni_gen |
| runs-on: ${{ matrix.os }} |
| defaults: |
| run: |
| working-directory: ./pkgs/jni_gen |
| strategy: |
| fail-fast: false |
| matrix: |
| # Add macos-latest and/or windows-latest if relevant for this package. |
| os: [ubuntu-latest] |
| sdk: [2.17.0, dev] |
| steps: |
| - uses: actions/checkout@v2 |
| - uses: dart-lang/setup-dart@v1.0 |
| with: |
| sdk: stable |
| - uses: actions/setup-java@v2 |
| with: |
| distribution: 'zulu' |
| java-version: '11' |
| cache: maven |
| - name: Install dependencies |
| run: dart pub get |
| - name: Run VM tests |
| run: dart test --platform vm |
| - name: Install coverage |
| run: dart pub global activate coverage |
| - name: Collect coverage |
| run: dart pub global run coverage:test_with_coverage |
| - name: Upload coverage |
| uses: coverallsapp/github-action@v1.1.2 |
| with: |
| github-token: ${{ secrets.GITHUB_TOKEN }} |
| flag-name: jni_gen_tests |
| parallel: true |
| path-to-lcov: ./pkgs/jni_gen/coverage/lcov.info |
| |
| ## TODO: More minimal test on windows after fixing dev dependency. |
| ## i.e do not rerun analyze and format steps, and do not require flutter. |
| ## IssueRef: https://github.com/dart-lang/jni_gen/issues/15 |
| |
| test_summarizer: |
| runs-on: ubuntu-latest |
| defaults: |
| run: |
| working-directory: ./pkgs/jni_gen/java |
| steps: |
| - uses: actions/checkout@v2 |
| - uses: actions/setup-java@v2 |
| with: |
| distribution: 'zulu' |
| java-version: '11' |
| - name: run tests using maven surefire |
| run: mvn surefire:test |
| |
| test_jni: |
| runs-on: ubuntu-latest |
| defaults: |
| run: |
| working-directory: ./pkgs/jni |
| steps: |
| - uses: actions/checkout@v3 |
| ## Requires flutter to analyze example. |
| ## Using dart alone doesn't work. |
| - uses: subosito/flutter-action@v2 |
| with: |
| channel: 'stable' |
| cache: true |
| cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:' |
| - uses: actions/setup-java@v2 |
| with: |
| distribution: 'zulu' |
| java-version: '11' |
| - run: | |
| sudo apt-get update -y |
| sudo apt-get install -y ninja-build libgtk-3-dev |
| - run: dart pub get |
| - run: dart run bin/setup.dart |
| - run: flutter pub get |
| - name: Check formatting |
| run: flutter format --output=none --set-exit-if-changed . |
| - name: Run lints |
| run: flutter analyze --fatal-infos |
| - name: Get dependencies |
| run: dart pub get |
| - name: Run tests |
| run: dart test |
| - name: Install coverage |
| run: dart pub global activate coverage |
| - name: Collect coverage |
| run: dart pub global run coverage:test_with_coverage |
| - name: Upload coverage |
| uses: coverallsapp/github-action@v1.1.2 |
| with: |
| github-token: ${{ secrets.GITHUB_TOKEN }} |
| flag-name: jni_tests |
| parallel: true |
| path-to-lcov: ./pkgs/jni/coverage/lcov.info |
| |
| build_jni_example_linux: |
| runs-on: ubuntu-latest |
| defaults: |
| run: |
| working-directory: ./pkgs/jni/example |
| steps: |
| - uses: actions/checkout@v3 |
| - uses: subosito/flutter-action@v2 |
| with: |
| channel: 'stable' |
| cache: true |
| cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:' |
| - uses: actions/setup-java@v2 |
| with: |
| distribution: 'zulu' |
| java-version: '11' |
| - run: | |
| sudo apt-get update -y |
| sudo apt-get install -y ninja-build libgtk-3-dev |
| - run: flutter config --enable-linux-desktop |
| - run: flutter pub get |
| - run: dart run jni:setup |
| - run: flutter build linux |
| |
| build_jni_example_windows: |
| runs-on: windows-latest |
| defaults: |
| run: |
| working-directory: ./pkgs/jni/example |
| steps: |
| - uses: actions/checkout@v3 |
| - uses: subosito/flutter-action@v2 |
| with: |
| channel: 'stable' |
| cache: true |
| cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:' |
| - uses: actions/setup-java@v2 |
| with: |
| distribution: 'zulu' |
| java-version: '11' |
| - run: flutter config --enable-windows-desktop |
| - run: flutter pub get |
| - run: flutter build windows |
| |
| build_jni_example_android: |
| runs-on: ubuntu-latest |
| defaults: |
| run: |
| working-directory: ./pkgs/jni/example |
| steps: |
| - uses: actions/checkout@v3 |
| - uses: actions/setup-java@v2 |
| with: |
| distribution: 'zulu' |
| java-version: '11' |
| - uses: subosito/flutter-action@v2 |
| with: |
| channel: 'stable' |
| cache: true |
| cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:' |
| - run: flutter pub get |
| - run: flutter build apk |
| |
| build_in_app_java_example: |
| runs-on: ubuntu-latest |
| defaults: |
| run: |
| working-directory: ./pkgs/jni_gen/examples/in_app_java |
| steps: |
| - uses: actions/checkout@v3 |
| - uses: actions/setup-java@v2 |
| with: |
| distribution: 'zulu' |
| java-version: '11' |
| - uses: subosito/flutter-action@v2 |
| with: |
| channel: 'stable' |
| cache: true |
| cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:' |
| - run: flutter pub get |
| - run: flutter analyze |
| - run: flutter build apk |
| - name: re-generate bindings |
| run: flutter pub run jni_gen -Ddart_root=_dart -Dc_root=_c --config jnigen.yaml |
| - name: compare generated dart bindings |
| run: diff -qr lib/android_utils _dart |
| - name: compare generated C bindings |
| run: diff -qr src/android_utils _c |
| |
| coveralls_finish: |
| needs: [test_jni_gen, test_jni] |
| runs-on: ubuntu-latest |
| steps: |
| - name: Coveralls finished |
| uses: coverallsapp/github-action@master |
| with: |
| github-token: ${{ secrets.github_token }} |
| parallel-finished: true |
| |
| run_pdfbox_example_linux: |
| runs-on: ubuntu-latest |
| defaults: |
| run: |
| working-directory: ./pkgs/jni_gen/examples/pdfbox_plugin |
| steps: |
| - uses: actions/checkout@v3 |
| - uses: subosito/flutter-action@v2 |
| with: |
| channel: 'stable' |
| cache: true |
| cache-key: 'flutter-:os:-:channel:-:version:-:arch:-:hash:' |
| - uses: actions/setup-java@v2 |
| with: |
| distribution: 'zulu' |
| java-version: '11' |
| - run: | |
| sudo apt-get update -y |
| sudo apt-get install -y ninja-build libgtk-3-dev |
| - run: flutter config --enable-linux-desktop |
| - run: dart pub get |
| - name: Generate bindings |
| run: | |
| dart run jni_gen -Dc_root=_c -Ddart_root=_dart --config jnigen.yaml |
| - name: Compare generated bindings |
| run: | |
| diff -qr _c src/ |
| diff -qr _dart lib/third_party |
| - name: Generate full bindings |
| run: dart run jni_gen --config jnigen_full.yaml |
| - name: Analyze generated bindings |
| run: | |
| flutter pub get # dart-analyze errors on flutter example |
| flutter analyze |
| - name: Run standalone example |
| run: | |
| dart pub get |
| dart run jni:setup && dart run jni:setup -p pdfbox_plugin |
| wget 'https://dart.dev/guides/language/specifications/DartLangSpec-v2.2.pdf' |
| dart run bin/pdf_info.dart DartLangSpec-v2.2.pdf |
| working-directory: ./pkgs/jni_gen/examples/pdfbox_plugin/dart_example |
| - name: Build flutter example for pdfbox_plugin |
| run: | |
| flutter pub get |
| flutter build linux |
| working-directory: ./pkgs/jni_gen/examples/pdfbox_plugin/example |
| |