97 lines
3.3 KiB
YAML
97 lines
3.3 KiB
YAML
name: Deploy to Maven Repository
|
|
|
|
on:
|
|
release:
|
|
types: [published]
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up JDK
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: 'temurin'
|
|
java-version: '21'
|
|
cache: 'maven'
|
|
|
|
- uses: stCarolas/setup-maven@v5
|
|
with:
|
|
maven-version: 3.9.6
|
|
|
|
- name: Debug Java setup
|
|
run: |
|
|
echo "JAVA_HOME=$JAVA_HOME"
|
|
echo "PATH=$PATH"
|
|
which java || echo "java not found"
|
|
which mvn || echo "mvn not found"
|
|
ls $JAVA_HOME/../bin/ || echo "JAVA_HOME bin not found"
|
|
cat $GITHUB_PATH || echo "GITHUB_PATH file empty or missing"
|
|
|
|
- name: Get release version
|
|
id: get_version
|
|
run: echo "version=${{ github.event.release.tag_name }}" >> $GITHUB_ENV
|
|
|
|
- name: Set version from release tag
|
|
run: mvn -B versions:set -DnewVersion="${{ github.event.release.tag_name }}" -DgenerateBackupPoms=false
|
|
|
|
- name: Build plugin
|
|
run: mvn -B -U -C clean package -DskipTests
|
|
|
|
- name: Extract Maven coordinates
|
|
id: meta
|
|
run: |
|
|
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: Generate checksums
|
|
run: |
|
|
ARTIFACT_ID=${{ steps.meta.outputs.artifactId }}
|
|
VERSION=${{ steps.meta.outputs.version }}
|
|
|
|
JAR_FILE=target/$ARTIFACT_ID-$VERSION.jar
|
|
POM_FILE=target/$ARTIFACT_ID-$VERSION.pom
|
|
|
|
cp pom.xml $POM_FILE
|
|
|
|
for file in $JAR_FILE $POM_FILE; do
|
|
sha1sum "$file" | awk '{ print $1 }' > "$file.sha1"
|
|
md5sum "$file" | awk '{ print $1 }' > "$file.md5"
|
|
done
|
|
|
|
- name: Upload artifact and checksums to VPS
|
|
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"
|
|
|
|
echo "Creating remote directory: $REMOTE_DIR"
|
|
ssh ${{ secrets.MVN_REPO_SSH_USER }}@${{ secrets.MVN_REPO_SSH_HOST }} "mkdir -p $REMOTE_DIR"
|
|
|
|
FILES=(
|
|
"target/$ARTIFACT_ID-$VERSION.jar"
|
|
"target/$ARTIFACT_ID-$VERSION.jar.sha1"
|
|
"target/$ARTIFACT_ID-$VERSION.jar.md5"
|
|
"target/$ARTIFACT_ID-$VERSION.pom"
|
|
"target/$ARTIFACT_ID-$VERSION.pom.sha1"
|
|
"target/$ARTIFACT_ID-$VERSION.pom.md5"
|
|
)
|
|
|
|
echo "Uploading files..."
|
|
for file in "${FILES[@]}"; do
|
|
echo "Uploading $file"
|
|
scp "$file" ${{ secrets.MVN_REPO_SSH_USER }}@${{ secrets.MVN_REPO_SSH_HOST }}:$REMOTE_DIR/
|
|
done |