[GOBBLIN-355] Add helper script to publish archives on Nexus, and wire gradle tasks
Project: http://git-wip-us.apache.org/repos/asf/incubator-gobblin/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-gobblin/commit/693c7f60 Tree: http://git-wip-us.apache.org/repos/asf/incubator-gobblin/tree/693c7f60 Diff: http://git-wip-us.apache.org/repos/asf/incubator-gobblin/diff/693c7f60 Branch: refs/heads/master Commit: 693c7f60277b4f2423c4ea7a9d4cc429c7c77e23 Parents: fbc4cba Author: Abhishek Tiwari <[email protected]> Authored: Thu Jan 4 00:27:42 2018 +0530 Committer: Abhishek Tiwari <[email protected]> Committed: Thu Jan 4 00:27:42 2018 +0530 ---------------------------------------------------------------------- build.gradle | 7 +++ maven-nexus/maven-install.sh | 58 ++++++++++++++++++ maven-nexus/maven-nexus.sh | 115 ++++++++++++++++++++++++++++++++++++ maven-nexus/upload-to-nexus.sh | 71 ++++++++++++++++++++++ 4 files changed, 251 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-gobblin/blob/693c7f60/build.gradle ---------------------------------------------------------------------- diff --git a/build.gradle b/build.gradle index 74a64e7..0eae590 100644 --- a/build.gradle +++ b/build.gradle @@ -22,6 +22,8 @@ buildscript { apply from: 'gradle/scripts/defaultBuildProperties.gradle' apply from: 'gradle/scripts/computeVersions.gradle' + apply from: file('gradle/scripts/buildscript.gradle'), to: buildscript + buildscript.repositories.addAll(project.repositories) dependencies { @@ -128,9 +130,11 @@ apply from: 'gradle/scripts/javadoc.gradle' apply from: 'gradle/scripts/sourcesJar.gradle' apply from: 'gradle/scripts/mavenPublishing.gradle' +apply from: 'gradle/scripts/nexusPublishing.gradle' apply from: 'gradle/scripts/javaVersionCheck.gradle' apply from: 'gradle/scripts/rat.gradle' +apply from: 'gradle/scripts/release.gradle' task wrapper(type: Wrapper) { gradleVersion = '2.13' } @@ -209,6 +213,9 @@ rat { '**/grok/**', '**/WebmasterPerformanceTuningMetrics', '**/*.template', + '**/mainGeneratedRest/**', + '**/mainGeneratedDataTemplate/**', + '**/gen-java/**', '**/package-list' ] } http://git-wip-us.apache.org/repos/asf/incubator-gobblin/blob/693c7f60/maven-nexus/maven-install.sh ---------------------------------------------------------------------- diff --git a/maven-nexus/maven-install.sh b/maven-nexus/maven-install.sh new file mode 100755 index 0000000..d31064f --- /dev/null +++ b/maven-nexus/maven-install.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +# +# 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. +# + +#group is overiden to support forked repositories + +function print_usage(){ + echo "maven-install.sh --version VERSION [--group GROUP]" +} + +for i in "$@" +do + case "$1" in + --version) + VERSION="$2" + shift + ;; + --group) + GROUP="$2" + shift + ;; + --help) + print_usage + exit 0 + ;; + *) + ;; + esac + shift +done + +if [ -z "$VERSION" ]; then + print_usage + exit +fi +echo VERSION=$VERSION + +if [ -z "$GROUP" ]; then + GROUP="org.apache.gobblin" +fi + + +./gradlew install -Dorg.gradle.parallel=false -Pversion=$VERSION -Pgroup=$GROUP http://git-wip-us.apache.org/repos/asf/incubator-gobblin/blob/693c7f60/maven-nexus/maven-nexus.sh ---------------------------------------------------------------------- diff --git a/maven-nexus/maven-nexus.sh b/maven-nexus/maven-nexus.sh new file mode 100755 index 0000000..1e636c0 --- /dev/null +++ b/maven-nexus/maven-nexus.sh @@ -0,0 +1,115 @@ +#!/bin/bash + +# +# 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. +# + +script_dir=$(dirname $0) +script_name=$(basename $0) +GRADLE="$script_dir/../gradlew" + +function print_usage() { + echo -e "USAGE: $0 [-remote|-local] [-noclean] [gradle_args]" + echo + echo -e "Publishes signed maven artifacts locally ($HOME/.m2/repository) or remotely (Nexus)." + echo -e "\t-local Publish to local repository" + echo -e "\t-noclean Don't run gradlew clean (useful if re-running)" + echo -e "\t-remote Publish to Nexus repository" + echo -e "\t-packages a comma-separated list of gradle paths to publish (e.g. :gobblin-api,:gobblin-core)" + echo + echo -e "NOTES:" + echo -e "\t1. You need the Gobblin PGP key to sign the artifacts. If you don't have it," + echo -e "\t talk to another committer to get it. You also need to add the following to" + echo -e "\t your $HOME/.gradle/gradle.properties file:" + echo + echo -e "signing.keyId=<PGP key hex id>" + echo -e "signing.password=<PGP key password>" + echo -e "signing.secretKeyRingFile=$HOME/.gnupg/secring.gpg" + echo + echo -e "\t2. To upload remotely, you'll need a Nexus account. Visit " + echo -e "\t https://repository.apache.org/ to set it up. After" + echo -e "\t that add to your $HOME/.gradle/gradle.properties file:" + echo + echo -e "nexusUsername=<Nexus username>" + echo -e "nexusPassword=<Nexus password>" + echo + echo -e "\t3. Uploading remotely will upload only to the Nexus staging directory. " + echo -e "\t4. Don't forget to create a gobblin_<version> tag before publishing remotely!" + echo -e "\t5. Sometimes build with fail with an error" + echo -e "\t '... Failed to interpolate field: private java.lang.String ...'" + echo -e "\t Just re-run with -noclean" +} + +if [ "$#" -eq 0 ] ; then + print_usage + exit +fi + +install_target= +gradle_args= +noclean= +declare -a packages + +# Parse command line +while [ "$#" -gt 0 ] ; do + A="$1" + case "$A" in + -local) + install_target=install + ;; + -noclean) + noclean="1" + ;; + -remote) + install_target=uploadArchives + ;; + -h|--help|-help) + print_usage + exit + ;; + -packages) + shift + packages=( ${1//,/ } ) + ;; + *) + gradle_args="$gradle_args $A" + ;; + esac + shift +done + +if [ -z "${install_target}" ] ; then + echo "${script_name}: missing install target" + exit 1 +fi + +declare -a package_targets +for P in "${packages[@]}" ; do + ptarget="$P:${install_target}" + if [ "${ptarget:0:1}" != ":" ] ; then + ptarget=":$ptarget" + fi + package_targets+=( "$ptarget" ) +done + +if [ "${#packages[@]}" -gt 0 ] ; then + install_target="${package_targets[@]}" +fi + +if [ -z "$noclean" ] ; then + $GRADLE clean +fi +$GRADLE -PpublishToNexus -Porg.gradle.parallel=false -Porg.gradle.daemon=false -xtest $gradle_args $install_target 2>&1 | tee /tmp/${script_name}.out http://git-wip-us.apache.org/repos/asf/incubator-gobblin/blob/693c7f60/maven-nexus/upload-to-nexus.sh ---------------------------------------------------------------------- diff --git a/maven-nexus/upload-to-nexus.sh b/maven-nexus/upload-to-nexus.sh new file mode 100755 index 0000000..4847f22 --- /dev/null +++ b/maven-nexus/upload-to-nexus.sh @@ -0,0 +1,71 @@ +#!/bin/bash + +# +# 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. +# + +PROG=$(basename $0) + +function usage() { + echo -e "USAGE: $PROG" +} + +# main() + +if [ "$#" -eq 0 ] ; then + usage + exit +fi + +while [ "$#" -gt 0 ] ; do + A="$1" + case "$A" in + -h|--help) + usage + exit + ;; + *) + echo "$PROG: unknown option: $A" + exit 1 + ;; + esac + shift +done + +echo "CLEANING" +./gradlew clean + +upload_all=0 + +for P in :gobblin-admin :gobblin-api :gobblin-azkaban :gobblin-compaction :gobblin-config-management:gobblin-config-core :gobblin-config-management:gobblin-config-client :gobblin-core :gobblin-data-management :gobblin-distribution :gobblin-example :gobblin-metastore :gobblin-metrics :gobblin-oozie :gobblin-rest-service:gobblin-rest-api :gobblin-rest-service:gobblin-rest-client :gobblin-rest-service:gobblin-rest-server :gobblin-runtime :gobblin-salesforce :gobblin-scheduler :gobblin-test :gobblin-test-harness :gobblin-utility :gobblin-yarn ; do + echo "----------------------------" + if [ "$upload_all" -eq 0 ] ; then + read -p "UPLOAD $P [y(es)|n(o)|a(ll)]" ans + ans=$(echo "$ans" | tr '[:upper:]' '[:lower:]') + if [ "$ans" == "a" -o "$ans" == "all" ] ; then + upload_all=1 + ans="y" + fi + else + ans="y" + fi + if [ "$ans" == "y" -o "$ans" == "yes" ] ; then + ./maven-nexus/maven-nexus.sh -remote -noclean -packages $P + else + echo "Skipping $P" + fi + done +
