Release 1.11.0 #30
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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/ |