blob: e710f84280f67559e39a6b4183493e14c78bef4f [file] [log] [blame] [edit]
# CI for the native_* packages.
#
# Combined into a single workflow so that deps are configured and installed once.
name: native
permissions: read-all
on:
pull_request:
branches: [main]
paths:
- ".github/workflows/native.yaml"
- "pkgs/native_assets_builder/**"
- "pkgs/native_assets_cli/**"
- "pkgs/native_toolchain_c/**"
- "tools/**"
push:
branches: [main]
paths:
- ".github/workflows/native.yaml"
- "pkgs/native_assets_builder/**"
- "pkgs/native_assets_cli/**"
- "pkgs/native_toolchain_c/**"
- "tools/**"
schedule:
- cron: "0 0 * * 0" # weekly
jobs:
build:
strategy:
fail-fast: false
matrix:
os: [ubuntu, macos, windows]
# TODO(https://github.com/dart-lang/native/issues/1154): Use 'stable' instead of 3.3.0.
sdk: [stable, 3.3.0, dev]
package: [native_assets_builder, native_assets_cli, native_toolchain_c]
# Breaking changes temporarily break the example run on the Dart SDK until native_assets_builder is rolled into the Dart SDK dev build.
breaking-change: [false]
exclude:
# Only run analyze against dev on one host.
- os: macos
sdk: dev
- os: windows
sdk: dev
# TODO(https://github.com/dart-lang/native/issues/1154): Use 'stable' instead of 3.3.0.
- os: macos
sdk: 3.3.0
- os: ubuntu
sdk: 3.3.0
- os: windows
sdk: stable
runs-on: ${{ matrix.os }}-latest
defaults:
run:
working-directory: pkgs/${{ matrix.package }}
steps:
- uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b
- uses: dart-lang/setup-dart@f0ead981b4d9a35b37f30d36160575d60931ec30
with:
sdk: ${{ matrix.sdk }}
- uses: nttld/setup-ndk@6a7e9c5494a25c4842ca1011f710300132eacd94
with:
ndk-version: r26b
if: ${{ (matrix.sdk == 'stable' || matrix.sdk == '3.3.0') && matrix.os != 'macos' }}
- run: dart pub get
- run: dart pub get -C test_data/dart_app/
if: ${{ matrix.package == 'native_assets_builder' }}
- run: dart pub get -C test_data/native_add/
if: ${{ matrix.package == 'native_assets_builder' }}
- run: dart pub get -C test_data/native_add_v1_0_0/
if: ${{ matrix.package == 'native_assets_builder' }}
- run: dart pub get -C test_data/native_add_add_source/
if: ${{ matrix.package == 'native_assets_builder' }}
- run: dart pub get -C test_data/native_subtract/
if: ${{ matrix.package == 'native_assets_builder' }}
- run: dart pub get -C test_data/package_reading_metadata/
if: ${{ matrix.package == 'native_assets_builder' }}
- run: dart pub get -C test_data/package_with_metadata/
if: ${{ matrix.package == 'native_assets_builder' }}
- run: dart pub get -C test_data/simple_link/
if: ${{ matrix.package == 'native_assets_builder' }}
- run: dart pub get -C test_data/complex_link/
if: ${{ matrix.package == 'native_assets_builder' }}
- run: dart pub get -C test_data/complex_link_helper/
if: ${{ matrix.package == 'native_assets_builder' }}
- run: dart pub get -C test_data/drop_dylib_link/
if: ${{ matrix.package == 'native_assets_builder' }}
- run: dart pub get -C test_data/add_asset_link/
if: ${{ matrix.package == 'native_assets_builder' }}
- run: dart pub get -C example/build/native_add_app/
if: ${{ matrix.package == 'native_assets_cli' }}
- run: dart pub get -C example/build/native_add_library/
if: ${{ matrix.package == 'native_assets_cli' }}
- run: dart pub get -C example/build/use_dart_api/
if: ${{ matrix.package == 'native_assets_cli' }}
- run: dart pub get -C example/link/package_with_assets/
if: ${{ matrix.package == 'native_assets_cli' }}
- run: dart pub get -C example/link/app_with_asset_treeshaking/
if: ${{ matrix.package == 'native_assets_cli' }}
- run: dart analyze --fatal-infos
# Run on dev to ensure we're not depending on deprecated SDK things.
- run: dart format --output=none --set-exit-if-changed .
if: ${{ (matrix.sdk == 'stable' || matrix.sdk == '3.3.0') }}
- name: Install native toolchains
run: sudo apt-get update && sudo apt-get install clang-15 gcc-i686-linux-gnu gcc-aarch64-linux-gnu gcc-arm-linux-gnueabihf gcc-riscv64-linux-gnu
if: ${{ (matrix.sdk == 'stable' || matrix.sdk == '3.3.0') && matrix.os == 'ubuntu' }}
- run: dart test
if: ${{ (matrix.sdk == 'stable' || matrix.sdk == '3.3.0') }}
- run: dart --enable-experiment=native-assets test
working-directory: pkgs/${{ matrix.package }}/example/build/native_add_app/
if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }}
- run: dart --enable-experiment=native-assets run
working-directory: pkgs/${{ matrix.package }}/example/build/native_add_app/
if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }}
- run: dart --enable-experiment=native-assets build bin/native_add_app.dart
working-directory: pkgs/${{ matrix.package }}/example/build/native_add_app/
if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }}
- run: ./native_add_app.exe
working-directory: pkgs/${{ matrix.package }}/example/build/native_add_app/bin/native_add_app/
if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }}
- run: dart --enable-experiment=native-assets test
working-directory: pkgs/${{ matrix.package }}/example/build/use_dart_api/
if: ${{ matrix.package == 'native_assets_cli' && matrix.sdk == 'dev' && !matrix.breaking-change }}
- name: Install coverage
run: dart pub global activate coverage
if: ${{ matrix.sdk == 'stable' || matrix.sdk == '3.3.0' }}
- name: Collect coverage
run: dart pub global run coverage:test_with_coverage
if: ${{ matrix.sdk == 'stable' || matrix.sdk == '3.3.0' }}
- name: Upload coverage
uses: coverallsapp/github-action@3dfc5567390f6fa9267c0ee9c251e4c8c3f18949
with:
flag-name: ${{ matrix.package }}_${{ matrix.os }}
github-token: ${{ secrets.GITHUB_TOKEN }}
parallel: true
if: ${{ matrix.sdk == 'stable' || matrix.sdk == '3.3.0' }}
coverage-finished:
needs: [build]
runs-on: ubuntu-latest
steps:
- name: Upload coverage
uses: coverallsapp/github-action@3dfc5567390f6fa9267c0ee9c251e4c8c3f18949
with:
carryforward: "ffigen,jni,jnigen,native_assets_builder_macos,native_assets_builder_ubuntu,native_assets_builder_windows,native_assets_cli_macos,native_assets_cli_ubuntu,native_assets_cli_windows,native_toolchain_c_macos,native_toolchain_c_ubuntu,native_toolchain_c_windows,objective_c"
github-token: ${{ secrets.GITHUB_TOKEN }}
parallel-finished: true