diff --git a/.github/workflows/appimage.yml b/.github/workflows/appimage.yml
index 7027c9ddf..f16bbefde 100644
--- a/.github/workflows/appimage.yml
+++ b/.github/workflows/appimage.yml
@@ -17,11 +17,11 @@ jobs:
name: Build AppImage
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Java
- uses: actions/setup-java@v2
+ uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: ${{ env.JAVA_VERSION }}
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 5270365b3..77a49ad1a 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -12,20 +12,54 @@ defaults:
run:
shell: bash
-jobs:
- test:
- name: Compile and Test
+jobs:
+ release-check-precondition:
+ name: Validate pushed commit to release/hotfix branch or pushed tag
runs-on: ubuntu-latest
- if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
+ if: "(startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/hotfix/') || startsWith(github.ref, 'refs/heads/release/'))
+ && !(contains(github.event.head_commit.message, '[ci skip]') || contains(github.event.head_commit.message, '[skip ci]'))"
steps:
- uses: actions/checkout@v2
- - uses: actions/setup-java@v2
+ - id: validate-pom-version
+ name: Validate POM version
+ run: |
+ if [[ $GITHUB_REF =~ refs/heads/(hotfix|release)/[0-9]+\.[0-9]+\.[0-9]+.* ]]; then
+ SEM_VER_STR=${GITHUB_REF##*/}
+ elif [[ $GITHUB_REF =~ refs/tags/[0-9]+\.[0-9]+\.[0-9]+.* ]]; then
+ SEM_VER_STR=${GITHUB_REF##*/}
+ else
+ echo "Failed to parse version"
+ exit 1
+ fi
+
+ if [[ ${SEM_VER_STR} == `mvn help:evaluate -Dexpression=project.version -q -DforceStdout` ]]; then
+ echo "::set-output name=semVerStr::${SEM_VER_STR}"
+ else
+ echo "Version not set in POM"
+ exit 1
+ fi
+ - name: Validate release in org.cryptomator.Cryptomator.metainfo.xml file
+ run: |
+ if ! grep -q "" dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml; then
+ echo "Release not set in dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml"
+ exit 1
+ fi
+ test:
+ name: Compile and Test
+ needs: release-check-precondition
+ runs-on: ubuntu-latest
+ if: "always()
+ && (needs.release-check-precondition.result=='success' || needs.release-check-precondition.result=='skipped')
+ && !(contains(github.event.head_commit.message, '[ci skip]') || contains(github.event.head_commit.message, '[skip ci]'))"
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: ${{ env.JAVA_VERSION }}
cache: 'maven'
- name: Cache SonarCloud packages
- uses: actions/cache@v2
+ uses: actions/cache@v3
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
diff --git a/.github/workflows/debian.yml b/.github/workflows/debian.yml
index 6f43b5155..687dd0834 100644
--- a/.github/workflows/debian.yml
+++ b/.github/workflows/debian.yml
@@ -22,7 +22,7 @@ jobs:
name: Build Debian Package
runs-on: ubuntu-18.04
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install build tools
@@ -30,7 +30,7 @@ jobs:
sudo apt-get update
sudo apt-get install debhelper devscripts dput
- name: Setup Java
- uses: actions/setup-java@v2
+ uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: ${{ env.JAVA_VERSION }}
diff --git a/.github/workflows/mac-dmg.yml b/.github/workflows/mac-dmg.yml
index 832213e25..c617b1adb 100644
--- a/.github/workflows/mac-dmg.yml
+++ b/.github/workflows/mac-dmg.yml
@@ -29,7 +29,7 @@ jobs:
output-suffix: arm64
xcode-path: '/Applications/Xcode_13.2.1.app'
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Java
diff --git a/.github/workflows/pullrequest.yml b/.github/workflows/pullrequest.yml
index 79a0d5a21..383fe9df7 100644
--- a/.github/workflows/pullrequest.yml
+++ b/.github/workflows/pullrequest.yml
@@ -16,8 +16,8 @@ jobs:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
steps:
- - uses: actions/checkout@v2
- - uses: actions/setup-java@v2
+ - uses: actions/checkout@v3
+ - uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: ${{ env.JAVA_VERSION }}
diff --git a/.github/workflows/win-exe.yml b/.github/workflows/win-exe.yml
index 91d967bf7..2e35b3902 100644
--- a/.github/workflows/win-exe.yml
+++ b/.github/workflows/win-exe.yml
@@ -8,11 +8,6 @@ on:
version:
description: 'Version'
required: false
- winget-release:
- description: 'Release artifacts to winget'
- required: true
- type: boolean
- default: false
env:
JAVA_VERSION: 17
@@ -26,11 +21,11 @@ jobs:
name: Build .msi Installer
runs-on: windows-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Java
- uses: actions/setup-java@v2
+ uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: ${{ env.JAVA_VERSION }}
@@ -194,34 +189,28 @@ jobs:
semVerStr: ${{ steps.versions.outputs.semVerStr }}
revNum: ${{ steps.versions.outputs.revNum }}
- publish-winget:
- name: Publish on winget repo
- runs-on: windows-latest
+ call-winget-flow:
needs: [build-msi]
- if: github.event.action == 'published' || inputs.winget-release
- steps:
- - name: Submit package to Windows Package Manager Community Repository
- run: |
- iwr https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe
- $github = Get-Content '${{ github.event_path }}' | ConvertFrom-Json
- $installerUrl = $github.release.assets | Where-Object -Property name -match '^Cryptomator-.*\.msi' | Select -ExpandProperty browser_download_url -First 1
- .\wingetcreate.exe update Cryptomator.Cryptomator -s -v $github.release.tag_name -u $installerUrl -t ${{ secrets.CRYPTOBOT_WINGET_TOKEN }}
- shell: pwsh
+ if: github.event.action == 'published'
+ uses: ./.github/workflows/winget.yml
+ with:
+ releaseTag: ${{ github.event.release.tag_name }}
+
build-exe:
name: Build .exe installer
runs-on: windows-latest
needs: [build-msi]
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Download .msi
- uses: actions/download-artifact@v2
+ uses: actions/download-artifact@v3
with:
name: msi
path: dist/win/bundle/resources
- name: Strip version info from msi file name
run: mv dist/win/bundle/resources/Cryptomator*.msi dist/win/bundle/resources/Cryptomator.msi
- - uses: actions/setup-java@v2
+ - uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: ${{ env.JAVA_VERSION }}
diff --git a/.github/workflows/winget.yml b/.github/workflows/winget.yml
new file mode 100644
index 000000000..7115a1785
--- /dev/null
+++ b/.github/workflows/winget.yml
@@ -0,0 +1,49 @@
+name: Release to Winget
+
+on:
+ workflow_call:
+ inputs:
+ releaseTag:
+ required: true
+ type: string
+ workflow_dispatch:
+ inputs:
+ releaseTag:
+ description: 'Release tag name'
+ required: true
+ type: string
+
+jobs:
+ publish-winget:
+ name: Publish on winget repo
+ runs-on: windows-latest
+ steps:
+ - name: Get download url for msi artifacts
+ id: get-release-assets
+ uses: actions/github-script@v6
+ with:
+ script: |
+ const query =`query($tag:String!) {
+ repository(owner:"cryptomator", name:"cryptomator"){
+ release(tagName: $tag) {
+ releaseAssets(first:20) {
+ nodes {
+ name
+ downloadUrl
+ }
+ }
+ }
+ }
+ }`;
+ const variables = {
+ tag: "${{ inputs.releaseTag }}"
+ }
+ return await github.graphql(query, variables)
+ - name: Submit package to Windows Package Manager Community Repository
+ id: submit-winget
+ run: |
+ iwr https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe
+ $releaseAssets = (ConvertFrom-Json '${{ steps.get-release-assets.outputs.result }}').repository.release.releaseAssets.nodes
+ $installerUrl = $releaseAssets | Where-Object -Property name -match '^Cryptomator-.*\.msi$' | Select -ExpandProperty downloadUrl -First 1
+ .\wingetcreate.exe update Cryptomator.Cryptomator -s -v "${{ inputs.releaseTag }}" -u "$installerUrl" -t ${{ secrets.CRYPTOBOT_WINGET_TOKEN }}
+ shell: pwsh
diff --git a/dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml b/dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml
index 3e74a00a0..453a5f9d0 100644
--- a/dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml
+++ b/dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml
@@ -66,6 +66,7 @@
+
diff --git a/pom.xml b/pom.xml
index 106949421..0071752f8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
2.1.0-rc1
- 2.4.4
+ 2.4.5
1.1.0
1.1.2
1.1.2
@@ -44,9 +44,9 @@
31.1-jre
2.9.1
19
- 4.0.0
+ 4.2.1
9.25.4
- 1.4.3
+ 1.4.4
2.0.3
0.5.1
1.7.0
@@ -128,14 +128,6 @@
logback-core
${logback.version}
-
-
- jakarta.mail
- jakarta.mail-api
- 2.1.0
- compile
- true
-
ch.qos.logback
logback-classic
diff --git a/src/main/java/org/cryptomator/ui/keyloading/hub/HubKeyLoadingModule.java b/src/main/java/org/cryptomator/ui/keyloading/hub/HubKeyLoadingModule.java
index 6e28b8796..a23a5f1b3 100644
--- a/src/main/java/org/cryptomator/ui/keyloading/hub/HubKeyLoadingModule.java
+++ b/src/main/java/org/cryptomator/ui/keyloading/hub/HubKeyLoadingModule.java
@@ -56,8 +56,10 @@ public abstract class HubKeyLoadingModule {
@Named("deviceId")
static String provideDeviceId(DeviceKey deviceKey) {
var publicKey = Objects.requireNonNull(deviceKey.get()).getPublic().getEncoded();
- var hashedKey = MessageDigestSupplier.SHA256.get().digest(publicKey);
- return BaseEncoding.base16().encode(hashedKey);
+ try (var instance = MessageDigestSupplier.SHA256.instance()) {
+ var hashedKey = instance.get().digest(publicKey);
+ return BaseEncoding.base16().encode(hashedKey);
+ }
}
@Provides