如何自动递增发布版本号 (CFBundleShortVersionString)?

1 投票
2 回答
1780 浏览
提问于 2025-04-18 14:13

我们的发布流程是通过一个持续集成的服务器来完成的。
现在我想做的是,除了特殊情况(比如大版本更新或补丁更新)之外,自动增加发布(生产)版本号(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()

GitHub 源码

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改成你想要的任何数字。

撰写回答