Skip to content

Commit a7871ef

Browse files
authored
IGNITE-18280 Fix dependencies in Gradle packaging tasks (#1442)
* Fix dependencies to get rid of Gradle warnings. * Do not assembly release artifacts (such as .NET binaries) during regular build. This fix properly declares dependencies between packaging tasks so that Gradle can optimize them correctly and don't complain. Also this adds a property check for adding release artifacts. The reason is that adding an artifact to the configuration automatically adds a dependency to the `assemble` task so running `gradlew build` always produces artifacts intended only for the release.
1 parent 600d230 commit a7871ef

File tree

5 files changed

+121
-119
lines changed

5 files changed

+121
-119
lines changed

RELEASE.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ For all the commands going forward:
6262
```
6363
7. Create ZIP, DEB, RPM packages, .NET and C++ client, sign them and create checksums:
6464
```
65-
./gradlew prepareRelease
65+
./gradlew -PprepareRelease prepareRelease
6666
```
6767
8. Copy all packages along with checksums and signatures to the development distribution directory:
6868
```

modules/platforms/build.gradle

+10-5
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,11 @@ task createChecksums(type: Checksum) {
7373
dependsOn zipCppClient, zipNuGet
7474

7575
inputFiles.from zipCppClient.outputs.files, zipNuGet.outputs.files
76-
outputDirectory = file("$buildDir/distributions")
7776
checksumAlgorithm = Checksum.Algorithm.SHA512
7877
}
7978

80-
signing {
79+
// Explicitly create task so that the resulting artifact is not added to the configuration
80+
tasks.register('signArtifacts', Sign) {
8181
sign zipNuGet
8282
sign zipCppClient
8383
}
@@ -89,8 +89,13 @@ configurations {
8989
}
9090
}
9191

92-
artifacts {
93-
platformsRelease(file("$buildDir/distributions")) {
94-
builtBy createChecksums, signZipNuGet, signZipCppClient
92+
if (project.hasProperty('prepareRelease')) {
93+
artifacts {
94+
platformsRelease(file("$buildDir/distributions")) {
95+
builtBy signArtifacts
96+
}
97+
platformsRelease(file("$buildDir/checksums")) {
98+
builtBy createChecksums
99+
}
95100
}
96101
}

packaging/build.gradle

+30-33
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,17 @@ configurations {
3131
cliArtifacts
3232
cliZip
3333
dbZip
34-
cliRelease
35-
dbRelease
36-
platformsRelease
34+
release
3735
}
3836

3937
dependencies {
40-
dbArtifacts(project(':ignite-runner'))
41-
cliArtifacts(project(':ignite-cli'))
42-
cliZip(project(path: ':packaging-cli', configuration: 'cliZip'))
43-
dbZip(project(path: ':packaging-db', configuration: 'dbZip'))
44-
cliRelease(project(path: ':packaging-cli', configuration: 'cliRelease'))
45-
dbRelease(project(path: ':packaging-db', configuration: 'dbRelease'))
46-
platformsRelease(project(path: ':platforms', configuration: 'platformsRelease'))
38+
dbArtifacts project(':ignite-runner')
39+
cliArtifacts project(':ignite-cli')
40+
cliZip project(path: ':packaging-cli', configuration: 'cliZip')
41+
dbZip project(path: ':packaging-db', configuration: 'dbZip')
42+
release project(path: ':packaging-cli', configuration: 'cliRelease')
43+
release project(path: ':packaging-db', configuration: 'dbRelease')
44+
release project(path: ':platforms', configuration: 'platformsRelease')
4745
}
4846

4947
// Task that generates start script for cli
@@ -68,10 +66,10 @@ def tokens = [
6866
]
6967

7068
task replaceVars(type: Copy) {
71-
from("$rootDir/packaging/common")
72-
from("$rootDir/packaging/docker/docker-entrypoint.sh")
69+
from "$rootDir/packaging/common"
70+
from "$rootDir/packaging/docker/docker-entrypoint.sh"
7371
filter(ReplaceTokens, tokens: tokens)
74-
into("$buildDir/docker")
72+
into "$buildDir/docker"
7573
}
7674

7775
docker {
@@ -81,7 +79,7 @@ docker {
8179
copySpec.into 'dist', {
8280
into('') {
8381
fileMode 0755
84-
from("$buildDir/docker/docker-entrypoint.sh")
82+
from "$buildDir/docker/docker-entrypoint.sh"
8583
}
8684
into('db') {
8785
into('') {
@@ -91,32 +89,32 @@ docker {
9189
includeEmptyDirs = true
9290
}
9391
}
94-
from("$rootDir/LICENSE")
95-
from("$rootDir/NOTICE")
96-
from("$rootDir/assembly/README.md")
92+
from "$rootDir/LICENSE"
93+
from "$rootDir/NOTICE"
94+
from "$rootDir/assembly/README.md"
9795
}
9896
into('etc') {
99-
from('config/ignite-config.conf')
100-
from('docker/ignite.java.util.logging.properties')
97+
from 'config/ignite-config.conf'
98+
from 'docker/ignite.java.util.logging.properties'
10199
}
102100
into('lib') {
103-
from(configurations.dbArtifacts)
104-
from("$buildDir/docker/$tokens.BOOTSTRAP_FILE_NAME")
105-
from("$buildDir/docker/$tokens.SETUP_JAVA_FILE_NAME")
101+
from configurations.dbArtifacts
102+
from "$buildDir/docker/$tokens.BOOTSTRAP_FILE_NAME"
103+
from "$buildDir/docker/$tokens.SETUP_JAVA_FILE_NAME"
106104
}
107105
}
108106
into('cli') {
109107
into('') {
110-
from("$rootDir/LICENSE")
111-
from("$rootDir/NOTICE")
112-
from("$rootDir/assembly/README.md")
108+
from "$rootDir/LICENSE"
109+
from "$rootDir/NOTICE"
110+
from "$rootDir/assembly/README.md"
113111
}
114112
into('bin') {
115113
fileMode 0755
116-
from(cliStartScript)
114+
from cliStartScript
117115
}
118116
into('lib') {
119-
from(configurations.cliArtifacts)
117+
from configurations.cliArtifacts
120118
}
121119
}
122120
}
@@ -150,7 +148,6 @@ task createChecksums(type: Checksum) {
150148
dependsOn allDistZip, allSrcZip
151149

152150
inputFiles.from allDistZip.outputs.files, allSrcZip.outputs.files
153-
outputDirectory = file("$buildDir/distributions")
154151
checksumAlgorithm = Checksum.Algorithm.SHA512
155152
}
156153

@@ -161,16 +158,16 @@ task signAllSrcZip(type: Sign) {
161158
sign allSrcZip.outputs.files.singleFile
162159
}
163160

164-
signing {
161+
// Explicitly create task so that the resulting artifact is not added to the configuration
162+
tasks.register('signAllDistZip', Sign) {
165163
sign allDistZip
166164
}
167165

168-
task prepareRelease(type: Copy) {
169-
from configurations.cliRelease
170-
from configurations.dbRelease
171-
from configurations.platformsRelease
166+
tasks.register('prepareRelease', Copy) {
167+
from configurations.release
172168
dependsOn createChecksums, signAllSrcZip, signAllDistZip
173169
from file("$buildDir/distributions")
170+
from file("$buildDir/checksums")
174171
include '*.zip', '*.asc', '*.sha512'
175172
include '*.rpm', '*.deb', '*.changes'
176173
into file("$buildDir/release")

packaging/cli/build.gradle

+28-34
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ task createChecksums(type: Checksum) {
5252
dependsOn distZip
5353

5454
inputFiles.from distZip.outputs.files
55-
outputDirectory = file("$buildDir/distributions")
5655
checksumAlgorithm = Checksum.Algorithm.SHA512
5756
}
5857

@@ -64,12 +63,11 @@ def zipTokens = tokens + [
6463
]
6564

6665
task replaceScriptVarsZip(type: Copy) {
67-
from("start.sh")
66+
from 'start.sh'
6867
filter(ReplaceTokens, tokens: zipTokens)
69-
fileMode 0755
70-
into("$buildDir/zip")
68+
into "$buildDir/zip"
7169
rename {
72-
"ignite3"
70+
'ignite3'
7371
}
7472
}
7573

@@ -90,9 +88,6 @@ task windowsCliStartScript(type: Copy) {
9088
into "$buildDir/windows"
9189
}
9290

93-
distTar.dependsOn replaceScriptVarsZip, windowsCliStartScript
94-
distZip.dependsOn replaceScriptVarsZip, windowsCliStartScript
95-
9691
distributions {
9792
main {
9893
distributionBaseName = 'ignite3-cli'
@@ -105,9 +100,9 @@ distributions {
105100
into('bin') {
106101
duplicatesStrategy= DuplicatesStrategy.EXCLUDE
107102
from configurations.cliScripts
108-
from "$buildDir/zip/ignite3"
109-
from "$buildDir/windows"
110-
fileMode = 0755
103+
from replaceScriptVarsZip
104+
from windowsCliStartScript
105+
fileMode 0755
111106
}
112107
into('lib') {
113108
from configurations.cliArtifacts
@@ -129,7 +124,8 @@ artifacts {
129124
cliZip(distZip)
130125
}
131126

132-
signing {
127+
// Explicitly create task so that the resulting artifact is not added to the configuration
128+
tasks.register('signCliZip', Sign) {
133129
sign configurations.cliZip
134130
}
135131

@@ -141,26 +137,14 @@ def linuxTokens = tokens + [
141137
]
142138

143139
task replaceScriptVarsLinux(type: Copy) {
144-
from("start.sh")
140+
from 'start.sh'
141+
from 'postInstall.sh'
145142
filter(ReplaceTokens, tokens: linuxTokens)
146-
fileMode 0755
147-
into("$buildDir/linux")
148-
rename {
149-
"ignite3"
150-
}
143+
into "$buildDir/linux"
151144
}
152145

153-
task replacePostInstallScriptVars(type: Copy) {
154-
from("postInstall.sh")
155-
filter(ReplaceTokens, tokens: linuxTokens)
156-
into("${buildDir}")
157-
}
158-
159-
buildRpm.dependsOn replaceScriptVarsLinux, replacePostInstallScriptVars
160-
buildDeb.dependsOn replaceScriptVarsLinux, replacePostInstallScriptVars
161-
162-
163146
buildDeb {
147+
dependsOn replaceScriptVarsLinux
164148
signingKeyId = project.findProperty("signing.keyId")
165149
signingKeyPassphrase = project.findProperty("signing.password")
166150
signingKeyRingFile = project.hasProperty("signing.secretKeyRingFile") ? file(project.property("signing.secretKeyRingFile")) : null
@@ -172,6 +156,8 @@ buildDeb {
172156
}
173157

174158
buildRpm {
159+
dependsOn replaceScriptVarsLinux
160+
175161
into("/etc/bash_completion.d/") {
176162
from configurations.cliScripts
177163
fileMode 0755
@@ -188,16 +174,19 @@ ospackage {
188174
user 'root'
189175

190176
into(linuxTokens.INSTALL_DIR) {
191-
from("$buildDir/linux/ignite3")
192-
fileMode = 0755
177+
from "$buildDir/linux/ignite3"
178+
fileMode 0755
179+
rename {
180+
'ignite3'
181+
}
193182
}
194183

195184
into(linuxTokens.LIB_DIR) {
196185
from configurations.cliArtifacts
197186
from "$rootDir/packaging/common/setup-java.sh"
198187
}
199188

200-
postInstall file("${buildDir}/postInstall.sh")
189+
postInstall file("$buildDir/linux/postInstall.sh")
201190
}
202191

203192
configurations {
@@ -207,8 +196,13 @@ configurations {
207196
}
208197
}
209198

210-
artifacts {
211-
cliRelease(file("$buildDir/distributions")) {
212-
builtBy createChecksums, signCliZip, buildDeb, buildRpm
199+
if (project.hasProperty('prepareRelease')) {
200+
artifacts {
201+
cliRelease(file("$buildDir/distributions")) {
202+
builtBy signCliZip, buildDeb, buildRpm
203+
}
204+
cliRelease(file("$buildDir/checksums")) {
205+
builtBy createChecksums
206+
}
213207
}
214208
}

0 commit comments

Comments
 (0)