From 27be6e7167eef12555158d720686542a75fd6fcf Mon Sep 17 00:00:00 2001 From: dev-claw <53543762+dev-claw@users.noreply.github.com> Date: Fri, 10 Oct 2025 20:41:45 +0100 Subject: [PATCH] Update package.yml --- .github/workflows/package.yml | 213 ++++++++++++++++++++++++++++------ 1 file changed, 176 insertions(+), 37 deletions(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index ac06031..f59a9b7 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -2,54 +2,193 @@ name: Package on: workflow_dispatch: + inputs: + release: + description: 'Release' + required: true + default: '' jobs: build: strategy: matrix: - os: [ubuntu-latest, windows-latest, macos-latest] + os: [ ubuntu-latest, windows-latest, macos-13, macos-latest ] runs-on: ${{ matrix.os }} + permissions: + contents: write + packages: write steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v3 - - name: Set up JDK 17 - uses: actions/setup-java@v3 - with: - java-version: '17' - distribution: 'temurin' - server-id: github # Value of the distributionManagement/repository/id field of the pom.xml - settings-path: ${{ github.workspace }} # location for the settings.xml file + - name: Set up jdk21 + uses: actions/setup-java@v3 + with: + java-version: '21' + distribution: 'temurin' + server-id: github # Value of the distributionManagement/repository/id field of the pom.xml + settings-path: ${{ github.workspace }} # location for the settings.xml file - - name: Build with Maven - run: mvn -B install --file pom.xml + - name: Build gui jar + run: | + mvn -N -q install --file pom.xml + mvn -B -q install --file vripper-core/pom.xml + mvn -B -q install --file vripper-gui/pom.xml + mv vripper-gui/target/vripper-gui-${{ ${{ github.event.inputs.release }} }}-jar-with-dependencies.jar vripper-gui/target/vripper-noarch-gui-${{ ${{ github.event.inputs.release }} }}.jar - - name: Rename GUI artifact - run: mv vripper-gui/target/vripper-gui-*.jar vripper-gui/target/vripper-gui.jar + - if: matrix.os == 'ubuntu-latest' + name: Release gui Jar + uses: softprops/action-gh-release@v1 + with: + files: vripper-gui/target/vripper-noarch-gui-${{ ${{ github.event.inputs.release }} }}.jar - - name: Rename WEB artifact - run: mv vripper-web/target/vripper-web-*.jar vripper-web/target/vripper-web.jar + # Start building WEB jar in ubuntu only + - if: matrix.os == 'ubuntu-latest' + name: Build web Jar + run: | + mvn -B -q install --file vripper-web-ui/pom.xml + mvn -B -q install --file vripper-web/pom.xml + mv vripper-web/target/vripper-web-${{ ${{ github.event.inputs.release }} }}.jar vripper-web/target/vripper-noarch-web-${{ ${{ github.event.inputs.release }} }}.jar - - if: matrix.os == 'ubuntu-latest' - name: Package Linux binaries - run: | - cd jpackage - cp ../vripper-gui/target/vripper-gui.jar jar/vripper-gui.jar - jpackage --type deb "@jpackage.cfg" "@jpackage-linux.cfg" - jpackage --type rpm "@jpackage.cfg" "@jpackage-linux.cfg" - ls -la dist + - if: matrix.os == 'ubuntu-latest' + name: Release web Jar + uses: softprops/action-gh-release@v1 + with: + files: vripper-web/target/vripper-noarch-web-${{ ${{ github.event.inputs.release }} }}.jar + # End building WEB jar in ubuntu only - - if: matrix.os == 'windows-latest' - name: Package Windows binaries - run: | - cd jpackage - cp ../vripper-gui/target/vripper-gui.jar jar/vripper-gui.jar - jpackage "@jpackage.cfg" "@jpackage-windows.cfg" - dir dist + # Start building docker image in ubuntu only + - if: matrix.os == 'ubuntu-latest' + name: Log in to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} - - if: matrix.os == 'macos-latest' - name: Package macOS binaries - run: | - cd jpackage - cp ../vripper-gui/target/vripper-gui.jar jar/vripper-gui.jar - jpackage "@jpackage.cfg" "@jpackage-macos.cfg" - ls -la dist + - if: matrix.os == 'ubuntu-latest' + name: Build Docker image + run: | + mkdir docker_build && cp Dockerfile docker_build/Dockerfile && cp vripper-web/target/vripper-noarch-web-${{ ${{ github.event.inputs.release }} }}.jar docker_build/vripper-web.jar + docker build -t ghcr.io/dev-claw/vripper-web docker_build + docker tag ghcr.io/dev-claw/vripper-web:latest ghcr.io/dev-claw/vripper-web:${{ ${{ github.event.inputs.release }} }} + docker push ghcr.io/dev-claw/vripper-web:latest + docker push ghcr.io/dev-claw/vripper-web:${{ ${{ github.event.inputs.release }} }} + + # End building docker image in ubuntu only + + - name: Prepare Packaging + run: | + cp vripper-gui/target/vripper-noarch-gui-${{ ${{ github.event.inputs.release }} }}.jar jpackage/jar/vripper-gui.jar + + - if: matrix.os == 'ubuntu-latest' + name: Package for Linux + run: | + cd jpackage + jpackage --app-version ${{ ${{ github.event.inputs.release }} }} "@jpackage.cfg" "@jpackage-app-image.cfg" --icon resources/VRipper.png + jpackage --app-version ${{ ${{ github.event.inputs.release }} }} "@jpackage.cfg" "@jpackage-linux.cfg" --resource-dir resources --type deb + jpackage --app-version ${{ ${{ github.event.inputs.release }} }} "@jpackage.cfg" "@jpackage-linux.cfg" --resource-dir resources --type rpm + mv dist/vripper-${{ ${{ github.event.inputs.release }} }}-1.x86_64.rpm dist/vripper-linux-${{ ${{ github.event.inputs.release }} }}.x86_64.rpm + mv dist/vripper_${{ ${{ github.event.inputs.release }} }}-1_amd64.deb dist/vripper-linux-${{ ${{ github.event.inputs.release }} }}_amd64.deb + + - if: matrix.os == 'windows-latest' + name: Package for Windows + run: | + cd jpackage + jpackage --app-version ${{ ${{ github.event.inputs.release }} }} "@jpackage.cfg" "@jpackage-app-image.cfg" --icon resources/VRipper.ico + jpackage --app-version ${{ ${{ github.event.inputs.release }} }} "@jpackage.cfg" "@jpackage-windows.cfg" --resource-dir resources --type msi + jpackage --app-version ${{ ${{ github.event.inputs.release }} }} "@jpackage.cfg" "@jpackage-windows.cfg" --resource-dir resources --type exe + cd dist + ren VRipper-${{ ${{ github.event.inputs.release }} }}.msi vripper-windows-installer-${{ ${{ github.event.inputs.release }} }}.msi + ren VRipper-${{ ${{ github.event.inputs.release }} }}.exe vripper-windows-installer-${{ ${{ github.event.inputs.release }} }}.exe + + - if: matrix.os == 'macos-latest' + name: Package for macOS(arm64) + run: | + cd jpackage + jpackage --app-version ${{ ${{ github.event.inputs.release }} }} "@jpackage.cfg" "@jpackage-app-image.cfg" --icon resources/VRipper.icns + jpackage --app-version ${{ ${{ github.event.inputs.release }} }} "@jpackage.cfg" "@jpackage-macos.cfg" --resource-dir resources --type pkg + jpackage --app-version ${{ ${{ github.event.inputs.release }} }} "@jpackage.cfg" "@jpackage-macos.cfg" --resource-dir resources --type dmg + mv dist/VRipper-${{ ${{ github.event.inputs.release }} }}.pkg dist/vripper-macos-${{ ${{ github.event.inputs.release }} }}.arm64.pkg + mv dist/VRipper-${{ ${{ github.event.inputs.release }} }}.dmg dist/vripper-macos-${{ ${{ github.event.inputs.release }} }}.arm64.dmg + + - if: matrix.os == 'macos-13' + name: Package for macOS(x86_64) + run: | + cd jpackage + jpackage --app-version ${{ ${{ github.event.inputs.release }} }} "@jpackage.cfg" "@jpackage-app-image.cfg" --icon resources/VRipper.icns + jpackage --app-version ${{ ${{ github.event.inputs.release }} }} "@jpackage.cfg" "@jpackage-macos.cfg" --resource-dir resources --type pkg + jpackage --app-version ${{ ${{ github.event.inputs.release }} }} "@jpackage.cfg" "@jpackage-macos.cfg" --resource-dir resources --type dmg + mv dist/VRipper-${{ ${{ github.event.inputs.release }} }}.pkg dist/vripper-macos-${{ ${{ github.event.inputs.release }} }}.x86_64.pkg + mv dist/VRipper-${{ ${{ github.event.inputs.release }} }}.dmg dist/vripper-macos-${{ ${{ github.event.inputs.release }} }}.x86_64.dmg + + - if: matrix.os == 'ubuntu-latest' + name: Zip Ubuntu portable + uses: thedoctor0/zip-release@0.7.1 + with: + type: 'zip' + directory: 'jpackage/dist' + path: 'VRipper' + filename: 'vripper-linux-portable-${{ ${{ github.event.inputs.release }} }}.zip' + + - if: matrix.os == 'windows-latest' + name: Zip Windows portable + uses: thedoctor0/zip-release@0.7.1 + with: + type: 'zip' + directory: 'jpackage/dist' + path: 'VRipper' + filename: 'vripper-windows-portable-${{ ${{ github.event.inputs.release }} }}.zip' + + - if: matrix.os == 'macos-latest' + name: Zip macOS(arm64) portable + uses: thedoctor0/zip-release@0.7.1 + with: + type: 'zip' + directory: 'jpackage/dist' + path: 'VRipper.app' + filename: 'vripper-macos-portable-${{ ${{ github.event.inputs.release }} }}.arm64.zip' + + - if: matrix.os == 'macos-13' + name: Zip macOS(x86_64) portable + uses: thedoctor0/zip-release@0.7.1 + with: + type: 'zip' + directory: 'jpackage/dist' + path: 'VRipper.app' + filename: 'vripper-macos-portable-${{ ${{ github.event.inputs.release }} }}.x86_64.zip' + + - if: matrix.os == 'ubuntu-latest' + name: Release packages for Linux + uses: softprops/action-gh-release@v1 + with: + files: | + jpackage/dist/vripper-linux-${{ ${{ github.event.inputs.release }} }}.x86_64.rpm + jpackage/dist/vripper-linux-${{ ${{ github.event.inputs.release }} }}_amd64.deb + jpackage/dist/vripper-linux-portable-${{ ${{ github.event.inputs.release }} }}.zip + + - if: matrix.os == 'windows-latest' + name: Release packages for Windows + uses: softprops/action-gh-release@v1 + with: + files: | + jpackage/dist/vripper-windows-installer-${{ ${{ github.event.inputs.release }} }}.msi + jpackage/dist/vripper-windows-installer-${{ ${{ github.event.inputs.release }} }}.exe + jpackage/dist/vripper-windows-portable-${{ ${{ github.event.inputs.release }} }}.zip + + - if: matrix.os == 'macos-latest' + name: Release packages for macOS(arm64) + uses: softprops/action-gh-release@v1 + with: + files: | + jpackage/dist/vripper-macos-${{ ${{ github.event.inputs.release }} }}.arm64.pkg + jpackage/dist/vripper-macos-${{ ${{ github.event.inputs.release }} }}.arm64.dmg + jpackage/dist/vripper-macos-portable-${{ ${{ github.event.inputs.release }} }}.arm64.zip + + - if: matrix.os == 'macos-13' + name: Release packages for macOS(x86_64) + uses: softprops/action-gh-release@v1 + with: + files: | + jpackage/dist/vripper-macos-${{ ${{ github.event.inputs.release }} }}.x86_64.pkg + jpackage/dist/vripper-macos-${{ ${{ github.event.inputs.release }} }}.x86_64.dmg + jpackage/dist/vripper-macos-portable-${{ ${{ github.event.inputs.release }} }}.x86_64.zip