blob: 19468150c0669b4919eb8d805b5017eaeb06eb1b [file] [log] [blame]
---
# SPDX-FileCopyrightText: 2026 The Linux Foundation
# SPDX-License-Identifier: Apache-2.0
name: Maven Publish
description: "Build and publish Maven (Java) artifacts to a remote repository"
inputs:
java-version:
description: "Java version to use"
required: false
default: "11"
java-distribution:
description: "Java distribution"
required: false
default: "temurin"
maven-goals:
description: "Maven goals to execute"
required: false
default: "-Prelease clean deploy"
maven-settings-file:
description: "Path to custom Maven settings.xml"
required: false
default: ""
gpg-private-key:
description: "GPG private key for signing"
required: false
default: ""
gpg-passphrase:
description: "GPG passphrase"
required: false
default: ""
server-id:
description: "Maven server ID for deployment"
required: false
default: "ossrh"
server-username:
description: "Maven server username"
required: true
server-password:
description: "Maven server password"
required: true
runs:
using: "composite"
steps:
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: ${{ inputs.java-distribution }}
java-version: ${{ inputs.java-version }}
server-id: ${{ inputs.server-id }}
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
settings-path: ${{ github.workspace }}
- name: Import GPG key
if: inputs.gpg-private-key != ''
shell: bash
env:
GPG_PRIVATE_KEY: ${{ inputs.gpg-private-key }}
GPG_PASSPHRASE: ${{ inputs.gpg-passphrase }}
run: |
set -eu -o pipefail
echo "Importing GPG private key..."
echo "$GPG_PRIVATE_KEY" | gpg --batch --import
echo "GPG key imported successfully"
if [ -n "$GPG_PASSPHRASE" ]; then
echo "allow-preset-passphrase" >> ~/.gnupg/gpg-agent.conf
gpgconf --kill gpg-agent
gpgconf --launch gpg-agent
fi
- name: Apply custom Maven settings
if: inputs.maven-settings-file != ''
shell: bash
run: |
set -eu -o pipefail
echo "Using custom Maven settings: ${{ inputs.maven-settings-file }}"
cp "${{ inputs.maven-settings-file }}" "${{ github.workspace }}/settings.xml"
- name: Run Maven
shell: bash
env:
MAVEN_USERNAME: ${{ inputs.server-username }}
MAVEN_PASSWORD: ${{ inputs.server-password }}
GPG_PASSPHRASE: ${{ inputs.gpg-passphrase }}
run: |
set -eu -o pipefail
MAVEN_ARGS=(-s "${{ github.workspace }}/settings.xml")
if [ -n "$GPG_PASSPHRASE" ]; then
MAVEN_ARGS+=(-Dgpg.passphrase="$GPG_PASSPHRASE")
fi
read -r -a MAVEN_GOALS <<< "${{ inputs.maven-goals }}"
echo "Running: mvn ${MAVEN_ARGS[*]} ${MAVEN_GOALS[*]}"
mvn "${MAVEN_ARGS[@]}" "${MAVEN_GOALS[@]}"