Skip to content

docs(client): add description to armonik-client POM for Maven Central… #4

docs(client): add description to armonik-client POM for Maven Central…

docs(client): add description to armonik-client POM for Maven Central… #4

Workflow file for this run

name: Release
on:
push:
tags:
- '[0-9]+.[0-9]+.[0-9]+'
permissions:
contents: write
concurrency:
group: release-${{ github.ref }}
cancel-in-progress: true
jobs:
extract-version:
name: Extract version from tag
runs-on: ubuntu-latest
outputs:
version: ${{ steps.get-version.outputs.version }}
steps:
- name: Get version from tag
id: get-version
run: echo "version=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT"
validate-modules:
name: Validate ${{ matrix.module }}
runs-on: ubuntu-latest
needs: extract-version
strategy:
matrix:
module: [armonik-client, worker]
fail-fast: true
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Temurin JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
cache: maven
gpg-private-key: ${{ secrets.GPG_SIGNING_KEY }}
gpg-passphrase: MAVEN_GPG_PASSPHRASE
env:
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_SIGNING_KEY_PASSWORD }}
- name: Set project version
working-directory: ${{ matrix.module }}
run: ./mvnw -B -ntp versions:set -DnewVersion=${{ needs.extract-version.outputs.version }} -DprocessAllModules=true -DgenerateBackupPoms=false
- name: Check for SNAPSHOT dependencies
working-directory: ${{ matrix.module }}
run: |
echo "🔍 Checking for SNAPSHOT dependencies..."
SNAPSHOT_FILES=$(find . -name "pom.xml" -type f -exec grep -l "SNAPSHOT" {} \;)
if [ -n "$SNAPSHOT_FILES" ]; then
echo "❌ ERROR: SNAPSHOT dependencies found in release build!"
echo ""
echo "Files containing SNAPSHOT:"
echo "$SNAPSHOT_FILES"
exit 1
fi
echo "✅ No SNAPSHOT dependencies found"
- name: Verify build
working-directory: ${{ matrix.module }}
run: ./mvnw -B -ntp -Pci-release verify
env:
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_SIGNING_KEY_PASSWORD }}
publish-modules:
name: Publish ${{ matrix.module }}
runs-on: ubuntu-latest
needs: [extract-version, validate-modules]
strategy:
matrix:
module: [armonik-client, worker]
fail-fast: true
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Temurin JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
cache: maven
server-id: central
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
gpg-private-key: ${{ secrets.GPG_SIGNING_KEY }}
gpg-passphrase: MAVEN_GPG_PASSPHRASE
env:
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_SIGNING_KEY_PASSWORD }}
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
- name: Set project version
working-directory: ${{ matrix.module }}
run: ./mvnw -B -ntp versions:set -DnewVersion=${{ needs.extract-version.outputs.version }} -DprocessAllModules=true -DgenerateBackupPoms=false
- name: Deploy to Sonatype Central
working-directory: ${{ matrix.module }}
run: ./mvnw -B -ntp -Pci-release deploy -DskipTests
env:
MAVEN_GPG_PASSPHRASE: ${{ secrets.GPG_SIGNING_KEY_PASSWORD }}
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
publish-docker-image:
name: Build and publish Docker image
runs-on: ubuntu-latest
needs: [extract-version, publish-modules]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Temurin JDK 17
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: '17'
cache: maven
- name: Set project version
working-directory: worker
run: ./mvnw -B -ntp versions:set -DnewVersion=${{ needs.extract-version.outputs.version }} -DprocessAllModules=true -DgenerateBackupPoms=false
- name: Build and push Docker image
working-directory: worker/armonik-worker
run: ./mvnw -B -ntp clean package -Pdocker
env:
DOCKER_USERNAME: ${{ secrets.DOCKER_HUB_LOGIN }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Verify Docker image
run: |
echo "✅ Docker image published:"
echo " dockerhubaneo/armonik-dynamic-java-worker:${{ needs.extract-version.outputs.version }}"
echo " dockerhubaneo/armonik-dynamic-java-worker:latest"