Workflow config file is invalid. Please check your config file: yaml: line 113: did not find expected '-' indicator

223 lines
7.8 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 CI - Basic Setup
on:
push:
branches:
- develop_sky
jobs:
# 基础设置任务:检出代码、提取版本号
basic-setup:
name: 🔧 Basic Setup
runs-on: sky
steps:
# 1. 检出代码
- name: Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 0
# 2. 提取版本号
- name: Extract Version
id: version
run: |
# 获取最新的tag按版本号排序匹配vX.X.X_sky格式
LATEST_TAG=$(git tag --list "v*.*.*_sky" --sort=-version:refname | head -1)
# 如果没有找到tag使用默认值
if [ -z "$LATEST_TAG" ]; then
LATEST_TAG="v1.0.0_sky"
echo "📌 No tags found, using default: $LATEST_TAG"
else
echo "📌 Latest tag found: $LATEST_TAG"
fi
# 提取基础版本号去除_sky后缀
BASE_VERSION=$(echo "$LATEST_TAG" | grep -oE 'v[0-9]+\.[0-9]+\.[0-9]+' | head -1)
[ -z "$BASE_VERSION" ] && BASE_VERSION="v1.0.0"
echo "📌 Base version: $BASE_VERSION"
# 解析版本号各部分
MAJOR=$(echo $BASE_VERSION | cut -d'.' -f1 | sed 's/v//')
MINOR=$(echo $BASE_VERSION | cut -d'.' -f2)
PATCH=$(echo $BASE_VERSION | cut -d'.' -f3)
echo "📌 Version components: Major=$MAJOR, Minor=$MINOR, Patch=$PATCH"
# 计算下一个版本号
echo "📊 Calculating next version..."
# 获取当前提交与最新tag之间的所有提交消息
COMMIT_MESSAGES=$(git log --oneline --format=%s $LATEST_TAG..HEAD 2>/dev/null || echo "")
# 统计需要递增的提交次数(过滤重复的提交消息)
INCREMENT_COUNT=0
if [ -n "$COMMIT_MESSAGES" ]; then
# 使用awk过滤重复的提交消息并计数
UNIQUE_MESSAGES=$(echo "$COMMIT_MESSAGES" | awk '!seen[$0]++')
INCREMENT_COUNT=$(echo "$UNIQUE_MESSAGES" | wc -l)
echo "📝 Found $INCREMENT_COUNT unique commit(s) since last tag"
else
echo "📝 No new commits since last tag"
fi
# 计算新的版本号
NEW_PATCH=$((PATCH + INCREMENT_COUNT))
NEW_MINOR=$MINOR
NEW_MAJOR=$MAJOR
# 处理版本号进位逻辑
if [ $NEW_PATCH -ge 1000 ]; then
NEW_MINOR=$((NEW_MINOR + NEW_PATCH / 1000))
NEW_PATCH=$((NEW_PATCH % 1000))
echo "🔄 Patch version overflow, incrementing minor version"
fi
if [ $NEW_MINOR -ge 10 ]; then
NEW_MAJOR=$((NEW_MAJOR + NEW_MINOR / 10))
NEW_MINOR=$((NEW_MINOR % 10))
echo "🔄 Minor version overflow, incrementing major version"
fi
# 生成下一个版本号
NEXT_VERSION="v${NEW_MAJOR}.${NEW_MINOR}.${NEW_PATCH}"
NEXT_TAG="${NEXT_VERSION}_sky"
echo "🚀 Next version: $NEXT_VERSION"
echo "🏷️ Next tag: $NEXT_TAG"
echo "📈 Increment count: $INCREMENT_COUNT"
# 输出到Gitea Actions环境变量
echo "NEXT_VERSION=$NEXT_VERSION" >> $GITHUB_ENV
echo "NEXT_TAG=$NEXT_TAG" >> $GITHUB_ENV
echo "INCREMENT_COUNT=$INCREMENT_COUNT" >> $GITHUB_ENV
# 输出版本信息
echo "✅ Version extraction completed"
# 5. 任务完成通知
- name: Task Completion
run: |
echo "🎉 Basic CI setup completed successfully!"
echo ""
echo "📋 Tasks executed:"
echo " ✅ Code checkout"
echo " ✅ Version extraction"
echo ""
echo "🚀 Next steps: Building Flutter artifacts..."
# 构建Flutter制品任务
build-artifacts:
name: 🏗️ Build Flutter Artifacts
runs-on: sky
needs: basic-setup
steps:
# 1. 使用第一个job的检出结果
- name: Use Checked Out Code
run: |
echo "📁 Using code already checked out by basic-setup job"
echo "📊 Current directory: $(pwd)"
ls -la
echo "✅ Ready to build artifacts"
# 2. 检查Flutter环境
- name: Check Flutter Environment
run: |
echo "🔍 Checking Flutter environment..."
flutter --version
echo "✅ Flutter environment is ready"
# 3. 获取版本信息
- name: Get Version Info
id: version-info
run: |
echo "📊 Using version from basic-setup job"
echo "NEXT_VERSION=${{ env.NEXT_VERSION }}"
echo "NEXT_TAG=${{ env.NEXT_TAG }}"
# 4. 构建APK文件
- name: Build APK
run: |
echo "🏗️ Building APK artifact..."
# 格式化文件名sky-star-lock-develop-1-4.609.apk
APK_FILENAME="sky-star-lock-develop-${{ env.NEXT_VERSION }}.apk"
APK_FILENAME=$(echo "$APK_FILENAME" | sed 's/v//g' | sed 's/\./-/g')
APK_FILENAME="sky-star-lock-develop-$APK_FILENAME.apk"
echo "📁 APK filename: $APK_FILENAME"
# 构建APK
flutter build apk --release --flavor sky
# 重命名APK文件
mv build/app/outputs/flutter-apk/app-sky-release.apk "$APK_FILENAME"
echo "✅ APK build completed: $APK_FILENAME"
# 5. 构建AAB文件
- name: Build AAB
run: |
echo "🏗️ Building AAB artifact..."
# 格式化文件名sky-star-lock-develop-1-4.609.aab
AAB_FILENAME="sky-star-lock-develop-${{ env.NEXT_VERSION }}.aab"
AAB_FILENAME=$(echo "$AAB_FILENAME" | sed 's/v//g' | sed 's/\./-/g')
AAB_FILENAME="sky-star-lock-develop-$AAB_FILENAME.aab"
echo "📁 AAB filename: $AAB_FILENAME"
# 构建AAB
flutter build appbundle --release --flavor sky
# 重命名AAB文件
mv build/app/outputs/bundle/skyRelease/app-sky-release.aab "$AAB_FILENAME"
echo "✅ AAB build completed: $AAB_FILENAME"
# 6. 构建iOS IPA文件如果支持iOS构建
- name: Build iOS IPA
if: runner.os == 'macos'
run: |
echo "🏗️ Building iOS IPA artifact..."
# 格式化文件名sky-star-lock-develop-1-4.609.ipa
IPA_FILENAME="sky-star-lock-develop-${{ env.NEXT_VERSION }}.ipa"
IPA_FILENAME=$(echo "$IPA_FILENAME" | sed 's/v//g' | sed 's/\./-/g')
IPA_FILENAME="sky-star-lock-develop-$IPA_FILENAME.ipa"
echo "📁 IPA filename: $IPA_FILENAME"
# 构建iOS IPA
flutter build ipa --release --flavor sky
# 重命名IPA文件
mv build/ios/ipa/*.ipa "$IPA_FILENAME"
echo "✅ iOS IPA build completed: $IPA_FILENAME"
# 7. 上传制品
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: flutter-artifacts-develop
path: |
sky-star-lock-develop-*.apk
sky-star-lock-develop-*.aab
sky-star-lock-develop-*.ipa
retention-days: 30
# 8. 构建完成通知
- name: Build Completion
run: |
echo "🎉 Flutter artifacts build completed successfully!"
echo ""
echo "📦 Artifacts generated:"
echo " ✅ APK: sky-star-lock-develop-*.apk"
echo " ✅ AAB: sky-star-lock-develop-*.aab"
if [ "${{ runner.os }}" == "macos" ]; then
echo " ✅ IPA: sky-star-lock-develop-*.ipa"
fi
echo ""
echo "🏷️ Version: ${{ env.NEXT_VERSION }}"
echo "📁 Files available in artifacts section"