Gradle任务,用于从gradle中的提交消息中自动发布发行说明,以用于Firebase App Distribution开发版本

问题描述 投票:0回答:1

我们使用Travis CI,并持续部署开发人员和质量检查人员-最近建立了Firebase App Distribution。我希望能够将git commit消息用作开发和QA构建的“发行说明”,并在firebaseAppDistribution所在的gradle中将其自动化。例如:

build.Gradle:

 generateGitCommitMessage() {
// get last commit message after > Task :app:assemble and before > Task :app:appDistributionUpload
return commitMessage
    }

firebaseAppDistribution {
            groups = "Android"
            // Automate capturing commit message in a string (or txt file) for dev builds
            releaseNotes="${generateGitCommitMessage()}"
        }

是否可以捕获在Gradle中推动提交时输入的当前提交消息? Travis中的AppDistribution发生在最后,就在apk上传之前,> Task:app:assembly之后,所以我希望是这样。

我研究了一些类似的脚本,例如https://kapie.com/2016/gradle-generate-release-notes/https://medium.com/@lowcarbrob/android-pro-tip-generating-your-apps-changelog-from-git-inside-build-gradle-19a07533eec4,但我们不标记构建,因此这些脚本对我的情况并不起作用,并且我对groovy不太熟悉。

提前感谢。

android git gradle travis-ci firebase-app-distribution
1个回答
0
投票

自从我想出了答案,我就在回答自己的问题。我在build.gradle应用程序级别中创建了一个任务,然后通过创建env变量从travis.yml文件中调用该任务。

在应用程序级别build.gradle:首先,请确保您已正确添加Firebase appDistribution代码块:

firebaseAppDistribution {
            groups = "Android"
            releaseNotesFile="./release-notes.txt"
        }

task getCommitMessage {
doLast ( {
    println "Generating release notes (release-notes.txt)"
    def releaseNotes = new File('release-notes.txt')
    releaseNotes.delete()
    releaseNotes << "[[ Commit message for this build: ]]\n"
    def cmdLine = "git log --format=%B -n 1"
    def procCommit = cmdLine.execute()
    procCommit.in.eachLine { line -> releaseNotes << line + "\n" }
    releaseNotes << "\n\n\n"
});

}

在travis.yml中:

env:
    - RELEASE_NOTES="getCommitMessage"
...

script:
    - free -m
    - ./gradlew $RELEASE_NOTES
© www.soinside.com 2019 - 2024. All rights reserved.