blob: 0bb8c286078369829068d5def3d3119dc9f572ae [file] [log] [blame]
# 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.
################################################################################
#!/bin/bash
# Fail on any error.
set -e
# Display commands to stderr.
set -x
readonly MVN_GOAL="$1"
readonly VERSION="$2"
shift 2
readonly EXTRA_MAVEN_ARGS=("$@")
if [ -z "${VERSION}" ]
then
echo "Must set the VERSION variable"
exit 1
fi
declare -a GIT_ARGS
GIT_ARGS=(-c user.email=noreply@google.com -c user.name="Tink Team")
library_output_file() {
library="$1"
library_output="bazel-bin/${library}"
if [[ ! -e "${library_output}" ]]; then
library_output="bazel-genfiles/${library}"
fi
if [[ ! -e "${library_output}" ]]; then
echo "Could not find bazel output file for ${library}"
exit 1
fi
echo -n "${library_output}"
}
deploy_library() {
library_name="$1"
library="$2"
srcjar="$3"
javadoc="$4"
pomfile="$5"
bazel build "${library}" "${srcjar}" "${javadoc}"
# Update the version
sed -i \
's/VERSION_PLACEHOLDER/'"${VERSION}"'/' \
"${pomfile}"
mvn "${MVN_GOAL}" \
-Dfile="$(library_output_file ${library})" \
-Dsources="$(library_output_file ${srcjar})" \
-Djavadoc="$(library_output_file ${javadoc})" \
-DpomFile="$pomfile" \
"${EXTRA_MAVEN_ARGS[@]:+${EXTRA_MAVEN_ARGS[@]}}"
# Reverse the version change
sed -i \
's/'"${VERSION}"'/VERSION_PLACEHOLDER/' \
"${pomfile}"
publish_javadoc_to_github_pages "${library_name}" "${javadoc}"
}
publish_javadoc_to_github_pages() {
library_name="$1"
javadoc="$(library_output_file "$2")"
# The account is ise-crypto and its access token is pulled from Keystore.
local git_url
git_url="https://ise-crypto:${GITHUB_ACCESS_TOKEN}@github.com/google/tink.git"
if [ -z "${KOKORO_ROOT}" ]; then
git_url="git@github.com:google/tink.git"
fi
rm -rf gh-pages
git "${GIT_ARGS[@]}" \
clone --quiet --branch=gh-pages "${git_url}" gh-pages > /dev/null
cd gh-pages
if [ -d "javadoc/${library_name}/${VERSION}" ]; then
git "${GIT_ARGS[@]}" rm -rf "javadoc/${library_name}/${VERSION}"
fi
mkdir -p "javadoc/${library_name}/${VERSION}"
unzip "../${javadoc}" -d "javadoc/${library_name}/${VERSION}"
rm -rf "javadoc/${library_name}/${VERSION}/META-INF/"
git "${GIT_ARGS[@]}" add -f "javadoc/${library_name}/${VERSION}"
if [[ "$(git "${GIT_ARGS[@]}" status --porcelain)" ]]; then
# Changes
git "${GIT_ARGS[@]}" \
commit -m "${library_name}-${VERSION} Javadoc auto-pushed to gh-pages"
git "${GIT_ARGS[@]}" push -fq origin gh-pages > /dev/null
echo -e "Published Javadoc to gh-pages.\n"
else
# No changes
echo -e "No changes in ${library_name}-${VERSION} Javadoc.\n"
fi
cd ..
}
deploy_library \
tink \
java/tink.jar \
java/tink-src.jar \
java/tink-javadoc.jar \
$(dirname $0)/tink.pom.xml
deploy_library \
tink-awskms \
java/tink-awskms.jar \
java/tink-awskms-src.jar \
java/tink-awskms-javadoc.jar \
$(dirname $0)/tink-awskms.pom.xml
deploy_library \
tink-gcpkms \
java/tink-gcpkms.jar \
java/tink-gcpkms-src.jar \
java/tink-gcpkms-javadoc.jar \
$(dirname $0)/tink-gcpkms.pom.xml
deploy_library \
tink-android \
java/tink-android.jar \
java/tink-android-src.jar \
java/tink-android-javadoc.jar \
$(dirname $0)/tink-android.pom.xml
deploy_library \
apps-paymentmethodtoken \
apps/paymentmethodtoken/maven.jar \
apps/paymentmethodtoken/maven-src.jar \
apps/paymentmethodtoken/maven-javadoc.jar \
$(dirname $0)/apps-paymentmethodtoken.pom.xml
deploy_library \
apps-rewardedads \
apps/rewardedads/maven.jar \
apps/rewardedads/maven-src.jar \
apps/rewardedads/maven-javadoc.jar \
$(dirname $0)/apps-rewardedads.pom.xml
deploy_library \
apps-webpush \
apps/webpush/maven.jar \
apps/webpush/maven-src.jar \
apps/webpush/maven-javadoc.jar \
$(dirname $0)/apps-webpush.pom.xml