| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| /** |
| * Gradle script used to perform Ace releases (really similar to Apache Ace build.gradle) |
| */ |
| import aQute.bnd.build.Workspace |
| |
| // Our release number, which has to be monotonically incremented each time we make a new release. |
| version = '2.1.0' |
| |
| // Base name for release archives Full name will be ${archivesBaseName}-${version}-${classifier} (e.g. apache-ace-2.0.1-src) |
| archivesBaseName = "apache-ace" |
| |
| // Our Apache svn Staging repo |
| ext.svnStagingPath = "https://dist.apache.org/repos/dist/dev/ace" |
| |
| // Our Apache svn Release repo |
| ext.svnReleasePath = "https://dist.apache.org/repos/dist/release/ace" |
| |
| apply plugin: 'java' |
| apply from: file("rat.gradle") |
| |
| // Configure RAT plugin to ignore some files |
| rat { |
| excludes = [ |
| '.git/**', |
| '.gradle/**', |
| '.metadata/**', |
| 'org.apache.ace.client.repository/test/*.txt', |
| 'org.apache.ace.client.repository/test/*.xml', |
| 'org.apache.ace.webui.vaadin/resources/VAADIN/themes/reindeer/styles.css', |
| '**/.project', |
| '**/.classpath', |
| '**/.settings/**', |
| '**/.recommenders/**', |
| '**/*.iml', |
| '**/*.iws', |
| '**/*.ipr', |
| '**/build.xml', |
| '**/DEPENDENCIES', |
| '**/README*', |
| '**/.gitignore', |
| '**/generated/**', |
| '**/packageinfo', |
| '**/bundle-cache/**', |
| '**/test-output/**', |
| '**/store/**', |
| '**/bin_test/**', |
| '**/bin/**', |
| 'cnf/**', |
| 'gradle/wrapper/**', |
| 'gradle.properties', |
| 'gradlew', |
| 'gradlew.bat', |
| 'rat-report.xml', |
| ] |
| } |
| |
| // Setup the workspace |
| Workspace workspace |
| workspace = Workspace.getWorkspace(".") |
| |
| task stageSrc(type: Zip) { |
| description = 'Create a source archive in the local staging folder' |
| |
| classifier = 'src' |
| destinationDir = file('staging') |
| |
| with([ |
| // LICENSE, NOTICE, README |
| copySpec { |
| from 'resources/src' |
| }, |
| copySpec { |
| from '..' |
| include('*/.project', |
| '*/.classpath', |
| '*/.settings/**', |
| '*/src/**', |
| '*/test/**', |
| '*/resources/**', |
| '*/*.bnd', |
| '*/*.bndrun', |
| 'run-*/conf/**', |
| 'cnf/ext/**', |
| 'cnf/gradle/*.gradle', |
| 'build.gradle', |
| 'settings.gradle', |
| 'gradle.properties') |
| } |
| ] as CopySpec[]) |
| into "${archivesBaseName}-${version}-src" |
| } |
| |
| task stageDeps(type: Zip) { |
| description = 'Create a deps archive in the local staging folder' |
| |
| classifier = 'deps' |
| destinationDir = file('staging') |
| |
| with([ |
| // LICENSE, NOTICE, README |
| copySpec { |
| from 'resources/deps' |
| }, |
| copySpec { |
| from '..' |
| include('cnf/buildrepo/**', |
| 'cnf/localrepo/**', |
| 'cnf/releaserepo/**', |
| 'cnf/lib/**', |
| 'cnf/plugins/**', |
| 'cnf/gradle/*.jar', |
| 'gradle/**', |
| 'gradlew', |
| 'gradlew.bat') |
| } |
| ] as CopySpec[]); |
| into "${archivesBaseName}-${version}-src" |
| } |
| |
| def aceLauncherCopySpec = copySpec { |
| from '../org.apache.ace.agent.launcher/generated/org.apache.ace.agent.launcher.felix.jar' |
| rename('org.apache.ace.agent.launcher.felix.jar', 'ace-launcher.jar') |
| } |
| |
| def obrContentsCopySpec = [ |
| aceLauncherCopySpec, |
| copySpec { |
| from '../cnf/localrepo/org.apache.felix.deployment.rp.autoconf/org.apache.felix.deployment.rp.autoconf-0.1.8.jar' |
| } |
| ] as CopySpec[]; |
| |
| task stageBin(type: Zip) { |
| description = 'Create a binary release archive in the local staging folder' |
| classifier = 'bin' |
| destinationDir = file('staging') |
| with([ |
| // LICENSE, NOTICE, README |
| copySpec { |
| from 'resources/bin' |
| }, |
| // server-allinone |
| copySpec { |
| from '../run-server-allinone/generated/distributions/executable/server-allinone.jar' |
| into 'server-allinone' |
| }, |
| copySpec { |
| from '../run-server-allinone/conf' |
| into 'server-allinone/conf' |
| }, |
| copySpec { |
| with obrContentsCopySpec |
| into 'server-allinone/store' |
| }, |
| // server |
| copySpec { |
| from '../run-server/generated/distributions/executable/server.jar' |
| into 'server' |
| }, |
| copySpec { |
| from '../run-server/conf' |
| into 'server/conf' |
| }, |
| // relay |
| copySpec { |
| from '../run-relay/generated/distributions/executable/relay.jar' |
| into 'relay' |
| }, |
| copySpec { |
| from '../run-relay/conf' |
| into 'relay/conf' |
| }, |
| // client |
| copySpec { |
| from '../run-client/generated/distributions/executable/client.jar' |
| into 'client' |
| }, |
| copySpec { |
| from '../run-client/conf' |
| into 'client/conf' |
| }, |
| // obr |
| copySpec { |
| from '../run-obr/generated/distributions/executable/obr.jar' |
| into 'obr' |
| }, |
| copySpec { |
| from '../run-obr/conf' |
| into 'obr/conf' |
| }, |
| copySpec { |
| with obrContentsCopySpec |
| into 'obr/store' |
| }, |
| //target |
| copySpec { |
| from '../run-target/conf' |
| into 'target/conf' |
| }, |
| copySpec { |
| from '../run-target/scripts' |
| into 'target/bin' |
| }, |
| copySpec { |
| with aceLauncherCopySpec |
| into 'target/bin' |
| } |
| |
| ] as CopySpec[]) |
| into "${archivesBaseName}-${version}" |
| } |
| |
| task stageMaven(type: Zip) { |
| description = 'Create an archive in the local staging folder containing artifacts that can be uploaded to a maven repo' |
| |
| classifier = 'maven' |
| destinationDir = file('staging') |
| |
| with([ |
| // LICENSE, NOTICE, README |
| copySpec { |
| from 'resources/bin' |
| }, |
| // agent |
| copySpec { |
| from '../org.apache.ace.agent/generated' |
| into 'org.apache.ace.agent' |
| include('org.apache.ace.agent.pom', |
| 'org.apache.ace.agent.jar', |
| 'org.apache.ace.agent-sources.jar', |
| 'org.apache.ace.agent-javadoc.jar') |
| } |
| ] as CopySpec[]); |
| into "${archivesBaseName}-${version}-maven" |
| } |
| |
| task signStaging() { |
| description = 'Signs the local staging distribution.' |
| dependsOn = ['stageSrc', 'stageDeps', 'stageBin', 'stageMaven'] |
| |
| doLast { |
| fileTree("staging").visit { FileVisitDetails details -> |
| logger.lifecycle(" Signing " + details.file.path) |
| ant.exec(executable: 'gpg', dir: 'staging') { |
| ant.arg(line: '--armor') |
| ant.arg(line: '--output') |
| ant.arg(line: details.file.name + ".asc") |
| ant.arg(line: "--detach-sig") |
| ant.arg(line: details.file.name) |
| } |
| |
| ant.exec(executable: 'gpg', dir: 'staging', output: "staging/" + details.file.name + ".md5") { |
| ant.arg(line: '--print-md') |
| ant.arg(line: 'MD5') |
| ant.arg(line: details.file.name) |
| } |
| |
| ant.exec(executable: 'gpg', dir: 'staging', output: "staging/" + details.file.name + ".sha") { |
| ant.arg(line: '--print-md') |
| ant.arg(line: 'SHA512') |
| ant.arg(line: details.file.name) |
| } |
| } |
| } |
| } |
| |
| task makeStaging() { |
| description = 'Stage new release' |
| group = 'release' |
| dependsOn = ['signStaging'] |
| } |
| |
| task commitToStaging() { |
| description = 'Commits the local staging to the Apache svn staging repository.' |
| group = 'release' |
| |
| doLast { |
| getProject().exec { |
| commandLine 'svn', |
| 'import', 'staging', svnStagingPath + "/${archivesBaseName}-${version}" + "/", |
| '-m', "Staging Apache Ace release ${version}." |
| } |
| } |
| } |
| |
| task promoteToRelease() { |
| description = 'Moves the staging repository to the Apache release repository.' |
| group = 'release' |
| |
| doLast { |
| // Move all artifacts from the staging repo to the release repo |
| getProject().exec { |
| commandLine 'svn', |
| 'move', svnStagingPath + "/${archivesBaseName}-${version}" , |
| svnReleasePath, |
| '-m', "Releasing Apache Ace release ${version}." |
| } |
| } |
| } |
| |
| task deleteFromStaging() { |
| description = 'Cancels the staged distribution from the Apache staging repository.' |
| group = 'release' |
| |
| doLast { |
| getProject().exec { |
| commandLine 'svn', |
| 'delete', svnStagingPath + "/${archivesBaseName}-${version}/", |
| "-m", "Removing Apache Ace release ${version} from staging." |
| } |
| } |
| } |
| |
| task clean(overwrite: true) << { |
| new File("build/staging").deleteDir() |
| new File("rat-report.xml").delete() |
| } |
| |
| task cleanStaging << { |
| description = 'Clean the local staging directory.' |
| new File("build/staging").deleteDir() |
| new File("build/staging-copy").deleteDir() |
| } |