diff --git a/gradle/build.gradle b/gradle/build.gradle index 742374d65..dcc577c48 100644 --- a/gradle/build.gradle +++ b/gradle/build.gradle @@ -120,7 +120,7 @@ subprojects { publishing { repositories { maven { - url = project.findProperty('gcsRepo') + url = project.findProperty('repositoryUrl') } } } @@ -133,7 +133,8 @@ subprojects { return } it.resolvedConfiguration.resolvedArtifacts.each { resolvedArtifact -> - if (resolvedArtifact.id.componentIdentifier.displayName in ['project :util', 'project :third_party']) { + if (resolvedArtifact.id.componentIdentifier.displayName in + ['project :core', 'project :proxy', 'project :util', 'project :third_party']) { return } distinctResolvedArtifacts[resolvedArtifact.id.toString()] = resolvedArtifact @@ -203,7 +204,10 @@ subprojects { def repositoryUri = URI.create(mavenRepository.url.toString()) def artifactUri = repositoryUri.resolve(defaultLayout.getPath(artifact)) if (project.ext.urlExists(artifactUri.toURL())) { - project.ext.writeMetadata(resolvedArtifact, artifactUri.toURL(), project.findProperty('privateRepository') + "/${project.name}") + project.ext.writeMetadata( + resolvedArtifact, + artifactUri.toURL(), + project.findProperty('privateRepository') + "/${project.name}") break } } diff --git a/gradle/generate_dependency_metadata.sh b/gradle/generate_dependency_metadata.sh new file mode 100755 index 000000000..394b63271 --- /dev/null +++ b/gradle/generate_dependency_metadata.sh @@ -0,0 +1,38 @@ +#!/bin/bash +# Copyright 2018 The Nomulus Authors. All Rights Reserved. +# +# Licensed 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. +# +# This script runs a workflow to clone a git repository to local, generate +# a metadata file for each dependency artifact and check in the file to remote +# repository. + +set -e + +ALL_SUBPROJECTS="core proxy util" + +USAGE="Usage: ${0} REPO_URL" +REPO_URL=${1:?${USAGE}} + +REPO_DIR="$(mktemp -d)" + +git clone ${REPO_URL} ${REPO_DIR} +for PROJECT in ${ALL_SUBPROJECTS}; do + $(dirname $0)/gradlew -PprivateRepository="${REPO_DIR}" \ + ":${PROJECT}:generateDependencyMetadata" +done +cd "${REPO_DIR}" +git add -A +git diff-index --quiet HEAD \ + || git commit -m "Update dependency metadata file" && git push +rm -rf "${REPO_DIR}" diff --git a/gradle/update_dependency.sh b/gradle/update_dependency.sh index 8276f8cf2..b7cf3f254 100755 --- a/gradle/update_dependency.sh +++ b/gradle/update_dependency.sh @@ -12,7 +12,6 @@ # 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. - # # This script runs a workflow to generate dependency lock file, run a build against # the generated lock file, save the lock file and upload dependency JARs to a private @@ -22,16 +21,38 @@ set -e ALL_SUBPROJECTS="core proxy util" SUBPROJECTS= +REPOSITORY_URL= -if [[ -z "$@" ]]; then +while [[ $# -gt 0 ]]; do + KEY="$1" + case ${KEY} in + --repositoryUrl) + shift + REPOSITORY_URL="$1" + ;; + *) + SUBPROJECTS="${SUBPROJECTS} ${KEY}" + ;; + esac + shift +done + +if [[ -z ${SUBPROJECTS} ]]; then SUBPROJECTS="${ALL_SUBPROJECTS}" -else - SUBPROJECTS="$@" fi +if [[ -z ${REPOSITORY_URL} ]]; then + echo "--repositoryUrl must be specified" + exit 1 +fi + +WORKING_DIR=$(dirname $0) + for PROJECT in ${SUBPROJECTS}; do - ./gradlew ":${PROJECT}:generateLock" - ./gradlew -PdependencyLock.useGeneratedLock=true ":${PROJECT}:build" - ./gradlew ":${PROJECT}:saveLock" - ./gradlew ":${PROJECT}:publish" + ${WORKING_DIR}/gradlew ":${PROJECT}:generateLock" + ${WORKING_DIR}/gradlew -PdependencyLock.useGeneratedLock=true \ + ":${PROJECT}:build" + ${WORKING_DIR}/gradlew ":${PROJECT}:saveLock" + ${WORKING_DIR}/gradlew -PrepositoryUrl="${REPOSITORY_URL}" \ + ":${PROJECT}:publish" done