liyi 13af3c02a2
Some checks failed
Flutter Build - Sky Dev / Build Android for Sky (dev) (push) Failing after 8m47s
fix: 测试ci
2025-09-23 10:11:29 +08:00

123 lines
3.9 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

name: Flutter Build - Sky Dev
on:
push:
branches:
- develop_sky
jobs:
build-android:
name: Build Android for Sky (dev)
runs-on: sky
env:
FLAVOR: sky_dev
MAIN_FILE: lib/main_sky_dev.dart
BUILD_TYPE: dev
steps:
- name: Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 0 # 获取全部历史,用于计算 commits
- name: Determine Version
id: version
run: |
# 获取上一个 tag格式 v1.4.598_sky
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v1.0.0_sky")
echo "LAST_TAG=$LAST_TAG"
# 提取基础版本号 v1.4.598
BASE_VERSION=$(echo "$LAST_TAG" | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' | head -1)
if [ -z "$BASE_VERSION" ]; then
BASE_VERSION="v1.0.0"
fi
# 分割版本号
MAJOR=$(echo $BASE_VERSION | cut -d'.' -f1 | sed 's/v//')
MINOR=$(echo $BASE_VERSION | cut -d'.' -f2)
PATCH=$(echo $BASE_VERSION | cut -d'.' -f3)
# 计算从上个 tag 到现在的唯一 commit messages 数量
COMMIT_COUNT=$(git log --pretty=%B "${LAST_TAG}.." | grep -v '^$' | sort -u | wc -l | tr -d ' ')
# 新 patch = 原 patch + commit 数
NEW_PATCH=$((PATCH + COMMIT_COUNT))
# 构造新版本号
NEXT_VERSION="v${MAJOR}.${MINOR}.${NEW_PATCH}"
# 带环境标识的完整版本
NEXT_VERSION_FULL="${NEXT_VERSION}_${FLAVOR}"
echo "NEXT_VERSION=$NEXT_VERSION" >> $GITEA_ENV
echo "NEXT_VERSION_FULL=$NEXT_VERSION_FULL" >> $GITEA_ENV
echo "BUILD_NUMBER=$NEW_PATCH" >> $GITEA_ENV
echo "✅ Next version: $NEXT_VERSION_FULL (Build: $NEW_PATCH)"
- name: Setup Flutter
run: flutter pub get
- name: Clean Project
run: flutter clean
- name: Build APK (${FLAVOR})
run: |
flutter build apk \
--no-tree-shake-icons \
--flavor ${FLAVOR} \
-t ${MAIN_FILE} \
--build-number=${{ env.BUILD_NUMBER }} \
--build-name=${{ env.NEXT_VERSION }}
- name: Build AppBundle (sky flavor, dev mode)
run: |
flutter build appbundle \
--no-tree-shake-icons \
--flavor sky \
-t lib/main_sky_lite.dart \
--build-number=${{ env.BUILD_NUMBER }} \
--build-name=${{ env.NEXT_VERSION }}
- name: Prepare Output Directory
run: |
mkdir -p build/output
# 重命名 APK
mv build/app/outputs/flutter-apk/app-${{ env.FLAVOR }}-release.apk \
build/output/starlock-sky-${{ env.BUILD_TYPE }}-${{ env.NEXT_VERSION_FULL }}.apk
# 重命名 AAB
mv build/app/outputs/bundle/skyRelease/app-sky-release.aab \
build/output/starlock-sky-${{ env.BUILD_TYPE }}-${{ env.NEXT_VERSION_FULL }}.aab
- name: Build iOS (${{ env.FLAVOR }})
run: |
flutter build ios \
--no-codesign \
--flavor ${FLAVOR} \
-t ${MAIN_FILE} \
--build-number=${{ env.BUILD_NUMBER }} \
--build-name=${{ env.NEXT_VERSION }}
- name: Rename IPA
run: |
mkdir -p build/output
cp -r build/ios/ipa/*.ipa build/output/starlock-sky-${{ env.BUILD_TYPE }}-${{ env.NEXT_VERSION_FULL }}.ipa
- name: List Outputs
run: ls -la build/output/
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: flutter-builds-${{ env.NEXT_VERSION_FULL }}
path: build/output/
- name: Create and Push New Tag
run: |
NEW_TAG=${{ env.NEXT_VERSION_FULL }}
git config user.name "Gitea Runner"
git config user.email "runner@gitea.local"
git tag "$NEW_TAG"
git push origin "$NEW_TAG" || echo "Tag might already exist"