From 50d31bdc181da8c7d44dc6a70aedf146c4d74b9d Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Fri, 31 Mar 2023 18:24:10 +0200 Subject: [PATCH] integrate debug installer feature into regular windows ci workflow --- .github/workflows/win-debug.yml | 212 -------------------------------- .github/workflows/win-exe.yml | 10 ++ 2 files changed, 10 insertions(+), 212 deletions(-) delete mode 100644 .github/workflows/win-debug.yml diff --git a/.github/workflows/win-debug.yml b/.github/workflows/win-debug.yml deleted file mode 100644 index 88c29a8c4..000000000 --- a/.github/workflows/win-debug.yml +++ /dev/null @@ -1,212 +0,0 @@ -name: Build Windows Debug Installer - -on: - workflow_dispatch: - inputs: - version: - description: 'Version' - required: false - -env: - JAVA_VERSION: 19 - JAVA_DIST: 'temurin' - JAVA_CACHE: 'maven' - JFX_JMODS_URL: 'https://download2.gluonhq.com/openjfx/19.0.2.1/openjfx-19.0.2.1_windows-x64_bin-jmods.zip' - JFX_JMODS_HASH: 'B7CF2CAD2468842B3B78D99F6C0555771499A36FA1F1EE3DD1B9A4597F1FAB86' - -defaults: - run: - shell: bash - -jobs: - get-version: - uses: ./.github/workflows/get-version.yml - with: - version: ${{ inputs.version }} - - build-msi: - name: Build .msi Installer - runs-on: windows-latest - needs: [get-version] - env: - LOOPBACK_ALIAS: 'cryptomator-vault' - steps: - - uses: actions/checkout@v3 - - name: Setup Java - uses: actions/setup-java@v3 - with: - distribution: ${{ env.JAVA_DIST }} - java-version: ${{ env.JAVA_VERSION }} - java-package: 'jdk' - cache: ${{ env.JAVA_CACHE }} - - name: Download and extract JavaFX jmods from Gluon - #In the last step we move all jmods files a dir level up because jmods are placed inside a directory in the zip - run: | - curl --output jfxjmods.zip -L "${{ env.JFX_JMODS_URL }}" - if(!(Get-FileHash -Path jfxjmods.zip -Algorithm SHA256).Hash.equals("${{ env.JFX_JMODS_HASH }}")) { - exit 1; - } - Expand-Archive -Path jfxjmods.zip -DestinationPath jfxjmods - Get-ChildItem -Path jfxjmods -Recurse -Filter "*.jmod" | ForEach-Object { Move-Item -Path $_ -Destination $_.Directory.Parent} - shell: pwsh - - name: Ensure major jfx version in pom and in jmods is the same - run: | - JMOD_VERSION_AMD64=$(jmod describe jfxjmods/javafx.base.jmod | head -1) - JMOD_VERSION_AMD64=${JMOD_VERSION_AMD64#*@} - JMOD_VERSION_AMD64=${JMOD_VERSION_AMD64%%.*} - POM_JFX_VERSION=$(mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout) - POM_JFX_VERSION=${POM_JFX_VERSION#*@} - POM_JFX_VERSION=${POM_JFX_VERSION%%.*} - - if [ $POM_JFX_VERSION -ne $JMOD_VERSION_AMD64 ]; then - >&2 echo "Major JavaFX version in pom.xml (${POM_JFX_VERSION}) != amd64 jmod version (${JMOD_VERSION_AMD64})" - exit 1 - fi - - name: Set version - run : mvn versions:set -DnewVersion=${{ needs.get-version.outputs.semVerStr }} - - name: Run maven - run: mvn -B clean package -Pdependency-check,win -DskipTests - - name: Patch target dir - run: | - cp LICENSE.txt target - cp target/cryptomator-*.jar target/mods - - name: Run jlink - run: > - ${JAVA_HOME}/bin/jlink - --verbose - --output runtime - --module-path "jfxjmods;${JAVA_HOME}/jmods" - --add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility,jdk.management.jfr - --strip-native-commands - --no-header-files - --no-man-pages - --strip-debug - --compress=1 - - name: Run jpackage - run: > - ${JAVA_HOME}/bin/jpackage - --verbose - --type app-image - --runtime-image runtime - --input target/libs - --module-path target/mods - --module org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator - --dest appdir - --name Cryptomator - --vendor "Skymatic GmbH" - --copyright "(C) 2016 - 2023 Skymatic GmbH" - --app-version "${{ needs.get-version.outputs.semVerNum }}.${{ needs.get-version.outputs.revNum }}" - --win-console - --java-options "--enable-preview" - --java-options "--enable-native-access=org.cryptomator.jfuse.win" - --java-options "-Xss5m" - --java-options "-Xmx256m" - --java-options "-Dcryptomator.appVersion=\"${{ needs.get-version.outputs.semVerStr }}\"" - --java-options "-Dfile.encoding=\"utf-8\"" - --java-options "-Dcryptomator.logDir=\"~/AppData/Roaming/Cryptomator\"" - --java-options "-Dcryptomator.pluginDir=\"~/AppData/Roaming/Cryptomator/Plugins\"" - --java-options "-Dcryptomator.settingsPath=\"~/AppData/Roaming/Cryptomator/settings.json\"" - --java-options "-Dcryptomator.p12Path=\"~/AppData/Roaming/Cryptomator/key.p12\"" - --java-options "-Dcryptomator.ipcSocketPath=\"~/AppData/Roaming/Cryptomator/ipc.socket\"" - --java-options "-Dcryptomator.mountPointsDir=\"~/Cryptomator\"" - --java-options "-Dcryptomator.loopbackAlias=\"${{ env.LOOPBACK_ALIAS }}\"" - --java-options "-Dcryptomator.showTrayIcon=true" - --java-options "-Dcryptomator.buildNumber=\"msi-${{ needs.get-version.outputs.revNum }}-dbg\"" - --java-options "-Dcryptomator.integrationsWin.autoStartShellLinkName=\"Cryptomator\"" - --java-options "-Dcryptomator.integrationsWin.keychainPaths=\"~/AppData/Roaming/Cryptomator/keychain.json\"" - --java-options "-Djavafx.verbose=true" - --resource-dir dist/win/resources - --icon dist/win/resources/Cryptomator.ico - - name: Patch Application Directory - run: | - cp dist/win/contrib/* appdir/Cryptomator - - name: Set LOOPBACK_ALIAS in patchWebDAV.bat - shell: pwsh - run: | - $patchScript = "appdir\Cryptomator\patchWebDAV.bat" - try { - (Get-Content $patchScript ) -replace '::REPLACE ME', "SET LOOPBACK_ALIAS=`"${{ env.LOOPBACK_ALIAS}}`"" | Set-Content $patchScript - } catch { - Write-Host "Failed to set LOOPBACK_ALIAS for patchWebDAV.bat" - exit 1 - } - - name: Fix permissions - run: | - attrib -r appdir/Cryptomator/Cryptomator.exe - shell: pwsh - - name: Extract integrations DLL for code signing - shell: pwsh - run: gci ./appdir/Cryptomator/app/mods/ -File integrations-win-*.jar | ForEach-Object {Set-Location -Path $_.Directory; jar --file=$($_.FullName) --extract integrations.dll } - - name: Codesign - uses: skymatic/code-sign-action@v2 - with: - certificate: ${{ secrets.WIN_CODESIGN_P12_BASE64 }} - password: ${{ secrets.WIN_CODESIGN_P12_PW }} - certificatesha1: 5FC94CE149E5B511E621F53A060AC67CBD446B3A - description: Cryptomator - timestampUrl: 'http://timestamp.digicert.com' - folder: appdir/Cryptomator - recursive: true - - name: Repack signed DLL into jar - shell: pwsh - run: | - gci ./appdir/Cryptomator/app/mods/ -File integrations-win-*.jar | ForEach-Object {Set-Location -Path $_.Directory; jar --file=$($_.FullName) --update integrations.dll; Remove-Item integrations.dll} - - name: Generate license for MSI - run: > - mvn -B license:add-third-party - "-Dlicense.thirdPartyFilename=license.rtf" - "-Dlicense.outputDirectory=dist/win/resources" - "-Dlicense.fileTemplate=dist/win/resources/licenseTemplate.ftl" - "-Dlicense.includedScopes=compile" - "-Dlicense.excludedGroups=^org\.cryptomator" - "-Dlicense.failOnMissing=true" - "-Dlicense.licenseMergesUrl=file:///${{ github.workspace }}/license/merges" - shell: pwsh - - name: Create MSI - run: > - ${JAVA_HOME}/bin/jpackage - --verbose - --type msi - --win-upgrade-uuid bda45523-42b1-4cae-9354-a45475ed4775 - --app-image appdir/Cryptomator - --dest installer - --name Cryptomator - --vendor "Skymatic GmbH" - --copyright "(C) 2016 - 2023 Skymatic GmbH" - --app-version "${{ needs.get-version.outputs.semVerNum }}.${{ needs.get-version.outputs.revNum}}" - --win-menu - --win-dir-chooser - --win-shortcut-prompt - --win-update-url "https:\\cryptomator.org" - --win-menu-group Cryptomator - --resource-dir dist/win/resources - --license-file dist/win/resources/license.rtf - --file-associations dist/win/resources/FAvaultFile.properties - env: - JP_WIXWIZARD_RESOURCES: ${{ github.workspace }}/dist/win/resources # requires abs path, used in resources/main.wxs - - name: Codesign MSI - uses: skymatic/code-sign-action@v2 - with: - certificate: ${{ secrets.WIN_CODESIGN_P12_BASE64 }} - password: ${{ secrets.WIN_CODESIGN_P12_PW }} - certificatesha1: 5FC94CE149E5B511E621F53A060AC67CBD446B3A - description: Cryptomator Installer - timestampUrl: 'http://timestamp.digicert.com' - folder: installer - - name: Add possible alpha/beta tags to installer name - run: mv installer/Cryptomator-*.msi Cryptomator-${{ needs.get-version.outputs.semVerStr }}-x64.msi - - name: Create detached GPG signature with key 615D449FE6E6A235 - run: | - echo "${GPG_PRIVATE_KEY}" | gpg --batch --quiet --import - echo "${GPG_PASSPHRASE}" | gpg --batch --quiet --passphrase-fd 0 --pinentry-mode loopback -u 615D449FE6E6A235 --detach-sign -a Cryptomator-*.msi - env: - GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }} - GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }} - - name: Upload artifacts - uses: actions/upload-artifact@v3 - with: - name: msi - path: | - Cryptomator-*.msi - Cryptomator-*.asc - if-no-files-found: error \ No newline at end of file diff --git a/.github/workflows/win-exe.yml b/.github/workflows/win-exe.yml index 788d26a75..a06ff4733 100644 --- a/.github/workflows/win-exe.yml +++ b/.github/workflows/win-exe.yml @@ -8,6 +8,10 @@ on: version: description: 'Version' required: false + isDebug: + description: 'Build debug version with console output' + type: boolean + env: JAVA_VERSION: 19 @@ -32,6 +36,7 @@ jobs: needs: [get-version] env: LOOPBACK_ALIAS: 'cryptomator-vault' + WIN_CONSOLE_FLAG: '' steps: - uses: actions/checkout@v3 - name: Setup Java @@ -84,6 +89,9 @@ jobs: --no-man-pages --strip-debug --compress=1 + - name: Change win-console flag if debug is active + if: ${{ inputs.isDebug }} + run: echo "WIN_CONSOLE_FLAG=--win-console" >> $GITHUB_ENV - name: Run jpackage run: > ${JAVA_HOME}/bin/jpackage @@ -115,8 +123,10 @@ jobs: --java-options "-Dcryptomator.buildNumber=\"msi-${{ needs.get-version.outputs.revNum }}\"" --java-options "-Dcryptomator.integrationsWin.autoStartShellLinkName=\"Cryptomator\"" --java-options "-Dcryptomator.integrationsWin.keychainPaths=\"~/AppData/Roaming/Cryptomator/keychain.json\"" + --java-options "-Djavafx.verbose=${{ inputs.isDebug }}" --resource-dir dist/win/resources --icon dist/win/resources/Cryptomator.ico + ${WIN_CONSOLE_FLAG} - name: Patch Application Directory run: | cp dist/win/contrib/* appdir/Cryptomator