Codemagic CI:从 Git Tag 获取 android 版本

劳埃德·理查兹

我有一个 Flutter 应用程序,我正在使用 Codemagic 通过 CI 运行该应用程序以将应用程序构建到 iOS 和 Android。CI 的很大一部分是语义版本控制,它接受我的 git 提交并将我的版本构建为 gitlab 中的标记。创建这些标签时,这会触发构建 CI,它应该获取标签并在构建时设置版本。

对于 iOS,这不是问题,因为在我的预构建脚本中,我可以获取版本并使用 agvtools 设置它

echo "getting latest version..."
export NEW_VERSION_NAME=$((git describe --tags) | cut -c 2-)
NEW_IOS_VERSION_NAME=$((git describe --tags) | cut -c 2-6)
echo $NEW_VERSION_NAME
echo "VERSION_NAME=$NEW_VERSION_NAME" > app/version.properties
...
echo "updating ios version"
agvtool new-marketing-version $NEW_IOS_VERSION_NAME

但是对于 Android,我很难让它工作,因为 Android Studio 中没有任何工具可以更新预构建中的版本。CI 中的唯一选择是将 传递给$NEW_VERSION_NAMEflutter build apk --release --build-name=$NEW_VERSION_NAME因为变量似乎没有在脚本之间传递。

相反,我从 Codemagic ( https://github.com/codemagic-ci-cd/android-versioning-example ) 找到了一个用于 android 版本控制的示例 repo,而是在 app/build.gradle 中操作版本。

在本地,我得到了以下工作,我从exec {}kotlin 函数内部获取标签,然后返回字符串:

def gitVersionName = { ->
    try {
        def stdout = new ByteArrayOutputStream()
        exec {
            commandLine 'git', 'describe', '--tags',
            standardOutput = stdout
        }
        println("Git Version: ${stdout.toString().trim()}")
        return stdout.toString().trim()
    }
    catch (ignored) {
        return null;
    }
}
...
android {
defaultConfig {
        applicationId "XXX"
        minSdkVersion 21
        targetSdkVersion 30
        versionCode flutterVersionCode.toInteger()
        versionName gitVersionName() ?: flutterVersionName
    }
...

在本地这是可行的,但是当我尝试在 Codemagic CI 中运行它时,我会fatal: Not a valid object name在 Android Build 中打印出来。我只能假设这意味着终端不在 git repo 中,因此没有返回任何 git 命令。

如果有人知道如何 CD 到 kotlin exec 中的正确目录,那么我可以继续这个方法。或者如果有人有另一种方法从 git tag 获取版本,那就更好了!

米哈伊尔·托卡列夫

我建议使用与 iOS 构建相同的方法。您只需要在脚本末尾保存$NEW_VERSION_NAME到特殊文件即可$CM_ENV

echo "NEW_VERSION_NAME=$NEW_VERSION_NAME" >> $CM_ENV

它将允许您将变量用于flutter build命令

您可以在此处找到更多信息和示例https://docs.codemagic.io/variables/using-environment-variables/#setting-an-environment-variable-on-macos-and-linux

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章