浏览代码

Merge branch 'develop' into feature/javafx-19

# Conflicts:
#	pom.xml
Sebastian Stenzel 2 年之前
父节点
当前提交
c79cfe1c9d

+ 2 - 2
.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 }}

+ 39 - 5
.github/workflows/build.yml

@@ -12,20 +12,54 @@ defaults:
   run:
     shell: bash
 
-jobs: 
+jobs:
+  release-check-precondition:
+    name: Validate pushed commit to release/hotfix branch or pushed tag
+    runs-on: ubuntu-latest
+    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
+      - 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 "<release date=\".*\" version=\"${{ steps.validate-pom-version.outputs.semVerStr }}\"/>" 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: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
+    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@v2
-      - uses: actions/setup-java@v2
+      - 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

+ 2 - 2
.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 }}

+ 1 - 1
.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

+ 2 - 2
.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 }}

+ 11 - 22
.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 }}

+ 49 - 0
.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

+ 1 - 0
dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml

@@ -66,6 +66,7 @@
 	</content_rating>
 
 	<releases>
+		<release date="2022-10-06" version="1.6.15"/>
 		<release date="2022-08-31" version="1.6.14"/>
 		<release date="2022-07-27" version="1.6.12"/>
 		<release date="2022-07-26" version="1.6.11"/>

+ 3 - 11
pom.xml

@@ -28,7 +28,7 @@
 
 		<!-- cryptomator dependencies -->
 		<cryptomator.cryptolib.version>2.1.0-rc1</cryptomator.cryptolib.version>
-		<cryptomator.cryptofs.version>2.4.4</cryptomator.cryptofs.version>
+		<cryptomator.cryptofs.version>2.4.5</cryptomator.cryptofs.version>
 		<cryptomator.integrations.version>1.1.0</cryptomator.integrations.version>
 		<cryptomator.integrations.win.version>1.1.2</cryptomator.integrations.win.version>
 		<cryptomator.integrations.mac.version>1.1.2</cryptomator.integrations.mac.version>
@@ -44,9 +44,9 @@
 		<guava.version>31.1-jre</guava.version>
 		<gson.version>2.9.1</gson.version>
 		<javafx.version>19</javafx.version>
-		<jwt.version>4.0.0</jwt.version>
+		<jwt.version>4.2.1</jwt.version>
 		<nimbus-jose.version>9.25.4</nimbus-jose.version>
-		<logback.version>1.4.3</logback.version>
+		<logback.version>1.4.4</logback.version>
 		<slf4j.version>2.0.3</slf4j.version>
 		<tinyoauth2.version>0.5.1</tinyoauth2.version>
 		<zxcvbn.version>1.7.0</zxcvbn.version>
@@ -128,14 +128,6 @@
 			<artifactId>logback-core</artifactId>
 			<version>${logback.version}</version>
 		</dependency>
-		<dependency>
-			<!-- declared by logback-core but not provided -->
-			<groupId>jakarta.mail</groupId>
-			<artifactId>jakarta.mail-api</artifactId>
-			<version>2.1.0</version>
-			<scope>compile</scope>
-			<optional>true</optional>
-		</dependency>
 		<dependency>
 			<groupId>ch.qos.logback</groupId>
 			<artifactId>logback-classic</artifactId>

+ 4 - 2
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