برنامه نویسی

مدیریت نسخه های 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: یک دیدار مجدد که مدت ها در انتظار آن بودیم

https%3A%2F%2Fdev to

من قبل از تعطیلات، آرام و خوشحال بودم تا اینکه نیاز داشتم 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

از تابع 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
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیحات تصویر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا