Skip to content

Release 1.11.0

Release 1.11.0 #30

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 zetacore module
run: mvn -pl zetacore -am clean package -DskipTests
- name: Extract Maven coordinates for zetacore
id: meta
run: |
cd zetacore
echo "groupId=$(mvn help:evaluate -Dexpression=project.groupId -q -DforceStdout)" >> $GITHUB_OUTPUT
echo "artifactId=$(mvn help:evaluate -Dexpression=project.artifactId -q -DforceStdout)" >> $GITHUB_OUTPUT
echo "version=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_OUTPUT
- name: Set up SSH
run: |
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 version already exists
run: |
GROUP_PATH=$(echo "${{ steps.meta.outputs.groupId }}" | sed 's/\./\//g')
ARTIFACT_ID=${{ steps.meta.outputs.artifactId }}
VERSION=${{ steps.meta.outputs.version }}
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 on remote repository..."
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
else
echo "Version does not exist. Continuing deployment..."
fi
- name: Generate checksums and upload artifacts (including sources & javadoc)
run: |
GROUP_PATH=$(echo "${{ steps.meta.outputs.groupId }}" | sed 's/\./\//g')
ARTIFACT_ID=${{ steps.meta.outputs.artifactId }}
VERSION=${{ steps.meta.outputs.version }}
REMOTE_DIR="${{ secrets.REMOTE_MAVEN_PATH }}/$GROUP_PATH/$ARTIFACT_ID/$VERSION"
mkdir -p checksums
# copy primary artifacts (main jar + pom)
cp zetacore/target/$ARTIFACT_ID-$VERSION.jar checksums/ || { echo "Main JAR not found"; exit 1; }
cp zetacore/pom.xml checksums/$ARTIFACT_ID-$VERSION.pom || { echo "POM not found"; exit 1; }
# copy sources and javadoc jars if they were produced
if [ -f "zetacore/target/$ARTIFACT_ID-$VERSION-sources.jar" ]; then
cp zetacore/target/$ARTIFACT_ID-$VERSION-sources.jar checksums/
else
echo "Warning: sources jar not found; continuing without it."
fi
if [ -f "zetacore/target/$ARTIFACT_ID-$VERSION-javadoc.jar" ]; then
cp zetacore/target/$ARTIFACT_ID-$VERSION-javadoc.jar checksums/
else
echo "Warning: javadoc jar not found; continuing without it."
fi
cd checksums
# Generate checksum files (.sha1 and .md5) for any jar/pom present
for file in *.jar *.pom; do
[ -f "$file" ] || continue
sha1sum "$file" | awk '{print $1}' > "$file.sha1"
md5sum "$file" | awk '{print $1}' > "$file.md5"
done
echo "Creating remote directory: $REMOTE_DIR"
ssh ${{ secrets.MVN_REPO_SSH_USER }}@${{ secrets.MVN_REPO_SSH_HOST }} "mkdir -p $REMOTE_DIR"
echo "Uploading artifacts and checksums"
scp * ${{ secrets.MVN_REPO_SSH_USER }}@${{ secrets.MVN_REPO_SSH_HOST }}:$REMOTE_DIR/