liyi c41e1ebd9d
Some checks failed
Flutter Build - Sky / 🧮 Determine Version (push) Failing after 1m30s
Flutter Build - Sky / 📦 Build APK (push) Has been skipped
Flutter Build - Sky / 📦 Build AAB (push) Has been skipped
Flutter Build - Sky / 🍎 Build iOS (push) Has been skipped
Flutter Build - Sky / 🏷️ Create Tag & Notify (push) Has been skipped
fix: 测试ci
2025-09-23 10:27:05 +08:00

146 lines
4.7 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
on:
push:
branches:
- develop_sky
jobs:
# 第一个 job只负责计算版本号所有 job 依赖它)
determine-version:
name: 🧮 Determine Version
runs-on: sky
outputs:
next_version: ${{ steps.version.outputs.next_version }}
next_version_full: ${{ steps.version.outputs.next_version_full }}
build_number: ${{ steps.version.outputs.build_number }}
steps:
- name: Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Determine Version
id: version
run: |
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v1.0.0_sky")
BASE_VERSION=$(echo "$LAST_TAG" | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' | head -1)
[ -z "$BASE_VERSION" ] && BASE_VERSION="v1.0.0"
MAJOR=$(echo $BASE_VERSION | cut -d'.' -f1 | sed 's/v//')
MINOR=$(echo $BASE_VERSION | cut -d'.' -f2)
PATCH=$(echo $BASE_VERSION | cut -d'.' -f3)
COMMIT_COUNT=$(git log --pretty=%B "${LAST_TAG}.." | grep -v '^$' | sort -u | wc -l | tr -d ' ')
NEW_PATCH=$((PATCH + COMMIT_COUNT))
NEXT_VERSION="v${MAJOR}.${MINOR}.${NEW_PATCH}"
NEXT_VERSION_FULL="${NEXT_VERSION}_sky_dev"
BUILD_NUMBER=$NEW_PATCH
echo "NEXT_VERSION=$NEXT_VERSION" >> $GITEA_ENV
echo "NEXT_VERSION_FULL=$NEXT_VERSION_FULL" >> $GITEA_ENV
echo "BUILD_NUMBER=$BUILD_NUMBER" >> $GITEA_ENV
# 输出给其他 job 使用
echo "::set-output name=next_version::$NEXT_VERSION"
echo "::set-output name=next_version_full::$NEXT_VERSION_FULL"
echo "::set-output name=build_number::$BUILD_NUMBER"
# 并行 Job 1Android APK
build-apk:
name: 📦 Build APK
needs: determine-version
runs-on: sky
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Flutter
run: flutter pub get
- name: Build APK
run: |
flutter build apk \
--no-tree-shake-icons \
--flavor sky \
-t lib/main_sky_dev.dart \
--build-number=${{ needs.determine-version.outputs.build_number }} \
--build-name=${{ needs.determine-version.outputs.next_version }}
- name: Upload APK Artifact
uses: actions/upload-artifact@v4
with:
name: starlock-sky-dev-${{ needs.determine-version.outputs.next_version_full }}.apk
path: build/app/outputs/flutter-apk/app-sky_dev-release.apk
# 并行 Job 2Android AAB
build-aab:
name: 📦 Build AAB
needs: determine-version
runs-on: sky
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Flutter
run: flutter pub get
- name: Build App Bundle
run: |
flutter build appbundle \
--no-tree-shake-icons \
--flavor sky \
-t lib/main_sky_dev.dart \
--build-number=${{ needs.determine-version.outputs.build_number }} \
--build-name=${{ needs.determine-version.outputs.next_version }}
- name: Upload AAB Artifact
uses: actions/upload-artifact@v4
with:
name: starlock-sky-dev-${{ needs.determine-version.outputs.next_version_full }}.aab
path: build/app/outputs/bundle/skyRelease/app-sky-release.aab
# 并行 Job 3iOS IPA
build-ios:
name: 🍎 Build iOS
needs: determine-version
runs-on: macos # 必须使用 macOS runner
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Flutter
run: flutter pub get
- name: Build iOS
run: |
flutter build ios \
--no-codesign \
--flavor sky \
-t lib/main_sky_dev.dart \
--build-number=${{ needs.determine-version.outputs.build_number }} \
--build-name=${{ needs.determine-version.outputs.next_version }}
- name: Upload IPA Artifact
uses: actions/upload-artifact@v4
with:
name: starlock-sky-dev-${{ needs.determine-version.outputs.next_version_full }}.ipa
path: build/ios/ipa/Runner.ipa
# 最后一个 job汇总并打 tag
publish:
name: 🏷️ Create Tag & Notify
needs: [build-apk, build-aab, build-ios]
runs-on: sky
if: success()
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Create and Push New Tag
run: |
NEW_TAG=${{ needs.determine-version.outputs.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 $NEW_TAG already exists"