| Step | Arguments | | | Status |
|---|
| Start of Pipeline - (15 min in block) | | | | |
| node - (15 min in block) | android-x86 | | | |
| node block - (15 min in block) | | | | |
| stage - (4.9 sec in block) | Declarative: Checkout SCM | | | |
| stage block (Declarative: Checkout SCM) - (4.8 sec in block) | | | | |
| checkout - (4.7 sec in self) | | | | |
| withEnv - (15 min in block) | GIT_BRANCH, GIT_COMMIT, GIT_PREVIOUS_COMMIT, GIT_URL | | | |
| withEnv block - (15 min in block) | | | | |
| withEnv - (15 min in block) | PATH, FLUTTER_ROOT, ANDROID_SDK_ROOT, ANDROID_HOME | | | |
| withEnv block - (15 min in block) | | | | |
| stage - (2.1 sec in block) | Install Flutter SDK | | | |
| stage block (Install Flutter SDK) - (2 sec in block) | | | | |
| sh - (1.8 sec in self) |
set -eux
# Clone complet (sans --depth) pour pouvoir checkout n'importe
# quelle version tagguée depuis pubspec.yaml dans le stage
# "Select Flutter version". La shallow-clone ne contient que
# stable et empêche le checkout d'un tag antérieur.
if [ ! -d "$FLUTTER_ROOT/.git" ]; then
echo "Cloning Flutter into $FLUTTER_ROOT"
rm -rf "$FLUTTER_ROOT"
git clone https://github.com/flutter/flutter.git "$FLUTTER_ROOT"
else
echo "Fetching Flutter refs at $FLUTTER_ROOT"
git -C "$FLUTTER_ROOT" fetch --tags --force origin
fi
| | | |
| stage - (2.4 sec in block) | Clean workspace & caches | | | |
| stage block (Clean workspace & caches) - (2.3 sec in block) | | | | |
| deleteDir - (2.2 sec in self) | | | | |
| stage - (10 sec in block) | Checkout code | | | |
| stage block (Checkout code) - (10 sec in block) | | | | |
| checkout - (10 sec in self) | | | | |
| stage - (1.3 sec in block) | Deterministic FS (disorderfs mount) | | | |
| stage block (Deterministic FS (disorderfs mount)) - (1.2 sec in block) | | | | |
| sh - (0.85 sec in self) | | | | |
| script - (0.25 sec in block) | | | | |
| script block - (0.12 sec in block) | | | | |
| echo - (15 ms in self) | SRC_DIR set to: /home/jenkins/agent/workspace/natinfo_flutter_v1.10.0/_build | | | |
| stage - (1.2 sec in block) | FDroid-style prune (non-Android dirs) | | | |
| stage block (FDroid-style prune (non-Android dirs)) - (1.1 sec in block) | | | | |
| dir - (1 sec in block) | /home/jenkins/agent/workspace/natinfo_flutter_v1.10.0/_build | | | |
| dir block - (0.92 sec in block) | | | | |
| sh - (0.85 sec in self) |
set -eux
rm -rf ios linux macos web windows
| | | |
| stage - (40 sec in block) | Select Flutter version | | | |
| stage block (Select Flutter version) - (39 sec in block) | | | | |
| dir - (39 sec in block) | /home/jenkins/agent/workspace/natinfo_flutter_v1.10.0/_build | | | |
| dir block - (39 sec in block) | | | | |
| script - (0.42 sec in block) | | | | |
| script block - (0.29 sec in block) | | | | |
| readYaml - (0.22 sec in self) | pubspec.yaml | | | |
| sh - (39 sec in self) |
set -eux
# Même approche que F-Droid : checkout direct de la
# version pinnée dans l'install Flutter partagée, puis
# invocation via chemin absolu.
git -C "$FLUTTER_ROOT" checkout -f "$FLUTTER_VERSION"
git -C "$FLUTTER_ROOT" clean -dffx
"$FLUTTER_ROOT/bin/flutter" config --no-analytics
"$FLUTTER_ROOT/bin/flutter" --version
| | | |
| stage - (4.8 sec in block) | Ensure Android SDK & NDK | | | |
| stage block (Ensure Android SDK & NDK) - (4.6 sec in block) | | | | |
| sh - (4.5 sec in self) |
set -eux
/opt/android/cmdline-tools/latest/bin/sdkmanager --sdk_root="$ANDROID_HOME" "platform-tools" "platforms;android-36" "build-tools;36.0.0" "ndk;27.0.12077973"
yes | /opt/android/cmdline-tools/latest/bin/sdkmanager --sdk_root="$ANDROID_HOME" --licenses
| | | |
| stage - (1.8 sec in block) | Prepare signing material | | | |
| stage block (Prepare signing material) - (1.6 sec in block) | | | | |
| dir - (1.5 sec in block) | /home/jenkins/agent/workspace/natinfo_flutter_v1.10.0/_build | | | |
| dir block - (1.4 sec in block) | | | | |
| withCredentials - (1.3 sec in block) | | | | |
| withCredentials block - (0.89 sec in block) | | | | |
| sh - (0.86 sec in self) |
set -eux
mkdir -p android/app
cp -f "$KS" android/app/release.jks
cat > android/key.properties <<EOF
storeFile=release.jks
storePassword=$KS_PASS
keyAlias=$ALIAS
keyPassword=$KEY_PASS
EOF
| | | |
| stage - (21 sec in block) | Flutter pub get | | | |
| stage block (Flutter pub get) - (20 sec in block) | | | | |
| dir - (20 sec in block) | /home/jenkins/agent/workspace/natinfo_flutter_v1.10.0/_build | | | |
| dir block - (20 sec in block) | | | | |
| sh - (20 sec in self) |
set -eux
export PUB_CACHE="$WORKSPACE/_build/.pub-cache"
export PATH="$FLUTTER_ROOT/bin:$PUB_CACHE/bin:$PATH"
flutter clean
rm -rf "$PUB_CACHE/hosted/pub.dev/geolocator_android-"*
flutter pub get
| | | |
| stage - (1.2 sec in block) | Patch geolocator_android | | | |
| stage block (Patch geolocator_android) - (1.1 sec in block) | | | | |
| dir - (1 sec in block) | /home/jenkins/agent/workspace/natinfo_flutter_v1.10.0/_build | | | |
| dir block - (0.9 sec in block) | | | | |
| sh - (0.84 sec in self) | | | | |
| stage - (1.2 sec in block) | Tune Gradle/Kotlin for CI | | | |
| stage block (Tune Gradle/Kotlin for CI) - (1.1 sec in block) | | | | |
| dir - (1 sec in block) | /home/jenkins/agent/workspace/natinfo_flutter_v1.10.0/_build | | | |
| dir block - (0.92 sec in block) | | | | |
| sh - (0.84 sec in self) | | | | |
| stage - (13 min in block) | Assemble split APKs (per-ABI, like F-Droid) | | | |
| stage block (Assemble split APKs (per-ABI, like F-Droid)) - (13 min in block) | | | | |
| dir - (13 min in block) | /home/jenkins/agent/workspace/natinfo_flutter_v1.10.0/_build | | | |
| dir block - (13 min in block) | | | | |
| sh - (13 min in self) |
set -eux
export PUB_CACHE="$WORKSPACE/_build/.pub-cache"
export PATH="$FLUTTER_ROOT/bin:$PUB_CACHE/bin:$PATH"
flutter build apk --release --split-per-abi --target-platform=android-x64 --verbose
flutter build apk --release --split-per-abi --target-platform=android-arm --verbose
flutter build apk --release --split-per-abi --target-platform=android-arm64 --verbose
| | | |
| stage - (1.9 sec in block) | Rename APKs | | | |
| stage block (Rename APKs) - (1.7 sec in block) | | | | |
| dir - (1.6 sec in block) | /home/jenkins/agent/workspace/natinfo_flutter_v1.10.0/_build | | | |
| dir block - (1.5 sec in block) | | | | |
| script - (1.4 sec in block) | | | | |
| script block - (1.3 sec in block) | | | | |
| readYaml - (0.21 sec in self) | pubspec.yaml | | | |
| sh - (1 sec in self) |
set -eux
cd build/app/outputs/flutter-apk
for f in *-release.apk; do
abi=$(echo $f | cut -d'-' -f2)
mv "$f" "net.retiolus.natinfo-${abi}-v1.10.0.apk"
done
| | | |
| stage - (15 sec in block) | Archive APKs | | | |
| stage block (Archive APKs) - (15 sec in block) | | | | |
| dir - (14 sec in block) | /home/jenkins/agent/workspace/natinfo_flutter_v1.10.0/_build | | | |
| dir block - (14 sec in block) | | | | |
| archiveArtifacts - (14 sec in self) | | | | |
| stage - (51 sec in block) | Publish release assets (Gitea, only on tag) | | | |
| stage block (Publish release assets (Gitea, only on tag)) - (51 sec in block) | | | | |
| dir - (51 sec in block) | /home/jenkins/agent/workspace/natinfo_flutter_v1.10.0/_build | | | |
| dir block - (51 sec in block) | | | | |
| publishGiteaAssets - (51 sec in self) | build/app/outputs/flutter-apk/net.retiolus.natinfo-*-v*.apk | | | |
| stage - (1 sec in block) | Declarative: Post Actions | | | |
| stage block (Declarative: Post Actions) - (0.96 sec in block) | | | | |
| sh - (0.86 sec in self) |
set +e
if [ -f "$WORKSPACE/.disorderfs_mount_active" ]; then
if mountpoint -q "$WORKSPACE/_build"; then
fusermount -u "$WORKSPACE/_build" 2>/dev/null || fusermount3 -u "$WORKSPACE/_build" 2>/dev/null || true
fi
rm -f "$WORKSPACE/.disorderfs_mount_active"
fi
| | | |