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 " ✅ Flutter environment output" echo " ✅ CI environment output" echo "" echo "🔚 No further operations will be performed."