Skip to content

Deploy to Maven Repository #5

Deploy to Maven Repository

Deploy to Maven Repository #5

Workflow file for this run

name: Deploy to Maven Repository
on:
release:
types: [published]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '21'
cache: 'maven'
- name: Build submodules
run: |
for module in netwatchz-spigot netwatchz-paper; do
echo "Building $module..."
mvn -pl $module -am clean package -DskipTests
done
- name: Set up SSH
run: |
if [ -z "${{ secrets.MVN_REPO_SSH_KEY }}" ]; then
echo "Error: MVN_REPO_SSH_KEY is not set"
exit 1
fi
if [ -z "${{ secrets.MVN_REPO_SSH_HOST }}" ]; then
echo "Error: MVN_REPO_SSH_HOST is not set"
exit 1
fi
mkdir -p ~/.ssh
echo "${{ secrets.MVN_REPO_SSH_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H ${{ secrets.MVN_REPO_SSH_HOST }} >> ~/.ssh/known_hosts
- name: Check if versions already exist and upload
run: |
for module in netwatchz-spigot netwatchz-paper; do
echo "Processing $module..."
cd $module
GROUP_ID=$(mvn help:evaluate -Dexpression=project.groupId -q -DforceStdout)
ARTIFACT_ID=$(mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout)
VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)
cd ..
GROUP_PATH=$(echo "$GROUP_ID" | sed 's/\./\//g')
REMOTE_DIR="${{ secrets.REMOTE_MAVEN_PATH }}/$GROUP_PATH/$ARTIFACT_ID/$VERSION"
REMOTE_JAR="$REMOTE_DIR/$ARTIFACT_ID-$VERSION.jar"
echo "Checking if $REMOTE_JAR exists..."
if ssh ${{ secrets.MVN_REPO_SSH_USER }}@${{ secrets.MVN_REPO_SSH_HOST }} "[ -f $REMOTE_JAR ]"; then
echo "Version $VERSION of $ARTIFACT_ID already exists. Exiting."
exit 1
fi
# Prepare checksums
mkdir -p checksums
cp $module/target/$ARTIFACT_ID-$VERSION.jar checksums/
cp $module/pom.xml checksums/$ARTIFACT_ID-$VERSION.pom
cd checksums
for file in *.{jar,pom}; do
sha1sum "$file" | awk '{print $1}' > "$file.sha1"
md5sum "$file" | awk '{print $1}' > "$file.md5"
done
# Upload artifacts
ssh ${{ secrets.MVN_REPO_SSH_USER }}@${{ secrets.MVN_REPO_SSH_HOST }} "mkdir -p $REMOTE_DIR"
scp * ${{ secrets.MVN_REPO_SSH_USER }}@${{ secrets.MVN_REPO_SSH_HOST }}:$REMOTE_DIR/
cd ..
rm -rf checksums
done