From 13af3c02a2185ee8a68bd32fab30f7a3ccb0dc56 Mon Sep 17 00:00:00 2001 From: liyi Date: Tue, 23 Sep 2025 10:11:29 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=B5=8B=E8=AF=95ci?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/ci.yml | 106 ++++++++++++++++++++++++++++++---------- 1 file changed, 80 insertions(+), 26 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 16598853..a8d71291 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -10,60 +10,114 @@ jobs: 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: Setup Environment Variables + - name: Determine Version + id: version run: | - echo "NEXT_VERSION=1.0.0" >> $GITEA_ENV - echo "BUILD_NUMBER=1" >> $GITEA_ENV + # 获取上一个 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" - - name: Flutter Pub Get + # 提取基础版本号 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 (sky_dev flavor) + - name: Build APK (${FLAVOR}) run: | flutter build apk \ --no-tree-shake-icons \ - --release \ - --flavor sky_dev \ - -t lib/main_sky_dev.dart \ + --flavor ${FLAVOR} \ + -t ${MAIN_FILE} \ --build-number=${{ env.BUILD_NUMBER }} \ --build-name=${{ env.NEXT_VERSION }} - - name: Rename APK - run: | - mkdir -p build/output - mv build/app/outputs/flutter-apk/app-sky_dev-release.apk \ - build/output/starlock-sky-preview-${{ env.NEXT_VERSION }}.apk - - - name: Build AppBundle (Release) + - name: Build AppBundle (sky flavor, dev mode) run: | flutter build appbundle \ --no-tree-shake-icons \ - --release \ --flavor sky \ -t lib/main_sky_lite.dart \ --build-number=${{ env.BUILD_NUMBER }} \ --build-name=${{ env.NEXT_VERSION }} - - name: Rename AAB + - name: Prepare Output Directory run: | - mkdir -p build/output/skyRelease - mv build/app/outputs/bundle/release/app-sky-release.aab \ - build/output/skyRelease/starlock-sky-release-${{ env.NEXT_VERSION }}.aab + 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: List Output Files + - name: Build iOS (${{ env.FLAVOR }}) run: | - ls -la build/output/ + flutter build ios \ + --no-codesign \ + --flavor ${FLAVOR} \ + -t ${MAIN_FILE} \ + --build-number=${{ env.BUILD_NUMBER }} \ + --build-name=${{ env.NEXT_VERSION }} - - name: Upload Artifacts (Optional) + - 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 }} - path: | - build/output/ \ No newline at end of file + 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" \ No newline at end of file