我正在使用gradle来自动化docker发布和标记.我目前有以下一系列任务:
task dockerTagLatest(type: Exec) {
description "Build a Docker image of the current version and tag it as 'latest'"
dependsOn 'docker'
group 'Publishing'
commandLine(['docker', 'tag', dockerImageName, dockerImageLatest])
}
task dockerPush(type: Exec, overwrite: true) {
description 'Push the Docker image of the current version to the internal Docker hub'
group 'Publishing'
mustRunAfter 'dockerTagLatest'
commandLine 'docker', 'push', dockerImageName
}
task dockerPushLatestTag(type: Exec) {
description "Push the 'latest' tag to the internal Docker hub"
group 'Publishing'
mustRunAfter 'dockerTagLatest'
commandLine 'docker', 'push', dockerImageLatest
}
task dockerPublish() {
description "Push the Docker image of the current version and the 'latest' tag to the internal Docker hub"
dependsOn 'dockerTagLatest'
dependsOn 'dockerPush'
dependsOn 'dockerPushLatestTag'
group 'Publishing'
}
Run Code Online (Sandbox Code Playgroud)
有这样的东西会更好吗?
task dockerPublish(type: Exec) {
commandLine 'bash', '-e', '-c', """
docker tag ...
docker push ...
docker push ...
"""
}
Run Code Online (Sandbox Code Playgroud)
显然第二种方法不是Windows友好的,但是暂时忽略这一点,是否更好地拥有一组依赖的Exec任务,或者将所有命令行命令集中到一个任务中?我得到的反馈是后者更具可读性,但我认为第一种方法更像是Gradle.思考?
是否有过这样的情况:您不想按照确切的顺序运行所有这些任务?它们中的任何一个可以通过未来的 Gradle 功能并行化吗?
如果其中任何一个的答案是“是”,那么您可能需要使用单独的任务;否则一项任务就可以了。
| 归档时间: |
|
| 查看次数: |
2795 次 |
| 最近记录: |