80 lines
2.9 KiB
YAML
80 lines
2.9 KiB
YAML
# MotorSignal Azure Pipelines pilot
|
|
# Manual, non-publishing validation only. No signing keys or deployments.
|
|
trigger: none
|
|
pr: none
|
|
|
|
pool:
|
|
vmImage: ubuntu-24.04
|
|
|
|
variables:
|
|
flutterVersion: '3.44.6'
|
|
|
|
steps:
|
|
- checkout: self
|
|
clean: true
|
|
fetchDepth: 1
|
|
|
|
- bash: |
|
|
set -euo pipefail
|
|
echo 'Before cleanup:'
|
|
df -h /
|
|
free -h
|
|
# Microsoft-hosted Ubuntu includes toolchains this Android pipeline does not need.
|
|
sudo rm -rf /usr/share/dotnet /usr/local/share/powershell /opt/ghc /usr/local/.ghcup
|
|
sudo rm -rf /usr/local/lib/android/sdk/emulator /usr/local/lib/android/sdk/system-images
|
|
sudo apt-get clean
|
|
echo 'After cleanup:'
|
|
df -h /
|
|
free -h
|
|
available_kb="$(df --output=avail / | tail -1 | tr -d ' ')"
|
|
if [ "$available_kb" -lt 6291456 ]; then
|
|
echo 'At least 6 GiB free disk is required before Android SDK provisioning.'
|
|
exit 1
|
|
fi
|
|
displayName: 'Free unused toolchains and verify disk capacity'
|
|
|
|
- bash: |
|
|
set -euo pipefail
|
|
git clone --depth 1 --branch "$(flutterVersion)" https://github.com/flutter/flutter.git "$(Agent.TempDirectory)/flutter"
|
|
echo "##vso[task.prependpath]$(Agent.TempDirectory)/flutter/bin"
|
|
"$(Agent.TempDirectory)/flutter/bin/flutter" --version
|
|
displayName: 'Install pinned Flutter SDK'
|
|
|
|
- bash: |
|
|
set -euo pipefail
|
|
flutter pub get
|
|
dart run build_runner build --delete-conflicting-outputs
|
|
flutter analyze --no-fatal-infos
|
|
flutter test
|
|
displayName: 'Generate, analyze and test Flutter'
|
|
|
|
- bash: |
|
|
set -euo pipefail
|
|
echo 'Before Android compilation:'
|
|
df -h /
|
|
free -h
|
|
SDKROOT="${ANDROID_SDK_ROOT:-${ANDROID_HOME:-}}"
|
|
test -n "$SDKROOT"
|
|
echo "flutter.sdk=$(Agent.TempDirectory)/flutter" > android/local.properties
|
|
SDKMANAGER="$(find "$SDKROOT/cmdline-tools" -type f -name sdkmanager -print -quit 2>/dev/null || true)"
|
|
test -x "$SDKMANAGER"
|
|
"$SDKMANAGER" 'platforms;android-36' 'build-tools;36.0.0' 'platform-tools'
|
|
if [ ! -f android/gradlew ]; then
|
|
(cd android && gradle wrapper --gradle-version 9.1.0 --distribution-type all)
|
|
fi
|
|
chmod +x android/gradlew
|
|
# Agent-specific limits, applied only in CI's disposable checkout.
|
|
cat >> android/gradle.properties <<'GRADLE_LIMITS'
|
|
org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=768m -XX:ReservedCodeCacheSize=256m -Dfile.encoding=UTF-8
|
|
org.gradle.workers.max=2
|
|
org.gradle.parallel=false
|
|
org.gradle.daemon=false
|
|
GRADLE_LIMITS
|
|
export JAVA_TOOL_OPTIONS="-XX:MaxRAMPercentage=60"
|
|
flutter build apk --debug
|
|
test -s build/app/outputs/flutter-apk/app-debug.apk || test -s build/app/outputs/flutter-apk/app-production-debug.apk
|
|
echo 'Android debug APK built and verified locally; artifact intentionally not published.'
|
|
df -h /
|
|
free -h
|
|
displayName: 'Build and verify debug APK without artifact upload'
|