diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml new file mode 100644 index 000000000..31e21d66b --- /dev/null +++ b/.github/workflows/maven-publish.yml @@ -0,0 +1,41 @@ +name: Publish snapshots to maven + +on: + workflow_dispatch: + push: + branches: + - main + - '[0-9]+.[0-9]+' + - '[0-9]+.x' + +jobs: + build-and-publish-snapshots: + strategy: + fail-fast: false + matrix: + jdk: [17] + platform: ["ubuntu-latest"] + if: github.repository == 'opensearch-project/alerting' + runs-on: ${{ matrix.platform }} + + permissions: + id-token: write + contents: write + + steps: + - uses: actions/setup-java@v3 + with: + distribution: temurin # Temurin is a distribution of adoptium + java-version: ${{ matrix.jdk }} + - uses: actions/checkout@v3 + - uses: aws-actions/configure-aws-credentials@v1 + with: + role-to-assume: ${{ secrets.PUBLISH_SNAPSHOTS_ROLE }} + aws-region: us-east-1 + - name: publish snapshots to maven + run: | + export SONATYPE_USERNAME=$(aws secretsmanager get-secret-value --secret-id maven-snapshots-username --query SecretString --output text) + export SONATYPE_PASSWORD=$(aws secretsmanager get-secret-value --secret-id maven-snapshots-password --query SecretString --output text) + echo "::add-mask::$SONATYPE_USERNAME" + echo "::add-mask::$SONATYPE_PASSWORD" + ./gradlew publishPluginZipPublicationToSnapshotsRepository diff --git a/alerting/build.gradle b/alerting/build.gradle index ddf4921e6..494060df2 100644 --- a/alerting/build.gradle +++ b/alerting/build.gradle @@ -29,6 +29,41 @@ opensearchplugin { extendedPlugins = ['lang-painless'] } +publishing { + publications { + pluginZip(MavenPublication) { publication -> + pom { + name = "opensearch-alerting" + description = "OpenSearch Alerting plugin" + groupId = "org.opensearch.plugin" + 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/alerting" + } + } + } + } + } + + repositories { + maven { + name = "Snapshots" + url = "https://aws.oss.sonatype.org/content/repositories/snapshots" + credentials { + username "$System.env.SONATYPE_USERNAME" + password "$System.env.SONATYPE_PASSWORD" + } + } + } +} + // Prefer elastic bundled versions for conflicts (primarily with AWS SDK). We need to specify these manually because // opensearchplugin sets ResolutionStrategy.failOnVersionConflict. Luckily it is also nice enough to expose (most of) the // versions it uses in ext.versions.