مدیریت نسخه های iOS به صورت خودکار و بدون ابزارهای خارجی

Summarize this content to 400 words in Persian Lang
TL;DR:
سریع برو: agvtool –help
فصل 1: یک دیدار مجدد که مدت ها در انتظار آن بودیم
من قبل از تعطیلات، آرام و خوشحال بودم تا اینکه نیاز داشتم SDK را که در محل کارم نگه می دارم منتشر کنم و Fastlane در حال شکستن .xcodeproj بود.این اسکریپت یک نسخه به ازای هر پارامتر دریافت کرد، اما من میخواستم آن را کاملاً خودکار در CI بگذارم، از این لحظه استفاده کردم تا حماسه بازنویسی همه چیز را شروع کنم و هم پروژه خراب و هم خودکار کردن افزایش نسخه را حل کنم.
فصل دوم: رویارویی با اورک ها
استفاده از Fastlane در زمینه من به معنای مدیریت نسخه Ruby و Fastlane است، بنابراین توسعه دهندگان جدید یا هر کسی در تیمی که پروژه را اجرا می کند باید این را نیز پیکربندی کند، از جمله ماشین CI.از آنجایی که من فقط باید SDK را بایگانی و ارسال کنم، Fastlane ضروری نیست، راه حل انتخاب شده انجام همه کارها در اسکریپت پوسته بود.
فصل 3: ورود به موردور
یک اسکریپت برای حکومت بر همه آنها
من آن را به 3 مرحله تقسیم کردم:1 – نسخه پروژه را کشف کنید2 – نسخه را با منطق نسخه های قبلی افزایش دهید3 – نسخه را در پروژه تعریف کنید
در اینجا اولین قدم این است که نسخه فعلی پروژه را پیدا کنید و برای آن از agvtool استفاده کردمبرای دریافت نسخه پروژه ای که استفاده می کنم what-marketing-version و برای دریافت شماره ساخت what-version.agvtool what-marketing-version
پوسته ام:
agv_output=$(agvtool what-marketing-version)
current_version=$(echo “$agv_output” | grep ‘Found CFBundleShortVersionString’ | head -n 1 | sed -E ‘s/.*of “([0-9]+\.[0-9]+\.[0-9]+)”.*/\1/’)
echo “$current_version”
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
با شماره نسخه من فقط منطقی ایجاد کردم که مطابق آنچه پروژه من دنبال می کند آن را افزایش دهم. پچ را تا 9 افزایش دهید، سپس به کوچکترین تا 9 بروید و سپس ماژور را افزایش دهید.
increment_version() {
local version=”$1″
# Divide into (major, minor, patch)
IFS=’.’ read -r major minor patch <<< “$version”
# Increment the patch number, considering the limit of 9
if [ “$patch” -lt 9 ]; then
((patch++))
else
# If patch reaches 9, reset it to 0 and increment the minor number
patch=0
if [ “$minor” -lt 9 ]; then
((minor++))
else
# If minor reaches 9, reset it to 0 and increment the major number
minor=0
if [ “$major” -lt 9 ]; then
((major++))
fi
fi
fi
echo “$major.$minor.$patch”
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
و در نهایت برای به روز رسانی نسخه:
version=$(get_version)
new_version=$(increment_version $version)
agvtool new-marketing-version $new_version
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
TL;DR:
سریع برو: agvtool --help
فصل 1: یک دیدار مجدد که مدت ها در انتظار آن بودیم
من قبل از تعطیلات، آرام و خوشحال بودم تا اینکه نیاز داشتم SDK را که در محل کارم نگه می دارم منتشر کنم و Fastlane در حال شکستن .xcodeproj بود.
این اسکریپت یک نسخه به ازای هر پارامتر دریافت کرد، اما من میخواستم آن را کاملاً خودکار در CI بگذارم، از این لحظه استفاده کردم تا حماسه بازنویسی همه چیز را شروع کنم و هم پروژه خراب و هم خودکار کردن افزایش نسخه را حل کنم.
فصل دوم: رویارویی با اورک ها
استفاده از Fastlane در زمینه من به معنای مدیریت نسخه Ruby و Fastlane است، بنابراین توسعه دهندگان جدید یا هر کسی در تیمی که پروژه را اجرا می کند باید این را نیز پیکربندی کند، از جمله ماشین CI.
از آنجایی که من فقط باید SDK را بایگانی و ارسال کنم، Fastlane ضروری نیست، راه حل انتخاب شده انجام همه کارها در اسکریپت پوسته بود.
فصل 3: ورود به موردور
یک اسکریپت برای حکومت بر همه آنها
من آن را به 3 مرحله تقسیم کردم:
1 – نسخه پروژه را کشف کنید
2 – نسخه را با منطق نسخه های قبلی افزایش دهید
3 – نسخه را در پروژه تعریف کنید
در اینجا اولین قدم این است که نسخه فعلی پروژه را پیدا کنید و برای آن از agvtool استفاده کردم
برای دریافت نسخه پروژه ای که استفاده می کنم what-marketing-version
و برای دریافت شماره ساخت what-version
.agvtool what-marketing-version
پوسته ام:
agv_output=$(agvtool what-marketing-version)
current_version=$(echo "$agv_output" | grep 'Found CFBundleShortVersionString' | head -n 1 | sed -E 's/.*of "([0-9]+\.[0-9]+\.[0-9]+)".*/\1/')
echo "$current_version"
با شماره نسخه من فقط منطقی ایجاد کردم که مطابق آنچه پروژه من دنبال می کند آن را افزایش دهم. پچ را تا 9 افزایش دهید، سپس به کوچکترین تا 9 بروید و سپس ماژور را افزایش دهید.
increment_version() {
local version="$1"
# Divide into (major, minor, patch)
IFS='.' read -r major minor patch <<< "$version"
# Increment the patch number, considering the limit of 9
if [ "$patch" -lt 9 ]; then
((patch++))
else
# If patch reaches 9, reset it to 0 and increment the minor number
patch=0
if [ "$minor" -lt 9 ]; then
((minor++))
else
# If minor reaches 9, reset it to 0 and increment the major number
minor=0
if [ "$major" -lt 9 ]; then
((major++))
fi
fi
fi
echo "$major.$minor.$patch"
}
و در نهایت برای به روز رسانی نسخه:
version=$(get_version)
new_version=$(increment_version $version)
agvtool new-marketing-version $new_version