unify pipeline, load friends leaderboard from homepage data
Some checks failed
Release / meta (push) Successful in 10s
Release / linux-build (push) Successful in 57s
Release / web-build (push) Failing after 1m11s
Release / release-dev (push) Has been cancelled
Release / release-master (push) Has been cancelled
Release / android-build (push) Has been cancelled
Some checks failed
Release / meta (push) Successful in 10s
Release / linux-build (push) Successful in 57s
Release / web-build (push) Failing after 1m11s
Release / release-dev (push) Has been cancelled
Release / release-master (push) Has been cancelled
Release / android-build (push) Has been cancelled
This commit is contained in:
@@ -3,7 +3,7 @@ name: Release
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- dev
|
- dev-other
|
||||||
|
|
||||||
env:
|
env:
|
||||||
JAVA_VERSION: "17"
|
JAVA_VERSION: "17"
|
||||||
@@ -85,16 +85,16 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
#
|
#
|
||||||
# - name: Install OS deps (Android)
|
# - name: Install OS deps (Android)
|
||||||
# run: |
|
# run: |
|
||||||
# if command -v sudo >/dev/null 2>&1; then
|
# if command -v sudo >/dev/null 2>&1; then
|
||||||
# SUDO="sudo"
|
# SUDO="sudo"
|
||||||
# else
|
# else
|
||||||
# SUDO=""
|
# SUDO=""
|
||||||
# fi
|
# fi
|
||||||
# $SUDO apt-get update
|
# $SUDO apt-get update
|
||||||
# $SUDO apt-get install -y unzip xz-utils zip libstdc++6 liblzma-dev curl jq
|
# $SUDO apt-get install -y unzip xz-utils zip libstdc++6 liblzma-dev curl jq
|
||||||
|
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@v4
|
uses: actions/setup-java@v4
|
||||||
@@ -120,19 +120,19 @@ jobs:
|
|||||||
echo "$ANDROID_SDK_ROOT/platform-tools" >> "$GITHUB_PATH"
|
echo "$ANDROID_SDK_ROOT/platform-tools" >> "$GITHUB_PATH"
|
||||||
echo "$ANDROID_SDK_ROOT/build-tools/33.0.2" >> "$GITHUB_PATH"
|
echo "$ANDROID_SDK_ROOT/build-tools/33.0.2" >> "$GITHUB_PATH"
|
||||||
|
|
||||||
# - name: Install Flutter SDK
|
# - name: Install Flutter SDK
|
||||||
# run: |
|
# run: |
|
||||||
# set -euo pipefail
|
# set -euo pipefail
|
||||||
# FLUTTER_HOME="$HOME/flutter"
|
# FLUTTER_HOME="$HOME/flutter"
|
||||||
# # Avoid git ownership issues when Flutter checks out deps.
|
# # Avoid git ownership issues when Flutter checks out deps.
|
||||||
# git config --global --add safe.directory "$FLUTTER_HOME" || true
|
# git config --global --add safe.directory "$FLUTTER_HOME" || true
|
||||||
# if [ ! -x "$FLUTTER_HOME/bin/flutter" ]; then
|
# if [ ! -x "$FLUTTER_HOME/bin/flutter" ]; then
|
||||||
# rm -rf "$FLUTTER_HOME"
|
# rm -rf "$FLUTTER_HOME"
|
||||||
# curl -fsSL -o /tmp/flutter.tar.xz "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${FLUTTER_VERSION}-stable.tar.xz"
|
# curl -fsSL -o /tmp/flutter.tar.xz "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${FLUTTER_VERSION}-stable.tar.xz"
|
||||||
# tar -C "$HOME" -xf /tmp/flutter.tar.xz
|
# tar -C "$HOME" -xf /tmp/flutter.tar.xz
|
||||||
# fi
|
# fi
|
||||||
# echo "$FLUTTER_HOME/bin" >> "$GITHUB_PATH"
|
# echo "$FLUTTER_HOME/bin" >> "$GITHUB_PATH"
|
||||||
# "$FLUTTER_HOME/bin/flutter" --version
|
# "$FLUTTER_HOME/bin/flutter" --version
|
||||||
|
|
||||||
- name: Allow all git directories (CI)
|
- name: Allow all git directories (CI)
|
||||||
run: git config --global --add safe.directory '*'
|
run: git config --global --add safe.directory '*'
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ on:
|
|||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
|
- dev
|
||||||
|
|
||||||
env:
|
env:
|
||||||
JAVA_VERSION: "17"
|
JAVA_VERSION: "17"
|
||||||
@@ -79,21 +80,21 @@ jobs:
|
|||||||
|
|
||||||
android-build:
|
android-build:
|
||||||
runs-on:
|
runs-on:
|
||||||
- mileograph
|
- tgj-arc
|
||||||
needs: meta
|
needs: meta
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
#
|
||||||
- name: Install OS deps (Android)
|
# - name: Install OS deps (Android)
|
||||||
run: |
|
# run: |
|
||||||
if command -v sudo >/dev/null 2>&1; then
|
# if command -v sudo >/dev/null 2>&1; then
|
||||||
SUDO="sudo"
|
# SUDO="sudo"
|
||||||
else
|
# else
|
||||||
SUDO=""
|
# SUDO=""
|
||||||
fi
|
# fi
|
||||||
$SUDO apt-get update
|
# $SUDO apt-get update
|
||||||
$SUDO apt-get install -y unzip xz-utils zip libstdc++6 liblzma-dev curl jq
|
# $SUDO apt-get install -y unzip xz-utils zip libstdc++6 liblzma-dev curl jq
|
||||||
|
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@v4
|
uses: actions/setup-java@v4
|
||||||
@@ -119,19 +120,19 @@ jobs:
|
|||||||
echo "$ANDROID_SDK_ROOT/platform-tools" >> "$GITHUB_PATH"
|
echo "$ANDROID_SDK_ROOT/platform-tools" >> "$GITHUB_PATH"
|
||||||
echo "$ANDROID_SDK_ROOT/build-tools/33.0.2" >> "$GITHUB_PATH"
|
echo "$ANDROID_SDK_ROOT/build-tools/33.0.2" >> "$GITHUB_PATH"
|
||||||
|
|
||||||
- name: Install Flutter SDK
|
# - name: Install Flutter SDK
|
||||||
run: |
|
# run: |
|
||||||
set -euo pipefail
|
# set -euo pipefail
|
||||||
FLUTTER_HOME="$HOME/flutter"
|
# FLUTTER_HOME="$HOME/flutter"
|
||||||
# Avoid git ownership issues when Flutter checks out deps.
|
# # Avoid git ownership issues when Flutter checks out deps.
|
||||||
git config --global --add safe.directory "$FLUTTER_HOME" || true
|
# git config --global --add safe.directory "$FLUTTER_HOME" || true
|
||||||
if [ ! -x "$FLUTTER_HOME/bin/flutter" ]; then
|
# if [ ! -x "$FLUTTER_HOME/bin/flutter" ]; then
|
||||||
rm -rf "$FLUTTER_HOME"
|
# rm -rf "$FLUTTER_HOME"
|
||||||
curl -fsSL -o /tmp/flutter.tar.xz "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${FLUTTER_VERSION}-stable.tar.xz"
|
# curl -fsSL -o /tmp/flutter.tar.xz "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${FLUTTER_VERSION}-stable.tar.xz"
|
||||||
tar -C "$HOME" -xf /tmp/flutter.tar.xz
|
# tar -C "$HOME" -xf /tmp/flutter.tar.xz
|
||||||
fi
|
# fi
|
||||||
echo "$FLUTTER_HOME/bin" >> "$GITHUB_PATH"
|
# echo "$FLUTTER_HOME/bin" >> "$GITHUB_PATH"
|
||||||
"$FLUTTER_HOME/bin/flutter" --version
|
# "$FLUTTER_HOME/bin/flutter" --version
|
||||||
|
|
||||||
- name: Allow all git directories (CI)
|
- name: Allow all git directories (CI)
|
||||||
run: git config --global --add safe.directory '*'
|
run: git config --global --add safe.directory '*'
|
||||||
@@ -220,36 +221,12 @@ jobs:
|
|||||||
|
|
||||||
linux-build:
|
linux-build:
|
||||||
runs-on:
|
runs-on:
|
||||||
- mileograph
|
- tgj-arc
|
||||||
needs: meta
|
needs: meta
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Install OS deps (Linux desktop)
|
|
||||||
run: |
|
|
||||||
if command -v sudo >/dev/null 2>&1; then
|
|
||||||
SUDO="sudo"
|
|
||||||
else
|
|
||||||
SUDO=""
|
|
||||||
fi
|
|
||||||
$SUDO apt-get update
|
|
||||||
$SUDO apt-get install -y unzip xz-utils zip libstdc++6 libglu1-mesa clang cmake ninja-build pkg-config libgtk-3-dev libsecret-1-dev liblzma-dev curl jq
|
|
||||||
|
|
||||||
- name: Install Flutter SDK
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
FLUTTER_HOME="$HOME/flutter"
|
|
||||||
# Avoid git ownership issues when Flutter checks out deps.
|
|
||||||
git config --global --add safe.directory "$FLUTTER_HOME" || true
|
|
||||||
if [ ! -x "$FLUTTER_HOME/bin/flutter" ]; then
|
|
||||||
rm -rf "$FLUTTER_HOME"
|
|
||||||
curl -fsSL -o /tmp/flutter.tar.xz "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${FLUTTER_VERSION}-stable.tar.xz"
|
|
||||||
tar -C "$HOME" -xf /tmp/flutter.tar.xz
|
|
||||||
fi
|
|
||||||
echo "$FLUTTER_HOME/bin" >> "$GITHUB_PATH"
|
|
||||||
"$FLUTTER_HOME/bin/flutter" --version
|
|
||||||
|
|
||||||
- name: Allow all git directories (CI)
|
- name: Allow all git directories (CI)
|
||||||
run: git config --global --add safe.directory '*'
|
run: git config --global --add safe.directory '*'
|
||||||
|
|
||||||
@@ -275,38 +252,12 @@ jobs:
|
|||||||
|
|
||||||
web-build:
|
web-build:
|
||||||
runs-on:
|
runs-on:
|
||||||
- mileograph
|
- tgj-arc
|
||||||
needs: meta
|
needs: meta
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Install OS deps (Web)
|
|
||||||
run: |
|
|
||||||
if command -v sudo >/dev/null 2>&1; then
|
|
||||||
SUDO="sudo"
|
|
||||||
else
|
|
||||||
SUDO=""
|
|
||||||
fi
|
|
||||||
$SUDO apt-get update
|
|
||||||
$SUDO apt-get install -y unzip xz-utils zip libstdc++6 liblzma-dev curl jq docker.io
|
|
||||||
if ! docker info >/dev/null 2>&1; then
|
|
||||||
$SUDO systemctl start docker 2>/dev/null || $SUDO service docker start 2>/dev/null || true
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Install Flutter SDK
|
|
||||||
run: |
|
|
||||||
set -euo pipefail
|
|
||||||
FLUTTER_HOME="$HOME/flutter"
|
|
||||||
git config --global --add safe.directory "$FLUTTER_HOME" || true
|
|
||||||
if [ ! -x "$FLUTTER_HOME/bin/flutter" ]; then
|
|
||||||
rm -rf "$FLUTTER_HOME"
|
|
||||||
curl -fsSL -o /tmp/flutter.tar.xz "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${FLUTTER_VERSION}-stable.tar.xz"
|
|
||||||
tar -C "$HOME" -xf /tmp/flutter.tar.xz
|
|
||||||
fi
|
|
||||||
echo "$FLUTTER_HOME/bin" >> "$GITHUB_PATH"
|
|
||||||
"$FLUTTER_HOME/bin/flutter" --version
|
|
||||||
|
|
||||||
- name: Allow all git directories (CI)
|
- name: Allow all git directories (CI)
|
||||||
run: git config --global --add safe.directory '*'
|
run: git config --global --add safe.directory '*'
|
||||||
|
|
||||||
@@ -330,50 +281,37 @@ jobs:
|
|||||||
name: web-build
|
name: web-build
|
||||||
path: app-web.tar.gz
|
path: app-web.tar.gz
|
||||||
|
|
||||||
- name: Compute web image tags
|
- name: Set up docker buildx
|
||||||
id: web_meta
|
uses: docker/setup-buildx-action@v3
|
||||||
env:
|
|
||||||
BASE_VERSION: ${{ needs.meta.outputs.base_version }}
|
|
||||||
DEV_SUFFIX: ${{ needs.meta.outputs.dev_suffix }}
|
|
||||||
run: |
|
|
||||||
IMAGE="${WEB_IMAGE}"
|
|
||||||
TAG=""
|
|
||||||
ALIAS=""
|
|
||||||
if [ "${GITHUB_REF}" = "refs/heads/dev" ]; then
|
|
||||||
TAG="${BASE_VERSION}${DEV_SUFFIX}"
|
|
||||||
ALIAS="dev"
|
|
||||||
elif [ "${GITHUB_REF}" = "refs/heads/master" ]; then
|
|
||||||
TAG="${BASE_VERSION}"
|
|
||||||
ALIAS="latest"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "image=${IMAGE}" >> "$GITHUB_OUTPUT"
|
- name: Docker meta
|
||||||
echo "tag=${TAG}" >> "$GITHUB_OUTPUT"
|
id: dmeta
|
||||||
echo "alias=${ALIAS}" >> "$GITHUB_OUTPUT"
|
uses: docker/metadata-action@v5
|
||||||
|
with:
|
||||||
|
images: ${{ env.REGISTRY }}/petegregoryy/railframe-web
|
||||||
|
flavor: latest=false
|
||||||
|
tags: |
|
||||||
|
type=sha,prefix=
|
||||||
|
type=raw,value=${{ needs.meta.outputs.base_version }}${{ needs.meta.outputs.dev_suffix }}
|
||||||
|
|
||||||
- name: Login to registry
|
- name: Login to the docker registry
|
||||||
if: ${{ secrets.DOCKERHUB_TOKEN != '' && steps.web_meta.outputs.tag != '' }}
|
uses: docker/login-action@v3
|
||||||
env:
|
with:
|
||||||
REGISTRY_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
|
registry: ${{ env.REGISTRY }}
|
||||||
run: |
|
username: petegregoryy
|
||||||
echo "$REGISTRY_TOKEN" | docker login git.tgj.services -u petegregoryy --password-stdin
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Build and push web image
|
- name: Build and push
|
||||||
if: ${{ secrets.DOCKERHUB_TOKEN != '' && steps.web_meta.outputs.tag != '' }}
|
id: docker_build
|
||||||
env:
|
uses: docker/build-push-action@v6
|
||||||
IMAGE: ${{ steps.web_meta.outputs.image }}
|
with:
|
||||||
TAG: ${{ steps.web_meta.outputs.tag }}
|
file: Dockerfile.web
|
||||||
ALIAS: ${{ steps.web_meta.outputs.alias }}
|
context: .
|
||||||
run: |
|
push: true
|
||||||
docker buildx create --name buildx --driver=docker-container --use || docker buildx use buildx
|
tags: ${{ steps.dmeta.outputs.tags }}
|
||||||
TAG_ARGS=(-t "${IMAGE}:${TAG}")
|
labels: ${{ steps.dmeta.outputs.labels }}
|
||||||
if [ -n "$ALIAS" ]; then
|
cache-from: type=registry,ref=${{ env.REGISTRY }}/petegregoryy/railframe-web:buildcache-dev
|
||||||
TAG_ARGS+=(-t "${IMAGE}:${ALIAS}")
|
cache-to: type=registry,ref=${{ env.REGISTRY }}/petegregoryy/railframe-web:buildcache-dev,mode=max
|
||||||
fi
|
|
||||||
docker buildx build --builder buildx --platform linux/amd64 \
|
|
||||||
-f Dockerfile.web \
|
|
||||||
--push \
|
|
||||||
"${TAG_ARGS[@]}" .
|
|
||||||
|
|
||||||
release-dev:
|
release-dev:
|
||||||
runs-on:
|
runs-on:
|
||||||
|
|||||||
@@ -324,6 +324,14 @@ extension _NewEntryDraftLogic on _NewEntryPageState {
|
|||||||
"distance": _routeResult!.distance,
|
"distance": _routeResult!.distance,
|
||||||
},
|
},
|
||||||
"tractionItems": _serializeTractionItems(),
|
"tractionItems": _serializeTractionItems(),
|
||||||
|
"shareUserIds": _shareUserIds.toList(),
|
||||||
|
"shareUsers": _shareUsers
|
||||||
|
.map((u) => {
|
||||||
|
"user_id": u.userId,
|
||||||
|
"username": u.username,
|
||||||
|
"full_name": u.fullName,
|
||||||
|
})
|
||||||
|
.toList(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -350,6 +350,7 @@ class HomepageStats {
|
|||||||
final List<YearlyMileage> yearlyMileage;
|
final List<YearlyMileage> yearlyMileage;
|
||||||
final List<LocoSummary> topLocos;
|
final List<LocoSummary> topLocos;
|
||||||
final List<LeaderboardEntry> leaderboard;
|
final List<LeaderboardEntry> leaderboard;
|
||||||
|
final List<LeaderboardEntry> friendsLeaderboard;
|
||||||
final List<TripSummary> trips;
|
final List<TripSummary> trips;
|
||||||
final int legCount;
|
final int legCount;
|
||||||
final UserData? user;
|
final UserData? user;
|
||||||
@@ -359,6 +360,7 @@ class HomepageStats {
|
|||||||
required this.yearlyMileage,
|
required this.yearlyMileage,
|
||||||
required this.topLocos,
|
required this.topLocos,
|
||||||
required this.leaderboard,
|
required this.leaderboard,
|
||||||
|
required this.friendsLeaderboard,
|
||||||
required this.trips,
|
required this.trips,
|
||||||
required this.legCount,
|
required this.legCount,
|
||||||
this.user,
|
this.user,
|
||||||
@@ -370,6 +372,17 @@ class HomepageStats {
|
|||||||
final totalMileage = mileageData is Map && mileageData['mileage'] != null
|
final totalMileage = mileageData is Map && mileageData['mileage'] != null
|
||||||
? (mileageData['mileage'] as num).toDouble()
|
? (mileageData['mileage'] as num).toDouble()
|
||||||
: 0.0;
|
: 0.0;
|
||||||
|
List<LeaderboardEntry> parseLeaderboard(dynamic raw) {
|
||||||
|
if (raw is List) {
|
||||||
|
return raw
|
||||||
|
.whereType<Map>()
|
||||||
|
.map((e) => LeaderboardEntry.fromJson(
|
||||||
|
e.map((k, v) => MapEntry(k.toString(), v)),
|
||||||
|
))
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
return const [];
|
||||||
|
}
|
||||||
return HomepageStats(
|
return HomepageStats(
|
||||||
totalMileage: totalMileage,
|
totalMileage: totalMileage,
|
||||||
yearlyMileage: (json['yearly_mileage'] as List? ?? [])
|
yearlyMileage: (json['yearly_mileage'] as List? ?? [])
|
||||||
@@ -378,9 +391,9 @@ class HomepageStats {
|
|||||||
topLocos: (json['top_locos'] as List? ?? [])
|
topLocos: (json['top_locos'] as List? ?? [])
|
||||||
.map((e) => LocoSummary.fromJson(e))
|
.map((e) => LocoSummary.fromJson(e))
|
||||||
.toList(),
|
.toList(),
|
||||||
leaderboard: (json['leaderboard_data'] as List? ?? [])
|
leaderboard: parseLeaderboard(json['leaderboard_data'] ?? json['leaderboard']),
|
||||||
.map((e) => LeaderboardEntry.fromJson(e))
|
friendsLeaderboard:
|
||||||
.toList(),
|
parseLeaderboard(json['friends_leaderboard'] ?? json['friendsLeaderboard']),
|
||||||
trips: (json['trip_data'] as List? ?? [])
|
trips: (json['trip_data'] as List? ?? [])
|
||||||
.map((e) => TripSummary.fromJson(e))
|
.map((e) => TripSummary.fromJson(e))
|
||||||
.toList(),
|
.toList(),
|
||||||
|
|||||||
@@ -169,10 +169,12 @@ class DataService extends ChangeNotifier {
|
|||||||
_homepageStats = HomepageStats.fromJson(json);
|
_homepageStats = HomepageStats.fromJson(json);
|
||||||
_trips = [...(_homepageStats?.trips ?? const [])]
|
_trips = [...(_homepageStats?.trips ?? const [])]
|
||||||
..sort(TripSummary.compareByDateDesc);
|
..sort(TripSummary.compareByDateDesc);
|
||||||
|
_friendsLeaderboard = _homepageStats?.friendsLeaderboard ?? [];
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
debugPrint('Failed to fetch homepage stats: $e');
|
debugPrint('Failed to fetch homepage stats: $e');
|
||||||
_homepageStats = null;
|
_homepageStats = null;
|
||||||
_trips = [];
|
_trips = [];
|
||||||
|
_friendsLeaderboard = [];
|
||||||
} finally {
|
} finally {
|
||||||
_isHomepageLoading = false;
|
_isHomepageLoading = false;
|
||||||
_notifyAsync();
|
_notifyAsync();
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
|
|||||||
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
|
||||||
# In Windows, build-name is used as the major, minor, and patch parts
|
# In Windows, build-name is used as the major, minor, and patch parts
|
||||||
# of the product and file versions while build-number is used as the build suffix.
|
# of the product and file versions while build-number is used as the build suffix.
|
||||||
version: 0.6.2+5
|
version: 0.6.3+6
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ^3.8.1
|
sdk: ^3.8.1
|
||||||
|
|||||||
Reference in New Issue
Block a user