Skip to content

Commit

Permalink
Add release scripts, and fill out the remaining rules that we need to…
Browse files Browse the repository at this point in the history
… deploy to maven

I've used these to successfully install a local snapshot on my machine.

Fixes #5

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193705583
  • Loading branch information
ronshapiro committed Apr 20, 2018
1 parent b08ed99 commit 019f11b
Show file tree
Hide file tree
Showing 6 changed files with 184 additions and 3 deletions.
4 changes: 2 additions & 2 deletions WORKSPACE
Expand Up @@ -14,8 +14,8 @@

http_archive(
name = "google_bazel_common",
strip_prefix = "bazel-common-370b397507d9bab9d9cdad8dfe7e6ccc8c2d0c67",
urls = ["https://github.com/google/bazel-common/archive/370b397507d9bab9d9cdad8dfe7e6ccc8c2d0c67.zip"],
strip_prefix = "bazel-common-a339ff2d533ad5ba446f4ea0f77c05d10c39f96d",
urls = ["https://github.com/google/bazel-common/archive/a339ff2d533ad5ba446f4ea0f77c05d10c39f96d.zip"],
)

load("@google_bazel_common//:workspace_defs.bzl", "google_common_workspace_rules")
Expand Down
61 changes: 60 additions & 1 deletion api/BUILD
Expand Up @@ -78,6 +78,47 @@ pom_file(
],
)

load("@google_bazel_common//tools/jarjar:jarjar.bzl", "jarjar_library")

jarjar_library(
name = "merged_api",
jars = [
":api",
":checks",
":config",
":lazy_args",
":platform_provider",
":stack",
":tags",
],
)

jarjar_library(
name = "merged_api_src",
jars = [
":libapi-src.jar",
":libchecks-src.jar",
":libconfig-src.jar",
":liblazy_args-src.jar",
":libstack-src.jar",
":libtags-src.jar",
# TODO(ronshapiro): consider generating PlatformProvider as a source file so it can be
# included here?
],
)

load("@google_bazel_common//tools/javadoc:javadoc.bzl", "javadoc_library")

javadoc_library(
name = "api_javadoc",
srcs = glob(
["src/main/java/**/*.java"],
exclude = SYSTEM_BACKEND_SRCS,
),
root_packages = ["com.google.common.flogger"],
deps = [":api"],
)

java_library(
name = "checks",
srcs = CHECKS_SRCS,
Expand Down Expand Up @@ -157,14 +198,24 @@ pom_file(
targets = [":system_backend"],
)

javadoc_library(
name = "system_backend_javadoc",
srcs = SYSTEM_BACKEND_SRCS,
root_packages = ["com.google.common.flogger.backend.system"],
deps = [":system_backend"],
)

# Utilities to help test Fluent Loggers. This target includes simple fakes for
# creating injectable test data as well as Truth subjects for asserting things
# about log statements. This is exported via @google_bazel_common//third_party/java/flogger:testing
# but should only be needed by anyone writing their own fluent logger.

TESTING_SRCS = glob(["src/test/java/com/google/common/flogger/testing/*.java"])

java_library(
name = "testing",
testonly = 1,
srcs = glob(["src/test/java/com/google/common/flogger/testing/*.java"]),
srcs = TESTING_SRCS,
visibility = ["//visibility:public"],
deps = [
":api",
Expand All @@ -185,6 +236,14 @@ pom_file(
targets = [":testing"],
)

javadoc_library(
name = "testing_javadoc",
testonly = 1,
srcs = TESTING_SRCS,
root_packages = ["com.google.common.flogger.testing"],
deps = [":testing"],
)

java_binary(
name = "platform_provider_generator",
srcs = ["platformprovider/main/java/com/google/common/flogger/backend/PlatformProviderGenerator.java"],
Expand Down
9 changes: 9 additions & 0 deletions google/BUILD
Expand Up @@ -36,6 +36,15 @@ pom_file(
targets = [":flogger"],
)

load("@google_bazel_common//tools/javadoc:javadoc.bzl", "javadoc_library")

javadoc_library(
name = "flogger_javadoc",
srcs = GOOGLE_LOGGER_SRCS,
root_packages = ["com.google.common.flogger"],
deps = [":flogger"],
)

# ---- Tests ----

load("@google_bazel_common//testing:test_defs.bzl", "gen_java_tests")
Expand Down
42 changes: 42 additions & 0 deletions release/deploy-to-maven-central.sh
@@ -0,0 +1,42 @@
#!/bin/bash

set -eu

if [ $# -lt 2 ]; then
echo "usage $0 <ssl-key> <version-name> [<param> ...]"
exit 1;
fi
key=$1
version_name=$2
shift 2

if [[ ! "$version_name" =~ ^2\. ]]; then
echo 'Version name must begin with "2."'
exit 2
fi

if [[ "$version_name" =~ " " ]]; then
echo "Version name must not have any spaces"
exit 3
fi

#validate key
keystatus=$(gpg --list-keys | grep ${key} | awk '{print $1}')
if [ "${keystatus}" != "pub" ]; then
echo "Could not find public key with label ${key}"
echo -n "Available keys from: "
gpg --list-keys | grep --invert-match '^sub'

exit 64
fi

bazel test //...

bash $(dirname $0)/execute-deploy.sh \
"gpg:sign-and-deploy-file" \
"$version_name" \
"-DrepositoryId=sonatype-nexus-staging" \
"-Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/" \
"-Dgpg.keyname=${key}"

# TODO(b/27549364): add a tag and publish Javadoc to the docs site
60 changes: 60 additions & 0 deletions release/execute-deploy.sh
@@ -0,0 +1,60 @@
#!/bin/sh
set -eu

readonly MVN_GOAL="$1"
readonly VERSION_NAME="$2"
shift 2
readonly EXTRA_MAVEN_ARGS=("$@")

bazel_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=$1
srcjar=$2
javadoc=$3
pomfile=$4
bazel build --define=pom_version="$VERSION_NAME" \
$library $srcjar $javadoc $pomfile

mvn $MVN_GOAL \
-Dfile=$(bazel_output_file $library) \
-Djavadoc=$(bazel_output_file $javadoc) \
-DpomFile=$(bazel_output_file $pomfile) \
-Dsources=$(bazel_output_file $srcjar) \
"${EXTRA_MAVEN_ARGS[@]:+${EXTRA_MAVEN_ARGS[@]}}"
}

deploy_library \
api/merged_api.jar \
api/merged_api_src.jar \
api/api_javadoc.jar \
api/api_pom.xml

deploy_library \
api/libsystem_backend.jar \
api/libsystem_backend-src.jar \
api/system_backend_javadoc.jar \
api/system_backend_pom.xml

deploy_library \
api/libtesting.jar \
api/libtesting-src.jar \
api/testing_javadoc.jar \
api/testing_pom.xml

deploy_library \
google/libflogger.jar \
google/libflogger-src.jar \
google/flogger_javadoc.jar \
google/google_logger_pom.xml
11 changes: 11 additions & 0 deletions release/install-local-snapshot.sh
@@ -0,0 +1,11 @@
#!/bin/bash

set -eu

echo -e "Installing maven snapshot locally...\n"

bash $(dirname $0)/execute-deploy.sh \
"install:install-file" \
"LOCAL-SNAPSHOT"

echo -e "Installed local snapshot"

0 comments on commit 019f11b

Please sign in to comment.