如何自动递增发布版本号 (CFBundleShortVersionString)?
我们的发布流程是通过一个持续集成的服务器来完成的。
现在我想做的是,除了特殊情况(比如大版本更新或补丁更新)之外,自动增加发布(生产)版本号(CFBundleShortVersionString)。
比如说,我现在的发布版本是1.1,我想自动把它增加到1.2。
如果有人知道怎么用Xcode或者任何脚本来实现这个功能,我会非常感激。
我不是在说构建号(CFBundleVersion)。
2 个回答
0
import sys
import click
MIN_DIGITS = 2
MAX_DIGITS = 3
@click.command()
@click.argument('version')
@click.option('--major', 'bump_idx', flag_value=0, help='Increment major number.')
@click.option('--minor', 'bump_idx', flag_value=1, help='Increment minor number.')
@click.option('--patch', 'bump_idx', flag_value=2, default=True, help='Increment patch number.')
def cli(version, bump_idx):
"""Bumps a MAJOR.MINOR.PATCH version string at the specified index location or 'patch' digit. An
optional 'v' prefix is allowed and will be included in the output if found."""
prefix = version[0] if version[0].isalpha() else ''
digits = version.lower().lstrip('v').split('.')
if len(digits) > MAX_DIGITS:
click.secho('ERROR: Too many digits', fg='red', err=True)
sys.exit(1)
digits = (digits + ['0'] * MAX_DIGITS)[:MAX_DIGITS] # Extend total digits to max.
digits[bump_idx] = str(int(digits[bump_idx]) + 1) # Increment the desired digit.
# Zero rightmost digits after bump position.
for i in range(bump_idx + 1, MAX_DIGITS):
digits[i] = '0'
digits = digits[:max(MIN_DIGITS, bump_idx + 1)] # Trim rightmost digits.
click.echo(prefix + '.'.join(digits), nl=False)
if __name__ == '__main__':
cli()
0
#!/bin/bash
buildPlist="${PRODUCT_NAME}-Info.plist"
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBuildNumber" $buildPlist)
# Increment the buildNumber
buildNumber=$(($buildNumber + 1))
# Set the version numbers in the buildPlist
/usr/libexec/PlistBuddy -c "Set :CFBundleLongVersionString $buildNumber" $buildPlist
这是一个修改过的版本,来源于这个链接。你可以通过设置一个默认值来修改$buildNumber
,还可以把增加的数值从1
改成你想要的任何数字。