| --- |
| # 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[@]}" |