diff --git a/.github/workflows/sql-test-and-build-workflow.yml b/.github/workflows/sql-test-and-build-workflow.yml index d0d1d5591d..fcc63433a8 100644 --- a/.github/workflows/sql-test-and-build-workflow.yml +++ b/.github/workflows/sql-test-and-build-workflow.yml @@ -23,7 +23,7 @@ jobs: run: ./gradlew build assemble - name: Run backward compatibility tests - run: ./bwctest.sh + run: ./scripts/bwctest.sh - name: Create Artifact Path run: | diff --git a/.gitignore b/.gitignore index 19689a12b0..911e2ba6d7 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,5 @@ gen */__pycache__ *.iml .DS_Store + +/artifacts/ diff --git a/plugin/build.gradle b/plugin/build.gradle index 7c08ea5907..f8a930b08e 100644 --- a/plugin/build.gradle +++ b/plugin/build.gradle @@ -28,6 +28,8 @@ plugins { id 'opensearch.opensearchplugin' } +apply plugin: 'opensearch.pluginzip' + ext { projectSubstitutions = [:] licenseFile = rootProject.file('LICENSE.TXT') @@ -46,6 +48,29 @@ opensearchplugin { noticeFile rootProject.file("NOTICE") } +publishing { + publications { + pluginZip(MavenPublication) { publication -> + pom { + name = 'opensearch-sql' + description = 'OpenSearch SQL' + licenses { + license { + name = 'The Apache License, Version 2.0' + url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' + } + } + developers { + developer { + name = 'OpenSearch' + url = 'https://github.com/opensearch-project/sql' + } + } + } + } + } +} + javadoc.enabled = false test.enabled = false loggerUsageCheck.enabled = false diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100755 index 0000000000..4b2893f304 --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,82 @@ +#!/bin/bash + +# +# Copyright OpenSearch Contributors +# SPDX-License-Identifier: Apache-2.0 +# + +set -ex + +function usage() { + echo "Usage: $0 [args]" + echo "" + echo "Arguments:" + echo -e "-v VERSION\t[Required] OpenSearch version." + echo -e "-q QUALIFIER\t[Optional] Version qualifier." + echo -e "-s SNAPSHOT\t[Optional] Build a snapshot, default is 'false'." + echo -e "-p PLATFORM\t[Optional] Platform, ignored." + echo -e "-a ARCHITECTURE\t[Optional] Build architecture, ignored." + echo -e "-o OUTPUT\t[Optional] Output path, default is 'artifacts'." + echo -e "-h help" +} + +while getopts ":h:v:q:s:o:p:a:" arg; do + case $arg in + h) + usage + exit 1 + ;; + v) + VERSION=$OPTARG + ;; + q) + QUALIFIER=$OPTARG + ;; + s) + SNAPSHOT=$OPTARG + ;; + o) + OUTPUT=$OPTARG + ;; + p) + PLATFORM=$OPTARG + ;; + a) + ARCHITECTURE=$OPTARG + ;; + :) + echo "Error: -${OPTARG} requires an argument" + usage + exit 1 + ;; + ?) + echo "Invalid option: -${arg}" + exit 1 + ;; + esac +done + +if [ -z "$VERSION" ]; then + echo "Error: You must specify the OpenSearch version" + usage + exit 1 +fi + +[[ ! -z "$QUALIFIER" ]] && VERSION=$VERSION-$QUALIFIER +[[ "$SNAPSHOT" == "true" ]] && VERSION=$VERSION-SNAPSHOT +[ -z "$OUTPUT" ] && OUTPUT=artifacts + +mkdir -p $OUTPUT + +./gradlew assemble --no-daemon --refresh-dependencies -DskipTests=true -Dopensearch.version=$VERSION -Dbuild.snapshot=$SNAPSHOT -Dbuild.version_qualifier=$QUALIFIER + +zipPath=$(find . -path \*build/distributions/*.zip) +distributions="$(dirname "${zipPath}")" + +echo "COPY ${distributions}/*.zip" +mkdir -p $OUTPUT/plugins +cp ${distributions}/*.zip ./$OUTPUT/plugins + +./gradlew publishPluginZipPublicationToZipStagingRepository -Dopensearch.version=$VERSION -Dbuild.snapshot=$SNAPSHOT -Dbuild.version_qualifier=$QUALIFIER +mkdir -p $OUTPUT/maven/org/opensearch +cp -r ./build/local-staging-repo/org/opensearch/. $OUTPUT/maven/org/opensearch diff --git a/bwctest.sh b/scripts/bwctest.sh similarity index 93% rename from bwctest.sh rename to scripts/bwctest.sh index 76d603c941..4f017ae5e8 100755 --- a/bwctest.sh +++ b/scripts/bwctest.sh @@ -32,7 +32,7 @@ done function setup_bwc_artifact() { # This gets opensearch version from build.gradle (e.g. 1.2.0-SNAPSHOT), # then converts to plugin version by appending ".0" (e.g. 1.2.0.0-SNAPSHOT), - # assuming one line in build.gradle is 'opensearch_version= System.getProperty("opensearch.version", "")'. + # assuming one line in build.gradle is 'opensearch_version = System.getProperty("opensearch.version", "")'. plugin_version=$(grep 'opensearch_version = System.getProperty' build.gradle | \ grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+[^"]*' | sed -e 's/\(.*\)\(\.[0-9]\)/\1\2.0/') plugin_artifact="./plugin/build/distributions/opensearch-sql-$plugin_version.zip"