Skip to content

Deploy to Maven Central #189

Deploy to Maven Central

Deploy to Maven Central #189

Workflow file for this run

name: Deploy to Maven Central
on:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+"
branches:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Set up GnuPG
env:
GPG_EXECUTABLE: gpg
GPG_SECRET_KEYS: ${{ secrets.GPG_SECRET_KEYS }}
GPG_OWNERTRUST: ${{ secrets.GPG_OWNERTRUST }}
run: |
mkdir -m 700 ~/.gnupg/
echo 'use-agent' > ~/.gnupg/gpg.conf
echo 'pinentry-mode loopback' >> ~/.gnupg/gpg.conf
echo 'allow-loopback-pinentry' > ~/.gnupg/gpg-agent.conf
echo $GPG_SECRET_KEYS | base64 --decode | $GPG_EXECUTABLE --yes --batch --import
echo $GPG_OWNERTRUST | base64 --decode | $GPG_EXECUTABLE --yes --batch --import-ownertrust
- name: Checkout Source
uses: actions/checkout@v4
- name: Cache maven repository
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-dpl-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-dpl
${{ runner.os }}-maven
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: 21
- name: Build and Deploy with Maven
env:
GPG_EXECUTABLE: gpg
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
run: |
mvn -B deploy -P release --settings maven-ci-settings.xml
echo "Exporting Variables"
export HTTP_NAME=$(mvn -pl FROST-Server.HTTP -Dexec.executable='echo' -Dexec.args='${project.build.finalName}' exec:exec -q)
export MQTTP_NAME=$(mvn -pl FROST-Server.MQTTP -Dexec.executable='echo' -Dexec.args='${project.build.finalName}' exec:exec -q)
export MQTT_NAME=$(mvn -pl FROST-Server.MQTT -Dexec.executable='echo' -Dexec.args='${project.build.finalName}' exec:exec -q)
echo "HTTP_ARTIFACT=${HTTP_NAME}.war" >> $GITHUB_ENV
echo "MQTTP_ARTIFACT=${MQTTP_NAME}.war" >> $GITHUB_ENV
echo "MQTT_ARTIFACT=${MQTT_NAME}-jar-with-dependencies.jar" >> $GITHUB_ENV
export version=$(mvn -Dexec.executable='echo' -Dexec.args='${project.version}' --non-recursive exec:exec -q)
echo "DOCKER_TAG_FULL=${version}" >> $GITHUB_ENV
echo "DOCKER_TAG_SHORT=${version%.*}" >> $GITHUB_ENV
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push - HTTP
uses: docker/build-push-action@v6
with:
platforms: linux/amd64,linux/arm64
context: "./FROST-Server.HTTP"
push: true
build-args: |
ARTIFACT_FILE=${{ env.HTTP_ARTIFACT }}
tags: |
fraunhoferiosb/frost-server-http:${{ env.DOCKER_TAG_FULL }}
fraunhoferiosb/frost-server-http:${{ env.DOCKER_TAG_SHORT }}
- name: Build and push - MQTTP
uses: docker/build-push-action@v6
with:
platforms: linux/amd64,linux/arm64
context: "./FROST-Server.MQTTP"
push: true
build-args: |
ARTIFACT_FILE=${{ env.MQTTP_ARTIFACT }}
tags: |
fraunhoferiosb/frost-server:${{ env.DOCKER_TAG_FULL }}
fraunhoferiosb/frost-server:${{ env.DOCKER_TAG_SHORT }}
- name: Build and push - MQTT
uses: docker/build-push-action@v6
with:
platforms: linux/amd64,linux/arm64
context: "./FROST-Server.MQTT"
push: true
build-args: |
ARTIFACT_FILE=${{ env.MQTT_ARTIFACT }}
tags: |
fraunhoferiosb/frost-server-mqtt:${{ env.DOCKER_TAG_FULL }}
fraunhoferiosb/frost-server-mqtt:${{ env.DOCKER_TAG_SHORT }}