首先也是最重要的......我是Gradle的新手。话虽如此,我喜欢它。不幸的是,我遇到了障碍。我有一系列任务是部署过程的一部分。一 ( buildProject
) 调用一个 shell 脚本,作为其进程的一部分,它REVISION
使用新的“版本”更新一个文件。之后deployToRemote
调用任务将最新版本部署到服务器。它调用getCurrentVersion
从REVISION
文件中读取最新版本。下面概述了所有这些任务。问题在于,尽管有正确的语句,它似乎首先getLatestVersion
被调用,因为它总是在文件中列出的“PRE”版本中读取。如何确保在运行后读取文件?mustRunAfter
buildProject
REVISION
getLatestVersion
buildProject
以下是任务:
构建项目:
task buildProject(type:Exec) {
def command = ['./make-release', '-f']
if (deployEnvironment != 'stage') {
command = ['./make-release', "-e ${deployEnvironment}"]
}
commandLine command
}
部署到远程
task deployToRemote(dependsOn: 'getCurrentVersion') {
doLast {
def version = tasks.getCurrentVersion.hash()
println "Using version ${version}"
println "Using user ${webhostUser}"
println "Using host ${webhostUrl}"
ssh.run {
session(remotes.webhost) {
put from: "dist/project-${version}.tar.gz", into: '/srv/staging/'
execute "cd /srv/staging; ./manual_install.sh ${version}"
}
}
}
}
获取当前版本
task getCurrentVersion {
def line
new File("REVISION").withReader { line = it.readLine() }
ext.hash = {
line
}
}
我的build.gradle
文件最后有这个:
deployToRemote.mustRunAfter buildProject
getCurrentVersion.mustRunAfter buildProject
该REVISION
文件如下所示;
1196.dev10
919b642fd5ca5037a437dac28e2cfac0ea18ceed
dev