blob: 0ce89acfb7847d61be3cfe3df3850aa724378675 [file] [edit]
# CI for the native_* packages.
#
# Combined into a single workflow so that deps are configured and installed once.
name: native
permissions:
contents: read
on:
pull_request:
# No `branches:` to enable stacked PRs on GitHub.
paths:
- '.github/workflows/native.yaml'
- 'pkgs/code_assets/**'
- 'pkgs/data_assets/**'
- 'pkgs/ffi/**'
- 'pkgs/ffigen/**'
- 'pkgs/hooks/**'
- 'pkgs/hooks_runner/**'
- 'pkgs/json_syntax_generator/**'
- 'pkgs/native_test_helpers/**'
- 'pkgs/native_toolchain_c/**'
- 'pkgs/record_use/**'
- 'tool/**'
push:
branches: [main]
paths:
- '.github/workflows/native.yaml'
- 'pkgs/code_assets/**'
- 'pkgs/data_assets/**'
- 'pkgs/ffi/**'
- 'pkgs/ffigen/**'
- 'pkgs/hooks/**'
- 'pkgs/hooks_runner/**'
- 'pkgs/json_syntax_generator/**'
- 'pkgs/native_test_helpers/**'
- 'pkgs/native_toolchain_c/**'
- 'pkgs/record_use/**'
- 'tool/**'
schedule:
- cron: '0 0 * * 0' # weekly
jobs:
build:
strategy:
fail-fast: false
matrix:
os: [ubuntu, macos, windows]
sdk: [dev, stable]
runs-on: ${{ matrix.os }}-latest
defaults:
run:
working-directory: .
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
with:
persist-credentials: false
- uses: dart-lang/setup-dart@65eb853c7ba17dde3be364c3d2858773e7144260
with:
sdk: ${{ matrix.sdk }}
- uses: nttld/setup-ndk@ed92fe6cadad69be94a966a7ee3271275e62f779
with:
ndk-version: r27
if: ${{ matrix.os != 'macos' }}
- 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.os == 'ubuntu' }}
- name: Install native toolchains
run: brew install lld
if: ${{ matrix.os == 'macos' }}
- name: Install Linux cross gcc (macOS)
run: |
brew install \
messense/macos-cross-toolchains/x86_64-unknown-linux-gnu \
messense/macos-cross-toolchains/aarch64-unknown-linux-gnu \
messense/macos-cross-toolchains/arm-unknown-linux-gnueabihf \
messense/macos-cross-toolchains/i686-unknown-linux-gnu
if: ${{ matrix.os == 'macos' }}
- name: Install Linux cross gcc in WSL (Windows)
uses: Vampire/setup-wsl@d1da7f2c0322a5ee4f24975344f67fc0f5baf364
with:
distribution: Ubuntu-24.04
wsl-version: '1'
additional-packages: >-
gcc-x86-64-linux-gnu binutils-x86-64-linux-gnu libc6-dev-amd64-cross
gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu libc6-dev-arm64-cross
gcc-arm-linux-gnueabihf binutils-arm-linux-gnueabihf libc6-dev-armhf-cross
gcc-i686-linux-gnu binutils-i686-linux-gnu libc6-dev-i386-cross
gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu libc6-dev-riscv64-cross
if: ${{ matrix.os == 'windows' }}
- run: dart pub get
- name: Run pub get, analysis, formatting, generators, tests, and examples.
run: dart tool/ci.dart --all --no-apitool ${{ matrix.sdk == 'stable' && '--no-format' || '' }}
- name: Trust Coveralls tap
run: brew trust coverallsapp/coveralls
if: ${{ matrix.os == 'macos' }}
- name: Upload coverage
uses: coverallsapp/github-action@0a51d2e0b5417d06e4ecceb534aec87defc53926
with:
flag-name: native_pkgs_${{ matrix.os }}
github-token: ${{ secrets.GITHUB_TOKEN }}
parallel: true
coverage-finished:
needs: [build]
runs-on: ubuntu-latest
steps:
- name: Upload coverage
uses: coverallsapp/github-action@0a51d2e0b5417d06e4ecceb534aec87defc53926
with:
carryforward: 'ffigen,jni,jnigen,native_pkgs_macos,native_pkgs_ubuntu,native_pkgs_windows,objective_c,swift2objc,swiftgen'
github-token: ${{ secrets.GITHUB_TOKEN }}
parallel-finished: true