diff --git a/.github/workflows/make-release.yaml b/.github/workflows/make-release.yaml new file mode 100644 index 0000000..8901831 --- /dev/null +++ b/.github/workflows/make-release.yaml @@ -0,0 +1,77 @@ +name: Make Release +on: + push: + tags: + - "v*" +jobs: + make-linux-deb: + runs-on: ubuntu-latest + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Setup JDK 21 + uses: actions/setup-java@v4 + with: + java-version: 21 + distribution: temurin + cache: maven + + - name: Build Linux DEB Package for Release + run: ./scripts/package-linux-deb.sh + + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: linux-deb + path: '*.deb' + if-no-files-found: error + retention-days: 1 + compression-level: 0 + + make-windows-msi: + runs-on: windows-latest + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Setup JDK 21 + uses: actions/setup-java@v4 + with: + java-version: 21 + distribution: temurin + cache: maven + + - name: Build Windows MSI Package for Release + if: ${{ startsWith(github.ref, 'refs/tags/') && runner.os == 'Windows' }} + run: powershell.exe -File scripts\package-windows-msi.ps1 + + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: windows-msi + path: '*.msi' + if-no-files-found: error + retention-days: 1 + compression-level: 0 + + make-release: + needs: + - make-linux-deb + - make-windows-msi + runs-on: ubuntu-latest + steps: + - name: Download All Artifacts + uses: actions/download-artifact@v4 + with: + path: release-artifacts + merge-multiple: true + - name: List Artifacts + run: ls -R release-artifacts + - name: Create Release + uses: softprops/action-gh-release@v1 + with: + fail-on-unmatched-files: true + files: | + release-artifacts/*.deb + release-artifacts/*.msi diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index 506feeb..25e0d6c 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -3,13 +3,11 @@ on: push: branches: - "*" - tags: - - "v*" jobs: maven-tests: strategy: matrix: - os: [ubuntu-latest, windows-latest] + os: [ubuntu-latest, windows-latest, macos-latest] runs-on: ${{ matrix.os }} steps: - name: Checkout Repository @@ -22,27 +20,5 @@ jobs: distribution: temurin cache: maven - - name: Check versions - run: | - java -version - javac -version - ./mvnw -version - - name: Test with Maven run: ./mvnw -B verify --file pom.xml - - - name: Build Linux DEB Package for Release - if: ${{ startsWith(github.ref, 'refs/tags/') && runner.os == 'Linux' }} - run: ./scripts/package-linux-deb.sh - - - name: Build Windows MSI Package for Release - if: ${{ startsWith(github.ref, 'refs/tags/') && runner.os == 'Windows' }} - run: powershell.exe -File scripts/package-windows-msi.ps1 - - - name: Create Release - if: ${{ startsWith(github.ref, 'refs/tags/') }} - uses: softprops/action-gh-release@v1 - with: - fail_on_unmatched_files: false - files: | - *.deb diff --git a/design/perfin-logo_256.ico b/design/perfin-logo_256.ico new file mode 100644 index 0000000..389ecbf Binary files /dev/null and b/design/perfin-logo_256.ico differ diff --git a/pom.xml b/pom.xml index 07d9d7d..4b5bbcb 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.andrewlalis perfin - 0.0.1-SNAPSHOT + 0.0.3 21 diff --git a/scripts/package-linux-deb.sh b/scripts/package-linux-deb.sh index 21ee25c..cb57274 100755 --- a/scripts/package-linux-deb.sh +++ b/scripts/package-linux-deb.sh @@ -11,13 +11,15 @@ function join_by { fi } +# Fix because H2 is not modular: +rm target/lib/h2-*.jar + # Gets a ":"-separated string of all the dependency jar-files. module_jar_files=(target/lib/*) module_jar_files_path=$(join_by ":" ${module_jar_files[@]}) module_path="target/classes:$module_jar_files_path" # Fix because H2 is not modular: -rm target/lib/h2-*.jar module_path="$module_path:target/modules/h2-2.2.224.jar" jpackage \ @@ -26,9 +28,11 @@ jpackage \ --description "Desktop application for personal finance. Add your accounts, track transactions, and store receipts, invoices, and more." \ --icon design/perfin-logo_256.png \ --vendor "Andrew Lalis" \ + --about-url https://github.com/andrewlalis/perfin \ --module com.andrewlalis.perfin/com.andrewlalis.perfin.PerfinApp \ --module-path $module_path \ --add-modules com.h2database \ + --type deb \ --linux-deb-maintainer "andrewlalisofficial@gmail.com" \ --linux-shortcut \ --linux-menu-group "Office;Finance;Java" \ diff --git a/scripts/package-windows-msi.ps1 b/scripts/package-windows-msi.ps1 index 948f8d5..ba8843f 100644 --- a/scripts/package-windows-msi.ps1 +++ b/scripts/package-windows-msi.ps1 @@ -1,5 +1,26 @@ -$projectDir = $PSScriptRoot - ./mvnw.cmd clean package -$modules = Get-ChildItem -Path target/lib -Name | ForEach-Object { "lib\$_" } +# Fix because H2 is not modular: +Remove-Item -Path target\lib\h2-*.jar -Force + +$modules = Get-ChildItem -Path target\lib -Name | ForEach-Object { "target\lib\$_" } +$modulePath = $modules -join ';' +$modulePath = "target\classes;$modulePath" + +# Fix because H2 is not modular: +$modulePath = "$modulePath;target\modules\h2-2.2.224.jar" + +jpackage ` + --name "Perfin" ` + --app-version "0.0.1" ` + --description "Desktop application for personal finance. Add your accounts, track transactions, and store receipts, invoices, and more." ` + --icon design\perfin-logo_256.ico ` + --vendor "Andrew Lalis" ` + --about-url https://github.com/andrewlalis/perfin ` + --module com.andrewlalis.perfin/com.andrewlalis.perfin.PerfinApp ` + --module-path $modulePath ` + --add-modules com.h2database ` + --type msi ` + --win-menu ` + --win-shortcut-prompt ` + --win-help-url https://github.com/andrewlalis/perfin `