Gradle任务自动从Gradle提交消息中生成发布说明,用于Firebase App Distribution的开发版本构建。

4
我们使用Travis CI来持续构建开发和QA版本,并最近设置了Firebase App Distribution。我希望能够将git提交信息用作开发和QA版本的“发布说明”,并在gradle中自动化处理firebaseAppDistribution。例如:

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发生在最后,在 > Task :app:assemble 之后,因此我希望可以实现。

我研究了一些类似的脚本,例如 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也不是很熟悉。

提前致谢。

1个回答

7

由于我已经解决了自己的问题,所以现在回答自己的问题。我在build.gradle应用程序级别创建了一个任务,然后通过创建环境变量从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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接