Gradle 为 Firebase App Distribution 开发版本自动执行来自 gradle 中提交消息的发行说明的任务
Gradle task to automate release notes from commit message in gradle for Firebase App Distribution dev builds
我们使用 Travis CI 并持续部署开发和 QA 构建 - 并且最近设置了 Firebase App Distribution。我希望能够将 git 提交消息用作开发和 QA 构建的 "release notes",并在 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:assemble 之后,所以我希望它是。
我研究了一些类似的脚本,例如 https://kapie.com/2016/gradle-generate-release-notes/ and https://medium.com/@lowcarbrob/android-pro-tip-generating-your-apps-changelog-from-git-inside-build-gradle-19a07533eec4 但我们没有标记构建,所以这些对我的情况并没有真正起作用,而且我对 groovy.
提前致谢。
我正在回答我自己的问题,因为我想通了。我在 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
我们使用 Travis CI 并持续部署开发和 QA 构建 - 并且最近设置了 Firebase App Distribution。我希望能够将 git 提交消息用作开发和 QA 构建的 "release notes",并在 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:assemble 之后,所以我希望它是。
我研究了一些类似的脚本,例如 https://kapie.com/2016/gradle-generate-release-notes/ and https://medium.com/@lowcarbrob/android-pro-tip-generating-your-apps-changelog-from-git-inside-build-gradle-19a07533eec4 但我们没有标记构建,所以这些对我的情况并没有真正起作用,而且我对 groovy.
提前致谢。
我正在回答我自己的问题,因为我想通了。我在 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