diff --git a/.github/workflows/appimage.yml b/.github/workflows/appimage.yml index e9744e838..ecb92eb60 100644 --- a/.github/workflows/appimage.yml +++ b/.github/workflows/appimage.yml @@ -5,10 +5,18 @@ on: - cron: '0 23 20 * *' workflow_call: inputs: - is-release: - description: "Workflow is called by a release" - type: boolean - default: false + semVerNum: + type: string + description: 'The Major.Minor.Patch part of the version' + required: true + revisionNum: + type: string + description: 'The revision number' + required: true + semVerSuffix: + type: string + description: 'The suffix of the version, including dash' + required: true outputs: sha256-appimage-x64: description: "SHA256 sum of the x64 appimage" @@ -18,9 +26,16 @@ on: value: ${{ jobs.collect-sha256sums.outputs.aarch64-sha256sum}} workflow_dispatch: inputs: - version: - description: 'Version' + semVerNum: + description: 'The Major.Minor.Patch part of the version' required: false + revisionNum: + description: 'The revision number' + required: false + semVerSuffix: + description: 'The suffix of the version, including dash' + required: false + default: '-SNAPSHOT' push: branches-ignore: - 'dependabot/**' @@ -33,21 +48,15 @@ on: env: JAVA_DIST: 'temurin' JAVA_VERSION: '25.0.2+10.0.LTS' + VERSION_NUM: ${{ inputs.semVerNum || '99.99.99'}} + REVISION_NUM: ${{ inputs.revisionNum || '0' }} + VERSION_SUFFIX: ${{ inputs.semVerSuffix || ''}} + jobs: - get-version: - uses: ./.github/workflows/get-version.yml - with: - version: ${{ inputs.version }} #okay if not defined - build: name: Build AppImage runs-on: ${{ matrix.os }} - needs: [get-version] - env: - SEMVER_STR: ${{ needs.get-version.outputs.semVerStr }} - SEMVER_NUM: ${{ needs.get-version.outputs.semVerNum }} - REV_NUM: ${{ needs.get-version.outputs.revNum }} strategy: fail-fast: false matrix: @@ -92,7 +101,7 @@ jobs: exit 1 fi - name: Set version - run : mvn versions:set -DnewVersion="$SEMVER_STR" + run : mvn versions:set -DnewVersion="${VERSION_NUM}${VERSION_SUFFIX}" - name: Run maven run: mvn -B clean package -Plinux -DskipTests - name: Patch target dir @@ -135,12 +144,12 @@ jobs: --name Cryptomator --vendor "Skymatic GmbH" --copyright "(C) 2016 - 2025 Skymatic GmbH" - --app-version "${SEMVER_NUM}.${REV_NUM}" + --app-version "${VERSION_NUM}.${REVISION_NUM}" --java-options "--enable-preview" --java-options "--enable-native-access=javafx.graphics,org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64,org.purejava.appindicator" --java-options "-Xss5m" --java-options "-Xmx256m" - --java-options "-Dcryptomator.appVersion=\"${SEMVER_STR}\"" + --java-options "-Dcryptomator.appVersion=\"${VERSION_NUM}${VERSION_SUFFIX}\"" --java-options "-Dfile.encoding=\"utf-8\"" --java-options "-Djava.net.useSystemProxies=true" --java-options "-Dcryptomator.adminConfigPath=\"/etc/cryptomator/config.properties\"" @@ -151,7 +160,7 @@ jobs: --java-options "-Dcryptomator.mountPointsDir=\"@{userhome}/.local/share/Cryptomator/mnt\"" --java-options "-Dcryptomator.showTrayIcon=true" --java-options "-Dcryptomator.integrationsLinux.trayIconsDir=\"@{appdir}/usr/share/icons/hicolor/symbolic/apps\"" - --java-options "-Dcryptomator.buildNumber=\"appimage-${REV_NUM}\"" + --java-options "-Dcryptomator.buildNumber=\"appimage-${REVISION_NUM}\"" --java-options "-Dcryptomator.networking.truststore.p12Path=\"/etc/cryptomator/certs.p12\"" --java-options "-Dcryptomator.hub.enableTrustOnFirstUse=true" --java-options "-XX:ErrorFile=/cryptomator/cryptomator_crash.log" @@ -190,7 +199,7 @@ jobs: GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }} - name: Build AppImage run: > - ./squashfs-root/AppRun Cryptomator.AppDir cryptomator-${SEMVER_STR}-${{ matrix.arch }}.AppImage + ./squashfs-root/AppRun Cryptomator.AppDir cryptomator-${VERSION_NUM}${VERSION_SUFFIX}-${{ matrix.arch }}.AppImage -u "gh-releases-zsync|cryptomator|cryptomator|latest|cryptomator-*-${{ matrix.arch }}.AppImage.zsync" --sign --sign-key=615D449FE6E6A235 - name: Create detached GPG signatures @@ -207,7 +216,7 @@ jobs: cryptomator-*.asc if-no-files-found: error - name: Publish AppImage on GitHub Releases - if: github.ref_type == 'tag' && inputs.is-release + if: github.event_name == 'workflow_call' uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2.6.1 with: draft: true @@ -222,7 +231,7 @@ jobs: name: Collect AppImage checksums runs-on: ubuntu-latest needs: [build] - if: inputs.is-release + if: github.event_name == 'workflow_call' outputs: x64-sha256sum: ${{ steps.sha256sum.outputs.x64-sha256sum }} aarch64-sha256sum: ${{ steps.sha256sum.outputs.aarch64-sha256sum }} diff --git a/.github/workflows/mac-dmg-x64.yml b/.github/workflows/mac-dmg-x64.yml index 7b6ce4a4c..a440af8c3 100644 --- a/.github/workflows/mac-dmg-x64.yml +++ b/.github/workflows/mac-dmg-x64.yml @@ -13,19 +13,38 @@ on: - cron: '0 20 20 * *' workflow_call: inputs: - is-release: - description: "Workflow is called by a release" + semVerNum: + type: string + description: 'The Major.Minor.Patch part of the version' + required: true + revisionNum: + type: string + description: 'The revision number' + required: true + semVerSuffix: + type: string + description: 'The suffix of the version, including dash' + required: true + notarize: + description: 'Notarize' + default: true type: boolean - default: false outputs: sha256-dmg: description: "SHA256 sum of the x64 dmg" value: ${{ jobs.build.outputs.sha256sum}} workflow_dispatch: inputs: - version: - description: 'Version' + semVerNum: + description: 'The Major.Minor.Patch part of the version' required: false + revisionNum: + description: 'The revision number' + required: false + semVerSuffix: + description: 'The suffix of the version, including dash' + required: false + default: '-SNAPSHOT' notarize: description: 'Notarize' required: true @@ -35,17 +54,15 @@ on: env: JAVA_DIST: 'temurin' JAVA_VERSION: '25.0.2+10.0.LTS' + VERSION_NUM: ${{ inputs.semVerNum || '99.99.99'}} + REVISION_NUM: ${{ inputs.revisionNum || '0' }} + VERSION_SUFFIX: ${{ inputs.semVerSuffix || ''}} + jobs: - get-version: - uses: ./.github/workflows/get-version.yml - with: - version: ${{ inputs.version }} - build: name: Build Cryptomator.app for ${{ matrix.output-suffix }} runs-on: ${{ matrix.os }} - needs: [get-version] outputs: sha256sum: ${{ steps.sha256sum.outputs.value }} strategy: @@ -89,7 +106,7 @@ jobs: exit 1 fi - name: Set version - run : mvn versions:set -DnewVersion=${{ needs.get-version.outputs.semVerStr }} + run : mvn versions:set -DnewVersion="${VERSION_NUM}${VERSION_SUFFIX}" - name: Run maven run: mvn -B clean package -Pmac -DskipTests - name: Patch target dir @@ -130,7 +147,7 @@ jobs: --name Cryptomator --vendor "Skymatic GmbH" --copyright "(C) 2016 - 2025 Skymatic GmbH" - --app-version "${{ needs.get-version.outputs.semVerNum }}" + --app-version "${VERSION_NUM}" --java-options "--enable-preview" --java-options "--enable-native-access=javafx.graphics,org.cryptomator.jfuse.mac" --java-options "-Xss5m" @@ -139,7 +156,7 @@ jobs: --java-options "-Djava.net.useSystemProxies=true" --java-options "-Dapple.awt.enableTemplateImages=true" --java-options "-Dsun.java2d.metal=true" - --java-options "-Dcryptomator.appVersion=\"${{ needs.get-version.outputs.semVerStr }}\"" + --java-options "-Dcryptomator.appVersion=\"${VERSION_NUM}${VERSION_SUFFIX}\"" --java-options "-Dcryptomator.adminConfigPath=\"/Library/Application Support/Cryptomator/config.properties\"" --java-options "-Dcryptomator.logDir=\"@{userhome}/Library/Logs/Cryptomator\"" --java-options "-Dcryptomator.settingsPath=\"@{userhome}/Library/Application Support/Cryptomator/settings.json\"" @@ -149,7 +166,7 @@ jobs: --java-options "-Dcryptomator.mountPointsDir=\"@{userhome}/Library/Application Support/Cryptomator/mnt\"" --java-options "-Dcryptomator.showTrayIcon=true" --java-options "-Dcryptomator.updateMechanism=org.cryptomator.macos.update.DmgUpdateMechanism" - --java-options "-Dcryptomator.buildNumber=\"dmg-${{ needs.get-version.outputs.revNum }}\"" + --java-options "-Dcryptomator.buildNumber=\"dmg-${REVISION_NUM}\"" --java-options "-Dcryptomator.hub.enableTrustOnFirstUse=true" --mac-package-identifier org.cryptomator --resource-dir dist/mac/resources @@ -158,12 +175,10 @@ jobs: mv appdir/Cryptomator.app Cryptomator.app mv dist/mac/resources/Cryptomator-Vault.icns Cryptomator.app/Contents/Resources/ cp dist/mac/resources/Assets.car Cryptomator.app/Contents/Resources/ - sed -i '' "s|###BUNDLE_SHORT_VERSION_STRING###|${VERSION_NO}|g" Cryptomator.app/Contents/Info.plist - sed -i '' "s|###BUNDLE_VERSION###|${REVISION_NO}|g" Cryptomator.app/Contents/Info.plist + sed -i '' "s|###BUNDLE_SHORT_VERSION_STRING###|${VERSION_NUM}|g" Cryptomator.app/Contents/Info.plist + sed -i '' "s|###BUNDLE_VERSION###|${REVISION_NUM}|g" Cryptomator.app/Contents/Info.plist echo -n "$PROVISIONING_PROFILE_BASE64" | base64 --decode --output Cryptomator.app/Contents/embedded.provisionprofile env: - VERSION_NO: ${{ needs.get-version.outputs.semVerNum }} - REVISION_NO: ${{ needs.get-version.outputs.revNum }} PROVISIONING_PROFILE_BASE64: ${{ secrets.MACOS_PROVISIONING_PROFILE_BASE64 }} - name: Generate license for dmg run: > @@ -252,16 +267,14 @@ jobs: --eula "dist/mac/dmg/resources/license.rtf" --icon ".background" 128 758 --icon ".VolumeIcon.icns" 512 758 - Cryptomator-${VERSION_NO}-${{ matrix.output-suffix }}.dmg dmg - env: - VERSION_NO: ${{ needs.get-version.outputs.semVerNum }} + Cryptomator-${VERSION_NUM}-${{ matrix.output-suffix }}.dmg dmg - name: Codesign .dmg run: | codesign -s ${CODESIGN_IDENTITY} --timestamp Cryptomator-*.dmg env: CODESIGN_IDENTITY: ${{ secrets.MACOS_CODESIGN_IDENTITY }} - name: Notarize .dmg - if: inputs.notarize || github.event_name == 'workflow_call' && inputs.is-release || github.event_name == 'schedule' + if: inputs.notarize || github.event_name == 'schedule' uses: cocoalibs/xcode-notarization-action@5cf433d494b6fa26504b574c591f4dd120388846 # v1.0.3 with: app-path: 'Cryptomator-*.dmg' @@ -274,7 +287,7 @@ jobs: read -ra CMD_OUTPUT < <(shasum -a256 Cryptomator-*.dmg) echo "value=${CMD_OUTPUT[0]}" >> $GITHUB_OUTPUT - name: Add possible alpha/beta tags to installer name - run: mv Cryptomator-*.dmg Cryptomator-${{ needs.get-version.outputs.semVerStr }}-${{ matrix.output-suffix }}.dmg + run: mv Cryptomator-*.dmg "Cryptomator-${VERSION_NUM}${VERSION_SUFFIX}-${{ matrix.output-suffix }}.dmg" - name: Create detached GPG signature with key 615D449FE6E6A235 run: | echo "${GPG_PRIVATE_KEY}" | gpg --batch --quiet --import @@ -295,7 +308,7 @@ jobs: Cryptomator-*.asc if-no-files-found: error - name: Publish dmg on GitHub Releases - if: github.ref_type == 'tag' && inputs.is-release + if: github.event_name == 'workflow_call' uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2.6.1 with: draft: true diff --git a/.github/workflows/mac-dmg.yml b/.github/workflows/mac-dmg.yml index 89c784a3b..d4d295104 100644 --- a/.github/workflows/mac-dmg.yml +++ b/.github/workflows/mac-dmg.yml @@ -5,19 +5,38 @@ on: - cron: '0 20 20 * *' workflow_call: inputs: - is-release: - description: "Workflow is called by a release" + semVerNum: + type: string + description: 'The Major.Minor.Patch part of the version' + required: true + revisionNum: + type: string + description: 'The revision number' + required: true + semVerSuffix: + type: string + description: 'The suffix of the version, including dash' + required: true + notarize: + description: 'Notarize' + default: true type: boolean - default: false outputs: sha256-dmg: description: "SHA256 sum of the arm64 dmg" value: ${{ jobs.build.outputs.sha256sum}} workflow_dispatch: inputs: - version: - description: 'Version' + semVerNum: + description: 'The Major.Minor.Patch part of the version' required: false + revisionNum: + description: 'The revision number' + required: false + semVerSuffix: + description: 'The suffix of the version, including dash' + required: false + default: '-SNAPSHOT' notarize: description: 'Notarize' required: true @@ -33,17 +52,15 @@ on: env: JAVA_DIST: 'temurin' JAVA_VERSION: '25.0.2+10.0.LTS' + VERSION_NUM: ${{ inputs.semVerNum || '99.99.99'}} + REVISION_NUM: ${{ inputs.revisionNum || '0' }} + VERSION_SUFFIX: ${{ inputs.semVerSuffix || ''}} + jobs: - get-version: - uses: ./.github/workflows/get-version.yml - with: - version: ${{ inputs.version }} - build: name: Build Cryptomator.app for ${{ matrix.output-suffix }} runs-on: ${{ matrix.os }} - needs: [get-version] outputs: sha256sum: ${{ steps.sha256sum.outputs.value }} strategy: @@ -87,7 +104,7 @@ jobs: exit 1 fi - name: Set version - run : mvn versions:set -DnewVersion=${{ needs.get-version.outputs.semVerStr }} + run : mvn versions:set -DnewVersion="${VERSION_NUM}${VERSION_SUFFIX}" - name: Run maven run: mvn -B clean package -Pmac -DskipTests - name: Patch target dir @@ -128,7 +145,7 @@ jobs: --name Cryptomator --vendor "Skymatic GmbH" --copyright "(C) 2016 - 2025 Skymatic GmbH" - --app-version "${{ needs.get-version.outputs.semVerNum }}" + --app-version "${VERSION_NUM}" --java-options "--enable-preview" --java-options "--enable-native-access=javafx.graphics,org.cryptomator.jfuse.mac" --java-options "-Xss5m" @@ -137,7 +154,7 @@ jobs: --java-options "-Djava.net.useSystemProxies=true" --java-options "-Dapple.awt.enableTemplateImages=true" --java-options "-Dsun.java2d.metal=true" - --java-options "-Dcryptomator.appVersion=\"${{ needs.get-version.outputs.semVerStr }}\"" + --java-options "-Dcryptomator.appVersion=\"${VERSION_NUM}${VERSION_SUFFIX}\"" --java-options "-Dcryptomator.adminConfigPath=\"/Library/Application Support/Cryptomator/config.properties\"" --java-options "-Dcryptomator.logDir=\"@{userhome}/Library/Logs/Cryptomator\"" --java-options "-Dcryptomator.settingsPath=\"@{userhome}/Library/Application Support/Cryptomator/settings.json\"" @@ -147,7 +164,7 @@ jobs: --java-options "-Dcryptomator.mountPointsDir=\"@{userhome}/Library/Application Support/Cryptomator/mnt\"" --java-options "-Dcryptomator.showTrayIcon=true" --java-options "-Dcryptomator.updateMechanism=org.cryptomator.macos.update.DmgUpdateMechanism" - --java-options "-Dcryptomator.buildNumber=\"dmg-${{ needs.get-version.outputs.revNum }}\"" + --java-options "-Dcryptomator.buildNumber=\"dmg-${REVISION_NUM}\"" --java-options "-XX:ErrorFile=/cryptomator/cryptomator_crash.log" --java-options "-Dcryptomator.hub.enableTrustOnFirstUse=true" --mac-package-identifier org.cryptomator @@ -157,12 +174,10 @@ jobs: mv appdir/Cryptomator.app Cryptomator.app mv dist/mac/resources/Cryptomator-Vault.icns Cryptomator.app/Contents/Resources/ cp dist/mac/resources/Assets.car Cryptomator.app/Contents/Resources/ - sed -i '' "s|###BUNDLE_SHORT_VERSION_STRING###|${VERSION_NO}|g" Cryptomator.app/Contents/Info.plist - sed -i '' "s|###BUNDLE_VERSION###|${REVISION_NO}|g" Cryptomator.app/Contents/Info.plist + sed -i '' "s|###BUNDLE_SHORT_VERSION_STRING###|${VERSION_NUM}|g" Cryptomator.app/Contents/Info.plist + sed -i '' "s|###BUNDLE_VERSION###|${REVISION_NUM}|g" Cryptomator.app/Contents/Info.plist echo -n "$PROVISIONING_PROFILE_BASE64" | base64 --decode --output Cryptomator.app/Contents/embedded.provisionprofile env: - VERSION_NO: ${{ needs.get-version.outputs.semVerNum }} - REVISION_NO: ${{ needs.get-version.outputs.revNum }} PROVISIONING_PROFILE_BASE64: ${{ secrets.MACOS_PROVISIONING_PROFILE_BASE64 }} - name: Generate license for dmg run: > @@ -251,16 +266,14 @@ jobs: --eula "dist/mac/dmg/resources/license.rtf" --icon ".background" 128 758 --icon ".VolumeIcon.icns" 512 758 - Cryptomator-${VERSION_NO}-${{ matrix.output-suffix }}.dmg dmg - env: - VERSION_NO: ${{ needs.get-version.outputs.semVerNum }} + Cryptomator-${VERSION_NUM}-${{ matrix.output-suffix }}.dmg dmg - name: Codesign .dmg run: | codesign -s ${CODESIGN_IDENTITY} --timestamp Cryptomator-*.dmg env: CODESIGN_IDENTITY: ${{ secrets.MACOS_CODESIGN_IDENTITY }} - name: Notarize .dmg - if: inputs.notarize || github.event_name == 'workflow_call' && inputs.is-release || github.event_name == 'schedule' + if: inputs.notarize || github.event_name == 'schedule' uses: cocoalibs/xcode-notarization-action@5cf433d494b6fa26504b574c591f4dd120388846 # v1.0.3 with: app-path: 'Cryptomator-*.dmg' @@ -273,7 +286,7 @@ jobs: read -ra CMD_OUTPUT < <(shasum -a256 Cryptomator-*.dmg) echo "value=${CMD_OUTPUT[0]}" >> $GITHUB_OUTPUT - name: Add possible alpha/beta tags to installer name - run: mv Cryptomator-*.dmg Cryptomator-${{ needs.get-version.outputs.semVerStr }}-${{ matrix.output-suffix }}.dmg + run: mv Cryptomator-*.dmg "Cryptomator-${VERSION_NUM}${VERSION_SUFFIX}-${{ matrix.output-suffix }}.dmg" - name: Create detached GPG signature with key 615D449FE6E6A235 run: | echo "${GPG_PRIVATE_KEY}" | gpg --batch --quiet --import @@ -294,7 +307,7 @@ jobs: Cryptomator-*.asc if-no-files-found: error - name: Publish dmg on GitHub Releases - if: github.ref_type == 'tag' && inputs.is-release + if: github.event_name == 'workflow_call' uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2.6.1 with: draft: true diff --git a/.github/workflows/win-exe.yml b/.github/workflows/win-exe.yml index 7534e3674..a85c4207a 100644 --- a/.github/workflows/win-exe.yml +++ b/.github/workflows/win-exe.yml @@ -5,10 +5,22 @@ on: - cron: '0 19 20 * *' workflow_call: inputs: - is-release: - description: "Workflow is called by a release" + semVerNum: + type: string + description: 'The Major.Minor.Patch part of the version' + required: true + revisionNum: + type: string + description: 'The revision number' + required: true + semVerSuffix: + type: string + description: 'The suffix of the version, including dash' + required: true + sign: + description: 'Sign binaries' + default: true type: boolean - default: false outputs: sha256-msi: description: "SHA256 sum of the x64 msi" @@ -18,9 +30,16 @@ on: value: ${{ jobs.build-exe.outputs.sha256sum}} workflow_dispatch: inputs: - version: - description: 'Version' + semVerNum: + description: 'The Major.Minor.Patch part of the version' required: false + revisionNum: + description: 'The revision number' + required: false + semVerSuffix: + description: 'The suffix of the version, including dash' + required: false + default: '-SNAPSHOT' sign: description: 'Sign binaries' required: false @@ -35,6 +54,9 @@ on: env: + VERSION_NUM: ${{ inputs.semVerNum || '99.99.99'}} + REVISION_NUM: ${{ inputs.revisionNum || '0' }} + VERSION_SUFFIX: ${{ inputs.semVerSuffix || ''}} OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/25.0.2/openjfx-25.0.2_windows-x64_bin-jmods.zip' OPENJFX_JMODS_AMD64_HASH: '33d878dfac85590c4d77c518ed413e512d34a8479d90132b230a7ddd173576b3' WINFSP_MSI: 'https://github.com/winfsp/winfsp/releases/download/v2.1/winfsp-2.1.25156.msi' @@ -47,15 +69,9 @@ defaults: shell: bash jobs: - get-version: - uses: ./.github/workflows/get-version.yml - with: - version: ${{ inputs.version }} - build-msi: name: Build .msi Installer runs-on: ${{ matrix.os }} - needs: [ get-version ] outputs: sha256sum: ${{ steps.sha256sum.outputs.value }} strategy: @@ -109,7 +125,7 @@ jobs: exit 1 fi - name: Set version - run: mvn versions:set -DnewVersion=${{ needs.get-version.outputs.semVerStr }} + run: mvn versions:set -DnewVersion="${VERSION_NUM}${VERSION_SUFFIX}" - name: Run maven run: mvn -B clean package -Pwin -DskipTests - name: Patch target dir @@ -150,12 +166,12 @@ jobs: --name Cryptomator --vendor "Skymatic GmbH" --copyright "(C) 2016 - 2025 Skymatic GmbH" - --app-version "${{ needs.get-version.outputs.semVerNum }}.${{ needs.get-version.outputs.revNum }}" + --app-version "${VERSION_NUM}.${REVISION_NUM}" --java-options "--enable-preview" --java-options "--enable-native-access=javafx.graphics,org.cryptomator.jfuse.win,org.cryptomator.integrations.win" --java-options "-Xss5m" --java-options "-Xmx256m" - --java-options "-Dcryptomator.appVersion=\"${{ needs.get-version.outputs.semVerStr }}\"" + --java-options "-Dcryptomator.appVersion=\"${VERSION_NUM}${VERSION_SUFFIX}\"" --java-options "-Dfile.encoding=\"utf-8\"" --java-options "-Djava.net.useSystemProxies=true" --java-options "-Dcryptomator.adminConfigPath=\"C:/ProgramData/Cryptomator/config.properties\"" @@ -166,7 +182,7 @@ jobs: --java-options "-Dcryptomator.mountPointsDir=\"@{userhome}/Cryptomator\"" --java-options "-Dcryptomator.loopbackAlias=\"cryptomator-vault\"" --java-options "-Dcryptomator.showTrayIcon=true" - --java-options "-Dcryptomator.buildNumber=\"msi-${{ needs.get-version.outputs.revNum }}\"" + --java-options "-Dcryptomator.buildNumber=\"msi-${REVISION_NUM}\"" --java-options "-Dcryptomator.integrationsWin.autoStartShellLinkName=\"Cryptomator\"" --java-options "-Dcryptomator.integrationsWin.keychainPaths=\"@{appdata}/Cryptomator/keychain.json;@{userhome}/AppData/Roaming/Cryptomator/keychain.json\"" --java-options "-Dcryptomator.integrationsWin.windowsHelloKeychainPaths=\"@{appdata}/Cryptomator/windowsHelloKeychain.json\"" @@ -208,7 +224,7 @@ jobs: & $env:JAVA_HOME\bin\jmod.exe extract --dir jpackage-jmod "${env:JAVA_HOME}\jmods\jdk.jpackage.jmod" Get-ChildItem -Recurse -Path "jpackage-jmod" -File wixhelper.dll | Select-Object -Last 1 | Copy-Item -Destination "appdir" - name: Sign DLLs with Azure Trusted Signing - if: inputs.sign || inputs.is-release || github.event_name == 'schedule' + if: inputs.sign || github.event_name == 'schedule' uses: ./.github/actions/win-sign-action with: base-dir: ${{ github.workspace }}\appdir @@ -253,7 +269,7 @@ jobs: --name Cryptomator --vendor "Skymatic GmbH" --copyright "(C) 2016 - 2025 Skymatic GmbH" - --app-version "${{ needs.get-version.outputs.semVerNum }}.${{ needs.get-version.outputs.revNum}}" + --app-version "${VERSION_NUM}.${REVISION_NUM}" --win-menu --win-dir-chooser --win-shortcut-prompt @@ -266,7 +282,7 @@ jobs: JP_WIXWIZARD_RESOURCES: ${{ github.workspace }}/dist/win/resources # requires abs path, used in resources/main.wxs JP_WIXHELPER_DIR: ${{ github.workspace }}\appdir - name: Sign MSI with Azure Trusted Signing - if: inputs.sign || inputs.is-release || github.event_name == 'schedule' + if: inputs.sign || github.event_name == 'schedule' uses: ./.github/actions/win-sign-action with: base-dir: ${{ github.workspace }}\installer @@ -280,7 +296,7 @@ jobs: read -ra CMD_OUTPUT < <(sha256sum installer/Cryptomator-*.msi) echo "value=${CMD_OUTPUT[0]}" >> $GITHUB_OUTPUT - name: Add possible alpha/beta tags and architecture to installer name - run: mv installer/Cryptomator-*.msi Cryptomator-${{ needs.get-version.outputs.semVerStr }}-${{ matrix.arch }}.msi + run: mv installer/Cryptomator-*.msi "Cryptomator-${VERSION_NUM}${VERSION_SUFFIX}-${{ matrix.arch }}.msi" - name: Create detached GPG signature with key 615D449FE6E6A235 run: | echo "${GPG_PRIVATE_KEY}" | gpg --batch --quiet --import @@ -300,7 +316,7 @@ jobs: build-exe: name: Build .exe installer runs-on: ${{ matrix.os }} - needs: [ get-version, build-msi ] + needs: [ build-msi ] outputs: sha256sum: ${{ steps.sha256sum.outputs.value }} strategy: @@ -366,7 +382,7 @@ jobs: run: > wix build -define BundleName="Cryptomator" - -define BundleVersion="${{ needs.get-version.outputs.semVerNum }}.${{ needs.get-version.outputs.revNum}}" + -define BundleVersion="${VERSION_NUM}.${REVISION_NUM}" -define BundleVendor="Skymatic GmbH" -define BundleCopyright="(C) 2016 - 2025 Skymatic GmbH" -define AboutUrl="https://cryptomator.org" @@ -377,11 +393,11 @@ jobs: ./bundle/bundleWithWinfsp.wxs -out "../../installer/Cryptomator-Installer.exe" - name: Detach burn engine in preparation to sign - if: inputs.sign || inputs.is-release || github.event_name == 'schedule' + if: inputs.sign || github.event_name == 'schedule' run: > wix burn detach installer/Cryptomator-Installer.exe -engine tmp/engine.exe - name: Sign WiX burn engine with Azure Trusted Signing - if: inputs.sign || inputs.is-release || github.event_name == 'schedule' + if: inputs.sign || github.event_name == 'schedule' uses: ./.github/actions/win-sign-action with: base-dir: ${{ github.workspace }}\tmp @@ -392,12 +408,12 @@ jobs: client-id: ${{ secrets.AZURE_CLIENT_ID }} client-secret: ${{ secrets.AZURE_CLIENT_SECRET }} - name: Reattach signed burn engine to installer - if: inputs.sign || inputs.is-release || github.event_name == 'schedule' + if: inputs.sign || github.event_name == 'schedule' run: | Move-Item -Path installer/Cryptomator-Installer.exe -Destination tmp/Cryptomator-Installer.exe wix burn reattach tmp/Cryptomator-Installer.exe -engine tmp/engine.exe -o installer/Cryptomator-Installer.exe - name: Sign EXE installer with Azure Trusted Signing - if: inputs.sign || inputs.is-release || github.event_name == 'schedule' + if: inputs.sign || github.event_name == 'schedule' uses: ./.github/actions/win-sign-action with: base-dir: ${{ github.workspace }}\installer @@ -412,7 +428,7 @@ jobs: read -ra CMD_OUTPUT < <(sha256sum installer/Cryptomator-*.exe) echo "value=${CMD_OUTPUT[0]}" >> $GITHUB_OUTPUT - name: Add possible alpha/beta tags to installer name - run: mv installer/Cryptomator-Installer.exe Cryptomator-${{ needs.get-version.outputs.semVerStr }}-${{ matrix.executable-suffix }}.exe + run: mv installer/Cryptomator-Installer.exe "Cryptomator-${VERSION_NUM}${VERSION_SUFFIX}-${{ matrix.executable-suffix }}.exe" - name: Create detached GPG signature with key 615D449FE6E6A235 run: | echo "${GPG_PRIVATE_KEY}" | gpg --batch --quiet --import @@ -431,7 +447,7 @@ jobs: publish: name: Publish installers to the github release - if: github.ref_type == 'tag' && inputs.is-release + if: github.event_name == 'workflow_call' runs-on: ubuntu-latest needs: [ build-msi, build-exe ] steps: