Skip to content

docs: direct users to the MDSLens project #54

docs: direct users to the MDSLens project

docs: direct users to the MDSLens project #54

Workflow file for this run

name: CI
on:
push:
branches: [master, main, flutter-rewrite]
pull_request:
branches: [master, main, flutter-rewrite]
env:
FLUTTER_VERSION: 3.44.7
jobs:
flutter:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
channel: stable
cache: true
- run: flutter pub get
- run: python3 -m py_compile build_app.py
- run: python3 build_app.py --help
- run: python3 -m unittest scripts/test_build_app.py
- run: python3 scripts/verify_icons.py
- run: flutter analyze
- run: flutter test
rust:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-24.04, macos-15, windows-2025]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@1.92.0
- run: cargo test --manifest-path rust/Cargo.toml --workspace --locked
desktop-build:
needs: [flutter, rust]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: macos-15
target: macos
arch: universal
python: python3
channel: stable
artifact: macos-universal
bundle: build/dist/mdsscope-macos-universal-unsigned.zip
- os: windows-2025
target: windows
arch: x64
python: python
channel: stable
artifact: windows-x64
bundle: build/dist/mdsscope-windows-x64.zip
- os: windows-11-arm
target: windows
arch: arm64
python: python
channel: main
artifact: windows-arm64
bundle: build/dist/mdsscope-windows-arm64.zip
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
# Flutter does not publish every stable SDK archive for ARM64 hosts.
# The action's main-channel mode clones upstream and checks out this
# exact version tag, which is Flutter's documented ARM64 fallback.
channel: ${{ matrix.channel }}
cache: true
- uses: dtolnay/rust-toolchain@1.92.0
- run: >-
${{ matrix.python }} build_app.py -p ${{ matrix.target }}
-a ${{ matrix.arch }} -f zip
- uses: actions/upload-artifact@v4
with:
name: ci-${{ matrix.artifact }}
path: ${{ matrix.bundle }}
if-no-files-found: error
linux-build:
needs: [flutter, rust]
runs-on: ${{ matrix.runner }}
container: ubuntu:20.04
strategy:
fail-fast: false
matrix:
include:
- arch: x64
runner: ubuntu-24.04
channel: stable
- arch: arm64
runner: ubuntu-24.04-arm
channel: main
steps:
- name: Install baseline build tools
run: |
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y \
build-essential ca-certificates clang cmake curl git jq libgtk-3-dev libsecret-1-dev ninja-build \
nasm patchelf perl pkg-config python3 unzip xz-utils
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
channel: ${{ matrix.channel }}
cache: true
- name: Trust the cached Flutter SDK checkout
run: git config --global --add safe.directory "$FLUTTER_ROOT"
- uses: dtolnay/rust-toolchain@1.92.0
- run: python3 build_app.py -p linux -a ${{ matrix.arch }} -f zip
- run: >-
python3 scripts/verify_linux_portable.py
build/dist/mdsscope-linux-${{ matrix.arch }}.zip --max-glibc 2.31
- uses: actions/upload-artifact@v4
with:
name: ci-linux-${{ matrix.arch }}
path: build/dist/mdsscope-linux-${{ matrix.arch }}.zip
if-no-files-found: error
linux-portable-runtime:
needs: [linux-build]
runs-on: ${{ matrix.runner }}
container: ${{ matrix.image }}
strategy:
fail-fast: false
matrix:
include:
- name: Ubuntu 24.04
runner: ubuntu-24.04
arch: x64
image: ubuntu:24.04
family: debian
launch: true
- name: Fedora 44
runner: ubuntu-24.04
arch: x64
image: fedora:44
family: fedora
launch: true
- name: Enterprise Linux 10
runner: ubuntu-24.04
arch: x64
image: rockylinux/rockylinux:10
family: enterprise
launch: false
- name: Enterprise Linux 10 ARM64
runner: ubuntu-24.04-arm
arch: arm64
image: rockylinux/rockylinux:10
family: enterprise
launch: false
name: Portable Linux / ${{ matrix.name }}
steps:
- name: Install Ubuntu verifier runtime
if: matrix.family == 'debian'
shell: bash
run: |
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y \
binutils git libegl-mesa0 libegl1 libgl1-mesa-dri \
libgles2 libgtk-3-0t64 libsecret-1-0 libstdc++6 python3 unzip xvfb
- name: Install Fedora verifier runtime
if: matrix.family == 'fedora'
run: >-
dnf install -y binutils git gnome-settings-daemon gtk3 libepoxy
libglvnd-egl libsecret libstdc++ mesa-dri-drivers mesa-libEGL
python3 unzip
xorg-x11-server-Xvfb
- name: Install Enterprise Linux verifier runtime
if: matrix.family == 'enterprise'
run: >-
dnf install -y binutils git gtk3 libepoxy libsecret libstdc++
python3 unzip
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: ci-linux-${{ matrix.arch }}
path: build/dist
- name: Verify portable dependency closure
run: >-
python3 scripts/verify_linux_portable.py
build/dist/mdsscope-linux-${{ matrix.arch }}.zip
--max-glibc 2.31
- name: Smoke-launch portable application
if: matrix.launch
env:
LIBGL_ALWAYS_SOFTWARE: "1"
run: >-
python3 scripts/verify_linux_portable.py
build/dist/mdsscope-linux-${{ matrix.arch }}.zip
--max-glibc 2.31 --launch
android-build:
needs: [flutter, rust]
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "17"
- uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
channel: stable
cache: true
- uses: dtolnay/rust-toolchain@1.92.0
- run: '"$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" "ndk;28.2.13676358"'
- run: python3 build_app.py -p android -f apk
- uses: actions/upload-artifact@v4
with:
name: ci-android
path: build/dist/*.apk
if-no-files-found: error
apple-mobile-build:
needs: [flutter, rust]
runs-on: macos-15
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
channel: stable
cache: true
- uses: dtolnay/rust-toolchain@1.92.0
- run: python3 build_app.py -p ios -p ipados -f unsigned-ipa zip
- uses: actions/upload-artifact@v4
with:
name: ci-apple-mobile
path: |
build/dist/*-unsigned.ipa
build/dist/*-unsigned.zip
if-no-files-found: error