mirror of
https://github.com/cryptomator/cryptomator.git
synced 2026-05-14 00:31:27 +00:00
Refactor appimage, dmg and msi/exe workflows
* unify inputs handling for worklfow dispatch and call * simplify conditions for signing/release steps
This commit is contained in:
55
.github/workflows/appimage.yml
vendored
55
.github/workflows/appimage.yml
vendored
@@ -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 }}
|
||||
|
||||
63
.github/workflows/mac-dmg-x64.yml
vendored
63
.github/workflows/mac-dmg-x64.yml
vendored
@@ -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
|
||||
|
||||
63
.github/workflows/mac-dmg.yml
vendored
63
.github/workflows/mac-dmg.yml
vendored
@@ -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
|
||||
|
||||
70
.github/workflows/win-exe.yml
vendored
70
.github/workflows/win-exe.yml
vendored
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user