name: Package on: workflow_dispatch: inputs: release: description: 'Release' required: true type: string jobs: build: strategy: matrix: os: [ ubuntu-latest, windows-latest, macos-13, macos-latest ] runs-on: ${{ matrix.os }} permissions: contents: write packages: write steps: - uses: actions/checkout@v3 - name: Set up jdk25 uses: actions/setup-java@v3 with: java-version: '25' distribution: 'zulu' - 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-${{ inputs.release }}-jar-with-dependencies.jar vripper-gui/target/vripper-noarch-gui-${{ inputs.release }}.jar - if: matrix.os == 'ubuntu-latest' name: Release gui Jar uses: softprops/action-gh-release@v1 with: files: vripper-gui/target/vripper-noarch-gui-${{ inputs.release }}.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-${{ inputs.release }}.jar vripper-web/target/vripper-noarch-web-${{ inputs.release }}.jar - if: matrix.os == 'ubuntu-latest' name: Release web Jar uses: softprops/action-gh-release@v1 with: files: vripper-web/target/vripper-noarch-web-${{ inputs.release }}.jar # End building WEB jar in ubuntu only # 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 == 'ubuntu-latest' name: Build Docker image run: | mkdir docker_build && cp Dockerfile docker_build/Dockerfile && cp vripper-web/target/vripper-noarch-web-${{ 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:${{ inputs.release }} docker push ghcr.io/dev-claw/vripper-web:latest docker push ghcr.io/dev-claw/vripper-web:${{ inputs.release }} # End building docker image in ubuntu only - name: Prepare Packaging run: | cp vripper-gui/target/vripper-noarch-gui-${{ inputs.release }}.jar jpackage/jar/vripper-gui.jar - if: matrix.os == 'ubuntu-latest' name: Package for Linux run: | cd jpackage jpackage --app-version ${{ inputs.release }} "@jpackage.cfg" "@jpackage-app-image.cfg" --icon resources/VRipper.png jpackage --app-version ${{ inputs.release }} "@jpackage.cfg" "@jpackage-linux.cfg" --resource-dir resources --type deb jpackage --app-version ${{ inputs.release }} "@jpackage.cfg" "@jpackage-linux.cfg" --resource-dir resources --type rpm mv dist/vripper-${{ inputs.release }}-1.x86_64.rpm dist/vripper-linux-${{ inputs.release }}.x86_64.rpm mv dist/vripper_${{ inputs.release }}-1_amd64.deb dist/vripper-linux-${{ inputs.release }}_amd64.deb - if: matrix.os == 'windows-latest' name: Package for Windows run: | cd jpackage jpackage --app-version ${{ inputs.release }} "@jpackage.cfg" "@jpackage-app-image.cfg" --icon resources/VRipper.ico jpackage --app-version ${{ inputs.release }} "@jpackage.cfg" "@jpackage-windows.cfg" --resource-dir resources --type msi jpackage --app-version ${{ inputs.release }} "@jpackage.cfg" "@jpackage-windows.cfg" --resource-dir resources --type exe cd dist ren VRipper-${{ inputs.release }}.msi vripper-windows-installer-${{ inputs.release }}.msi ren VRipper-${{ inputs.release }}.exe vripper-windows-installer-${{ inputs.release }}.exe - if: matrix.os == 'macos-latest' name: Package for macOS(arm64) run: | cd jpackage jpackage --app-version ${{ inputs.release }} "@jpackage.cfg" "@jpackage-app-image.cfg" --icon resources/VRipper.icns jpackage --app-version ${{ inputs.release }} "@jpackage.cfg" "@jpackage-macos.cfg" --resource-dir resources --type pkg jpackage --app-version ${{ inputs.release }} "@jpackage.cfg" "@jpackage-macos.cfg" --resource-dir resources --type dmg mv dist/VRipper-${{ inputs.release }}.pkg dist/vripper-macos-${{ inputs.release }}.arm64.pkg mv dist/VRipper-${{ inputs.release }}.dmg dist/vripper-macos-${{ inputs.release }}.arm64.dmg - if: matrix.os == 'macos-13' name: Package for macOS(x86_64) run: | cd jpackage jpackage --app-version ${{ inputs.release }} "@jpackage.cfg" "@jpackage-app-image.cfg" --icon resources/VRipper.icns jpackage --app-version ${{ inputs.release }} "@jpackage.cfg" "@jpackage-macos.cfg" --resource-dir resources --type pkg jpackage --app-version ${{ inputs.release }} "@jpackage.cfg" "@jpackage-macos.cfg" --resource-dir resources --type dmg mv dist/VRipper-${{ inputs.release }}.pkg dist/vripper-macos-${{ inputs.release }}.x86_64.pkg mv dist/VRipper-${{ inputs.release }}.dmg dist/vripper-macos-${{ 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-${{ 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-${{ 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-${{ 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-${{ 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-${{ inputs.release }}.x86_64.rpm jpackage/dist/vripper-linux-${{ inputs.release }}_amd64.deb jpackage/dist/vripper-linux-portable-${{ 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-${{ inputs.release }}.msi jpackage/dist/vripper-windows-installer-${{ inputs.release }}.exe jpackage/dist/vripper-windows-portable-${{ 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-${{ inputs.release }}.arm64.pkg jpackage/dist/vripper-macos-${{ inputs.release }}.arm64.dmg jpackage/dist/vripper-macos-portable-${{ 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-${{ inputs.release }}.x86_64.pkg jpackage/dist/vripper-macos-${{ inputs.release }}.x86_64.dmg jpackage/dist/vripper-macos-portable-${{ inputs.release }}.x86_64.zip