feat: dev,pre环境打包采用未来真实版本号.

This commit is contained in:
Liuyf 2024-10-19 13:31:43 +08:00
parent 70619b94be
commit 44bb803754
4 changed files with 54 additions and 14 deletions

View File

@ -1,6 +1,6 @@
stages: stages:
- test - test
- generate_tag - generate_tag_or_version
- build-artifacts - build-artifacts
- release-artifacts - release-artifacts
- notification - notification
@ -20,13 +20,22 @@ variables:
- if: $CI_COMMIT_BRANCH =~ /feat_[a-zA-Z]+/ - if: $CI_COMMIT_BRANCH =~ /feat_[a-zA-Z]+/
- if: $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z]+\.[0-9]+)?$/ - if: $CI_COMMIT_TAG =~ /^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z]+\.[0-9]+)?$/
.tag_rule: .generate_tag_rule:
tags: tags:
- macos - macos
- flutter - flutter
rules: rules:
- if: $CI_COMMIT_BRANCH == "master" - if: $CI_COMMIT_BRANCH == "master"
.generate_next_version_rule:
tags:
- macos
- flutter
rules:
- if: $CI_COMMIT_BRANCH == "develop"
- if: $CI_COMMIT_BRANCH == "release"
- if: $CI_COMMIT_BRANCH =~ /feat_[a-zA-Z]+/
.print_env: .print_env:
stage: test stage: test
extends: .build_rule extends: .build_rule
@ -39,6 +48,9 @@ variables:
.setup_fastlane_android: .setup_fastlane_android:
extends: .build_rule extends: .build_rule
before_script: before_script:
- ls -li
- export NEXT_VERSION="$(cat app_new.version)"
- export NEXT_VERSION="$(cat app_new.version)"
- flutter pub get - flutter pub get
- bundle install --gemfile android/Gemfile --quiet - bundle install --gemfile android/Gemfile --quiet
@ -46,6 +58,7 @@ variables:
.setup_fastlane_ios: .setup_fastlane_ios:
extends: .build_rule extends: .build_rule
before_script: before_script:
- ls -li
- flutter pub get - flutter pub get
- bundle install --gemfile ios/Gemfile --quiet - bundle install --gemfile ios/Gemfile --quiet
@ -58,9 +71,9 @@ test_lint_check:
- macos - macos
- flutter - flutter
git_tag: generate_git_tag:
stage: generate_tag stage: generate_tag_or_version
extends: .tag_rule extends: .generate_tag_rule
before_script: before_script:
- project_url=$(echo $CI_PROJECT_URL | sed 's/http:\/\///') - project_url=$(echo $CI_PROJECT_URL | sed 's/http:\/\///')
- echo "project_url:$project_url" - echo "project_url:$project_url"
@ -68,6 +81,15 @@ git_tag:
script: script:
- bash tag_generator.sh - bash tag_generator.sh
generate_next_version:
stage: generate_tag_or_version
extends: .generate_next_version_rule
script:
- bash tag_generator.sh generate_version
cache:
paths:
- app_new.version
build_android: build_android:
stage: build-artifacts stage: build-artifacts
extends: .setup_fastlane_android extends: .setup_fastlane_android

View File

@ -18,10 +18,12 @@ default_platform(:android)
$env_key_project_root = 'ENV_BUILD_WORKSPACE' $env_key_project_root = 'ENV_BUILD_WORKSPACE'
$env_current_branch = 'ENV_BUILD_BRANCH' $env_current_branch = 'ENV_BUILD_BRANCH'
$env_current_tag = 'ENV_BUILD_TAG' $env_current_tag = 'ENV_BUILD_TAG'
$env_next_version = 'NEXT_VERSION'
$path_dir_build = File.join(ENV[$env_key_project_root],'') $path_dir_build = File.join(ENV[$env_key_project_root],'')
$current_branch = ENV[$env_current_branch] $current_branch = ENV[$env_current_branch]
$current_tag = ENV[$env_current_tag] $current_tag = ENV[$env_current_tag]
$next_version = ENV[$env_next_version]
$path_apk_output_dir = File.join($path_dir_build, 'build/app/outputs/flutter-apk') $path_apk_output_dir = File.join($path_dir_build, 'build/app/outputs/flutter-apk')
$path_bundle_output_dir = File.join($path_dir_build, 'build/app/outputs/bundle') $path_bundle_output_dir = File.join($path_dir_build, 'build/app/outputs/bundle')
@ -60,7 +62,7 @@ platform :android do
print_log "build #{flavor} on #{env}" print_log "build #{flavor} on #{env}"
build_number = Time.now.strftime("%Y%m%d%H") build_number = Time.now.strftime("%Y%m%d%H")
print_log "BuildNo #{build_number}" print_log "BuildNo #{build_number}"
build_version = '1.0.0' build_version = $next_version
print_log "build_version #{build_version}" print_log "build_version #{build_version}"
commit_hash = last_git_commit commit_hash = last_git_commit
short_hash = commit_hash[:abbreviated_commit_hash] short_hash = commit_hash[:abbreviated_commit_hash]

View File

@ -47,10 +47,12 @@ $env_current_tag = 'ENV_BUILD_TAG'
$env_key_fastlane_apple_auth_key = 'APPLE_AUTH_CONTENT' $env_key_fastlane_apple_auth_key = 'APPLE_AUTH_CONTENT'
$env_key_fastlane_apple_auth_issuer_key = 'APPLE_AUTH_ISSUER_ID' $env_key_fastlane_apple_auth_issuer_key = 'APPLE_AUTH_ISSUER_ID'
$env_key_fastlane_apple_auth_id_key = 'APPLE_AUTH_KEY_ID' $env_key_fastlane_apple_auth_id_key = 'APPLE_AUTH_KEY_ID'
$env_next_version = 'NEXT_VERSION'
$path_dir_build = File.join(ENV[$env_key_project_root], '') $path_dir_build = File.join(ENV[$env_key_project_root], '')
$current_branch = ENV[$env_current_branch] $current_branch = ENV[$env_current_branch]
$current_tag = ENV[$env_current_tag] $current_tag = ENV[$env_current_tag]
$next_version = ENV[$env_next_version]
$filename_ipa_default = 'app-starlock.ipa' $filename_ipa_default = 'app-starlock.ipa'
$filename_beta_ipa_copy = 'app-starlock-'+$current_branch+'.ipa' $filename_beta_ipa_copy = 'app-starlock-'+$current_branch+'.ipa'
@ -77,7 +79,7 @@ platform :ios do
print_log "build #{flavor} on #{env}" print_log "build #{flavor} on #{env}"
build_number = Time.now.strftime("%Y%m%d%H") build_number = Time.now.strftime("%Y%m%d%H")
print_log "Build Commits #{build_number}" print_log "Build Commits #{build_number}"
build_version = '1.0.0'; # Time.now.strftime("%Y%m%d%H%M%S") build_version = $next_version # Time.now.strftime("%Y%m%d%H%M%S")
print_log "build_version #{build_version}" print_log "build_version #{build_version}"
commit_hash = last_git_commit commit_hash = last_git_commit
short_hash = commit_hash[:abbreviated_commit_hash] short_hash = commit_hash[:abbreviated_commit_hash]

View File

@ -5,6 +5,7 @@ URL=$CI_API_V4_URL
TOKEN=$GITLAB_ACCESS_TOKEN TOKEN=$GITLAB_ACCESS_TOKEN
PROJECT_ID=$CI_PROJECT_ID PROJECT_ID=$CI_PROJECT_ID
next_tag="" next_tag=""
newest_tag=""
echo "PRIVATE-TOKEN: $TOKEN $URL/projects/$PROJECT_ID/repository/tags" echo "PRIVATE-TOKEN: $TOKEN $URL/projects/$PROJECT_ID/repository/tags"
tags_json=$(curl -H "Content-Type: application/json" -H "PRIVATE-TOKEN: $TOKEN" "$URL/projects/$PROJECT_ID/repository/tags") tags_json=$(curl -H "Content-Type: application/json" -H "PRIVATE-TOKEN: $TOKEN" "$URL/projects/$PROJECT_ID/repository/tags")
#echo "tags_json:$tags_json\n" #echo "tags_json:$tags_json\n"
@ -16,9 +17,14 @@ else
newest_tag=$(echo "$tags" | head -n 1) newest_tag=$(echo "$tags" | head -n 1)
IFS='.' read -r major minor patch <<< "$newest_tag" IFS='.' read -r major minor patch <<< "$newest_tag"
major="${major#v}" major="${major#v}"
echo "newest_tag:$newest_tag-second_newest_tag$second_newest_tag\n" compare_json=""
# 比较两个tag之间的commits if [[ "$1" == "generate_tag" ]];then
compare_json=$(curl -s --header "PRIVATE-TOKEN: $TOKEN" "$URL/projects/$PROJECT_ID/repository/compare?from=$newest_tag&to=master") echo "generate_tag:$newest_tag-to-master\n"
compare_json=$(curl -s --header "PRIVATE-TOKEN: $TOKEN" "$URL/projects/$PROJECT_ID/repository/compare?from=$newest_tag&to=master")
elif [[ "$1" == "generate_version" ]]; then
echo "generate_version:master-to-$CI_COMMIT_BRANCH\n"
compare_json=$(curl -s --header "PRIVATE-TOKEN: $TOKEN" "$URL/projects/$PROJECT_ID/repository/compare?from=master&to=$CI_COMMIT_BRANCH")
fi
echo "compare_json:$compare_json\n" echo "compare_json:$compare_json\n"
while IFS= read -r commit_json; do while IFS= read -r commit_json; do
# 使用 jq 解析每一行的 JSON 对象 # 使用 jq 解析每一行的 JSON 对象
@ -36,12 +42,20 @@ else
fi fi
done < <(echo "$compare_json" | jq -c '.commits[] | {id: .id, message: .message}') done < <(echo "$compare_json" | jq -c '.commits[] | {id: .id, message: .message}')
next_tag="v$major.$minor.$patch" next_tag="v$major.$minor.$patch"
fi
echo "New Tag:$newest_tag;New version: $next_tag;command: $1"
if [[ "$1" == "generate_tag" ]];then
if [ "$next_tag" == "$newest_tag" ]; then if [ "$next_tag" == "$newest_tag" ]; then
echo "no change from master,skip to generate tag" echo "no change from master,skip to generate tag"
exit 0 exit 0
fi fi
git config user.name
git tag $next_tag
git push -u origin $next_tag
echo "generate tag: $next_tag"
elif [[ "$1" == "generate_version" ]]; then
export NEXT_VERSION="$next_tag"
echo "generate version: $NEXT_VERSION"
fi fi
echo "New version: $next_tag" echo "$next_tag" > app_new.version
git config user.name
git tag $next_tag
git push -u origin $next_tag