Skip to content

Commit

Permalink
Mod version (orz12#9)
Browse files Browse the repository at this point in the history
* 统计当前分支第一父提交数作为子版本号

* 打印version变量

* 修正version的格式错误

* 修正语法错误

* 检查当前HEAD?

* 检查当前HEAD

* 末端提交应由HEAD改为FETCH_HEAD

* 避免替换Flutter build-number

* 限制仅在push到main分支时触发Action

* Revert "末端提交应由HEAD改为FETCH_HEAD"

This reverts commit df5b6d0.

* 使用参数`fetch-depth: 0`取得所有分支和tags, 改回HEAD作为统计中的末端提交

* 匹配*.*.*+*格式tag

* 修正filter语法错误

* 改为根据上一个tag计算版本号

* 逻辑短路改为if-else结构

* fix typo
  • Loading branch information
VillagerTom authored Jun 2, 2024
1 parent 0ed3f6c commit 6aca1bb
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 22 deletions.
55 changes: 44 additions & 11 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
workflow_dispatch:
push:
branches:
- '*'
- 'main'
paths-ignore:
- '**.md'
- '**.txt'
Expand All @@ -23,19 +23,51 @@ jobs:

steps:
- name: Checkout code
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
fetch-depth: 0

#- name: 获取first parent commit次数
# id: get-first-parent-commit-count
# run: |
# version=$(yq e .version pubspec.yaml | cut -d "+" -f 1)
# recent_release_tag=$(git tag -l | grep $version | egrep -v "[-|+]" || true)
# if [[ "x$recent_release_tag" == "x" ]]; then
# echo "当前版本tag不存在,请手动生成tag."
# exit 1
# fi
# git log --oneline HEAD
# first_parent_commit_count=$(git rev-list --first-parent --count $recent_release_tag..HEAD)
# echo "count=$first_parent_commit_count" >> $GITHUB_OUTPUT

- name: 从tag获取之前的version_code与beta版本号
id: get-previous-codes
run: |
version=$(yq e .version pubspec.yaml | cut -d "+" -f 1)
last_tag=$(git describe --tags | awk -F"-" '{for(i=1;i<=NF-2;i++) printf "%s", $i}')
if $(echo $last_tag | grep -v "+"); then
echo "Tag格式不正确"
exit 1
elif $(echo $last_tag | grep $version); then
echo "当前版本tag不存在,请手动添加tag."
exit 1
fi
version_code=$(echo $last_tag | cut -d "+" -f 2)
beta_code=0$(echo $last_tag | cut -d "+" -f 1 | cut -d "." -f 4)
echo "beta-code=$beta_code" >> $GITHUB_OUTPUT
echo "version-code=$version_code" >> $GITHUB_OUTPUT
- name: 更新版本号
id: version
run: |
# 读取版本号
VERSION=$(yq e .version pubspec.yaml)
# 获取GitHub Actions的run_number
RUN_NUMBER=${{ github.run_number }}

version_name=$(yq e .version pubspec.yaml | cut -d "+" -f 1)
let beta_code=${{ steps.get-previous-codes.outputs.beta-code }}+1
let version_code=${{ steps.get-previous-codes.outputs.version-code }}+1
# 构建新版本号
NEW_VERSION=$(echo $VERSION | awk -F+ -v run_number="$RUN_NUMBER" '{print $1"+"run_number}')
NEW_VERSION=${version_name}-beta.${beta_code}+${version_code}
# 输出新版本号
echo "New version: $NEW_VERSION"
Expand Down Expand Up @@ -105,9 +137,10 @@ jobs:

- name: 重命名应用
run: |
version_name=$(yq e .version pubspec.yaml | cut -d "+" -f 1)
for file in build/app/outputs/flutter-apk/app-*.apk; do
if [[ $file =~ app-(.?*)release.apk ]]; then
new_file_name="build/app/outputs/flutter-apk/Pili-${BASH_REMATCH[1]}${{ needs.update_version.outputs.new_version }}.apk"
new_file_name="build/app/outputs/flutter-apk/Pili-${BASH_REMATCH[1]}${version_name}.apk"
mv "$file" "$new_file_name"
fi
done
Expand Down Expand Up @@ -149,9 +182,9 @@ jobs:
- name: 重命名应用
run: |
DATE=${{ steps.date.outputs.date }}
version_name=$(yq e .version pubspec.yaml | cut -d "+" -f 1)
for file in app.ipa; do
new_file_name="build/Pili-${{ needs.update_version.outputs.new_version }}.ipa"
new_file_name="build/Pili-${version_name}.ipa"
mv "$file" "$new_file_name"
done
Expand Down
30 changes: 19 additions & 11 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ on:
push:
# push tag时触发
tags:
- "v*.*.*"
- "[0-9]+.[0-9]+.[0-9]+*"
- "!*beta*"

# 可以有多个jobs
jobs:
Expand Down Expand Up @@ -47,6 +48,14 @@ jobs:
env:
KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }}

- name: 获取版本号
id: version
run: echo "version=${GITHUB_REF#refs/tags/}" >>$GITHUB_OUTPUT

- name: 修改pubspec.yaml
run: |
sed -i "s/version: .*/version: ${{ steps.version.outputs.version }}/g" pubspec.yaml
- name: flutter build apk
run: flutter build apk --release --split-per-abi
env:
Expand All @@ -61,17 +70,13 @@ jobs:
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD}}

- name: 获取版本号
id: version
run: echo "version=${GITHUB_REF#refs/tags/v}" >>$GITHUB_OUTPUT

# - name: 获取当前日期
# id: date
# run: echo "date=$(date +'%m%d')" >>$GITHUB_OUTPUT

- name: 重命名应用
run: |
# DATE=${{ steps.date.outputs.date }}
for file in build/app/outputs/flutter-apk/app-*.apk; do
if [[ $file =~ app-(.?*)release.apk ]]; then
new_file_name="build/app/outputs/flutter-apk/Pili-${BASH_REMATCH[1]}${{ steps.version.outputs.version }}.apk"
Expand Down Expand Up @@ -100,19 +105,22 @@ jobs:
cache: true
flutter-version: 3.16.5

- name: 获取版本号
id: version
run: echo "version=${GITHUB_REF#refs/tags/}" >>$GITHUB_OUTPUT

- name: 修改pubspec.yaml
run: |
sed -i "s/version: .*/version: ${{ steps.version.outputs.version }}/g" pubspec.yaml
- name: flutter build ipa
run: |
flutter build ios --release --no-codesign
ln -sf ./build/ios/iphoneos Payload
zip -r9 app.ipa Payload/runner.app
- name: 获取版本号
id: version
run: echo "version=${GITHUB_REF#refs/tags/v}" >>$GITHUB_OUTPUT

- name: 重命名应用
run: |
DATE=${{ steps.date.outputs.date }}
for file in app.ipa; do
new_file_name="build/Pili-${{ steps.version.outputs.version }}.ipa"
mv "$file" "$new_file_name"
Expand Down Expand Up @@ -143,7 +151,7 @@ jobs:

- name: Get version
id: version
run: echo "version=${GITHUB_REF#refs/tags/v}" >>$GITHUB_OUTPUT
run: echo "version=${GITHUB_REF#refs/tags/}" >>$GITHUB_OUTPUT

- name: Upload Release
uses: ncipollo/release-action@v1
Expand Down

0 comments on commit 6aca1bb

Please sign in to comment.