Skip to content

debug

debug #2249

Workflow file for this run

name: CI
on:
push:
branches: ["main", "debug"]
tags: ["*"]
pull_request:
branches: ["main"]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
RUST_BACKTRACE: 1
jobs:
################
# Pull Request #
################
pr:
if: ${{ github.event_name == 'pull_request' }}
needs:
- build
- dartanalyze
- dartfmt
- ktfmt
- rustdoc
- rustfmt
- swiftformat
- test-flutter
runs-on: ubuntu-latest
steps:
- run: true
##########################
# Linting and formatting #
##########################
dartanalyze:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
- run: flutter pub get
- run: make flutter.analyze
dartfmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
- run: flutter pub get
- run: make flutter.fmt check=yes
ktfmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- run: make kt.fmt check=yes
rustfmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@v1
with:
toolchain: nightly
components: rustfmt
- run: make cargo.fmt check=yes
swiftformat:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- run: brew install swiftformat
- run: make swift.fmt check=yes dockerized=no
############
# Building #
############
build:
strategy:
fail-fast: false
matrix:
platform:
- macos
- windows
runs-on: ${{ (matrix.platform == 'windows' && 'windows-latest')
|| 'macos-12' }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@v1
with:
toolchain: stable
- run: make rustup.targets only=${{ matrix.platform }}
- uses: subosito/flutter-action@v2
- run: flutter config --enable-${{ matrix.platform }}-desktop
# Pin Xcode version for better compatibility.
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: "13.1"
if: ${{ matrix.platform == 'macos' }}
- run: make cargo.build platform=${{ matrix.platform }} debug=no
- run: make flutter.build platform=${{ matrix.platform }}
- uses: actions/upload-artifact@v4
with:
name: build-${{ matrix.platform }}
path: ${{ matrix.platform }}/rust/
###########
# Testing #
###########
test-flutter:
name: test (example, ${{ matrix.platform }})
needs: ["build"]
strategy:
fail-fast: false
matrix:
# TODO: Run tests on iOS.
platform:
- android
# - ios
- linux
- macos
- windows
runs-on: ${{ (matrix.platform == 'linux' && 'ubuntu-latest')
|| (matrix.platform == 'windows' && 'windows-latest')
|| (matrix.platform == 'ios' && 'macos-14')
|| 'macos-13' }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@v1
with:
toolchain: stable
if: ${{ matrix.platform != 'android'
&& matrix.platform != 'ios' }}
- run: make rustup.targets only=${{ matrix.platform }}
if: ${{ matrix.platform != 'android'
&& matrix.platform != 'ios' }}
- uses: subosito/flutter-action@v2
- run: flutter config --enable-${{ matrix.platform }}-desktop
if: ${{ matrix.platform != 'android'
&& matrix.platform != 'ios' }}
- name: Install `${{ matrix.platform }}` platform dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
cmake \
libgtk-3-dev liblzma-dev libpulse-dev libudev-dev \
ninja-build \
xvfb
if: ${{ matrix.platform == 'linux' }}
- run: make cargo.build debug=yes platform=${{ matrix.platform }}
if: ${{ matrix.platform != 'android'
&& matrix.platform != 'ios' }}
- name: Test on `${{ matrix.platform }}` platform with emulator
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 24
cores: 3
target: google_apis
arch: x86_64
profile: Nexus 6
script: make flutter.test.mobile
if: ${{ matrix.platform == 'android' }}
- name: Add TCC permissions on macOS
run: |
configure_user_tccdb () {
local values=$1
local dbPath="$HOME/Library/Application Support/com.apple.TCC/TCC.db"
local sqlQuery="INSERT OR REPLACE INTO access VALUES($values);"
sqlite3 "$dbPath" "$sqlQuery"
}
configure_sys_tccdb () {
local values=$1
local dbPath="/Library/Application Support/com.apple.TCC/TCC.db"
local sqlQuery="INSERT OR REPLACE INTO access VALUES($values);"
sudo sqlite3 "$dbPath" "$sqlQuery"
}
userValuesArray=(
"'kTCCServiceMicrophone','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1687786159"
"'kTCCServiceCamera','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1687786159"
"'kTCCServiceBluetoothAlways','/usr/local/opt/runner/provisioner/provisioner',1,2,4,1,NULL,NULL,0,'UNUSED',NULL,0,1687786159"
)
for values in "${userValuesArray[@]}"; do
# Sonoma and higher have a few extra values:
# https://github.com/actions/runner-images/blob/main/images/macos/scripts/build/configure-tccdb-macos.sh
if [ "$OSTYPE" = "darwin23" ]; then
configure_user_tccdb "$values,NULL,NULL,'UNUSED',${values##*,}"
configure_sys_tccdb "$values,NULL,NULL,'UNUSED',${values##*,}"
else
configure_user_tccdb "$values"
configure_sys_tccdb "$values"
fi
done
if: ${{ matrix.platform == 'ios' }}
- name: Start iOS simulator
id: simulator
uses: futureware-tech/simulator-action@v4
with:
os_version: '>=13.0'
os: iOS
if: ${{ matrix.platform == 'ios' }}
- name: Test on `${{ matrix.platform }}` platform with simulator
run: make flutter.test.mobile device=${{ steps.simulator.outputs.udid }}
debug=yes
if: ${{ matrix.platform == 'ios' }}
- name: Test on `${{ matrix.platform }}` platform with Xvfb
run: xvfb-run -a make flutter.test.desktop device=${{ matrix.platform }}
if: ${{ matrix.platform == 'linux' }}
- name: Test on `${{ matrix.platform }}` platform
run: make flutter.test.desktop device=${{ matrix.platform }}
if: ${{ matrix.platform == 'macos'
|| matrix.platform == 'windows' }}
#################
# Documentation #
#################
rustdoc:
strategy:
fail-fast: false
matrix:
platform:
- linux
- macos
- windows
runs-on: ${{ (matrix.platform == 'linux' && 'ubuntu-latest')
|| (matrix.platform == 'windows' && 'windows-latest')
|| 'macos-latest' }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@v1
with:
toolchain: stable
- name: Install `${{ matrix.platform }}` platform dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
libgtk-3-dev libpulse-dev libudev-dev libxcomposite-dev \
libxdamage-dev libxfixes-dev libxrandr-dev libxtst-dev \
ninja-build
if: ${{ matrix.platform == 'linux' }}
- run: make cargo.doc