Some checks failed
Flutter CI - Basic Setup / 🔧 Basic Setup (push) Failing after 1m30s
108 lines
3.9 KiB
YAML
108 lines
3.9 KiB
YAML
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."
|