forked from eva/focus-flow
102 lines
2.8 KiB
Text
102 lines
2.8 KiB
Text
# SPDX-FileCopyrightText: 2026 FocusFlow contributors
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
VERSION 0.8
|
|
|
|
# Earthly build pipeline for FocusFlow.
|
|
#
|
|
# The primary application artifact is the Flutter Linux desktop release bundle.
|
|
# The +build target packages that bundle into builds/focus_flow_linux_x64.zip
|
|
# and also exports the unzipped runnable bundle under builds/focus_flow_linux_x64.
|
|
|
|
setup:
|
|
FROM ubuntu:24.04
|
|
USER root
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
ENV FLUTTER_VERSION=3.44.3
|
|
ENV FLUTTER_HOME=/opt/flutter
|
|
ENV PATH=/opt/flutter/bin:/opt/flutter/bin/cache/dart-sdk/bin:$PATH
|
|
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
|
ca-certificates \
|
|
clang \
|
|
cmake \
|
|
curl \
|
|
dbus-x11 \
|
|
git \
|
|
libgtk-3-dev \
|
|
liblzma-dev \
|
|
libstdc++-12-dev \
|
|
libglu1-mesa \
|
|
ninja-build \
|
|
pkg-config \
|
|
unzip \
|
|
xz-utils \
|
|
xvfb \
|
|
zip \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
RUN curl -fsSL "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${FLUTTER_VERSION}-stable.tar.xz" -o /tmp/flutter.tar.xz \
|
|
&& mkdir -p /opt \
|
|
&& tar -xJf /tmp/flutter.tar.xz -C /opt \
|
|
&& rm /tmp/flutter.tar.xz
|
|
WORKDIR /workspace
|
|
RUN git config --global --add safe.directory /opt/flutter
|
|
RUN flutter config --no-analytics
|
|
RUN flutter config --enable-linux-desktop
|
|
RUN flutter --version
|
|
|
|
code:
|
|
FROM +setup
|
|
COPY . .
|
|
RUN dart pub get
|
|
RUN cd apps/focus_flow_flutter && flutter pub get
|
|
|
|
format:
|
|
FROM +code
|
|
RUN dart format --set-exit-if-changed packages apps scripts tool test
|
|
|
|
dart-analyze:
|
|
FROM +code
|
|
RUN dart analyze
|
|
|
|
flutter-analyze:
|
|
FROM +code
|
|
RUN cd apps/focus_flow_flutter && flutter analyze
|
|
|
|
reuse:
|
|
FROM +code
|
|
RUN dart run tool/check_reuse.dart
|
|
|
|
docs:
|
|
FROM +code
|
|
RUN dart run tool/check_docs.dart --skip-dartdoc
|
|
|
|
pre-commit:
|
|
FROM +code
|
|
RUN .githooks/pre-commit
|
|
|
|
lint:
|
|
FROM +code
|
|
BUILD +format
|
|
BUILD +dart-analyze
|
|
BUILD +flutter-analyze
|
|
BUILD +reuse
|
|
BUILD +docs
|
|
BUILD +pre-commit
|
|
|
|
build:
|
|
FROM +code
|
|
RUN cd apps/focus_flow_flutter && flutter build linux --release
|
|
RUN rm -rf builds \
|
|
&& mkdir -p builds/focus_flow_linux_x64 \
|
|
&& cp -R apps/focus_flow_flutter/build/linux/x64/release/bundle/. builds/focus_flow_linux_x64/
|
|
RUN cd builds && zip -qr focus_flow_linux_x64.zip focus_flow_linux_x64
|
|
SAVE ARTIFACT --keep-ts builds AS LOCAL builds
|
|
|
|
run:
|
|
FROM +build
|
|
RUN test -x builds/focus_flow_linux_x64/focus_flow_flutter
|
|
RUN status=0; timeout 10s xvfb-run -a builds/focus_flow_linux_x64/focus_flow_flutter || status=$?; if [ "$status" = "124" ]; then exit 0; fi; exit "$status"
|
|
|
|
all:
|
|
BUILD +lint
|
|
BUILD +build
|