Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
953 commits
Select commit Hold shift + click to select a range
dea3131
apply suggestions from code review
overheadhunter Feb 7, 2026
2c14e7f
cleanup
overheadhunter Feb 7, 2026
0e52e15
cleanup type mess
overheadhunter Feb 9, 2026
03ae67b
more ts cleanup
overheadhunter Feb 9, 2026
cf8c7c3
more ts cleanup
overheadhunter Feb 9, 2026
0e52c76
Update Keycloak to 26.5.3
SailReal Feb 10, 2026
8a37207
move iss/sub/iat to jwt payload
overheadhunter Feb 11, 2026
26851f0
process can either be completed or aborted
overheadhunter Feb 11, 2026
be83050
typo
overheadhunter Feb 11, 2026
37b8d7c
change PopoverButton to span
mindmonk Feb 11, 2026
b2a732b
Merge branch 'feature/recover' of github.com:cryptomator/hub into fea…
mindmonk Feb 11, 2026
7bc9d84
LicenseHolder: use Future to avoid race conditions
overheadhunter Feb 11, 2026
2a89a0c
fix support for multiple process types
overheadhunter Feb 12, 2026
2dbed03
approval of former council members don't justify a vault owner to cha…
overheadhunter Feb 12, 2026
70e965d
propagate error
overheadhunter Feb 12, 2026
1f41d07
Merge pull request #390 from cryptomator/feature/recover
overheadhunter Feb 12, 2026
4dcd06a
minor code style fixes
overheadhunter Feb 12, 2026
3152208
Formatting. (#395)
chenkins Feb 12, 2026
3203d75
Bump the java-production-dependencies group in /backend with 2 updates
dependabot[bot] Feb 12, 2026
5961054
update CHANGELOG
overheadhunter Feb 12, 2026
50ed2a6
LicenseHolder: partially revert 7bc9d84
overheadhunter Feb 12, 2026
96228bc
try workaround for quarkusio/quarkus#51002
overheadhunter Feb 12, 2026
d9ec19f
update to Quarkus 3.27.2
overheadhunter Feb 12, 2026
2a509e5
migrate embeddable id to records
overheadhunter Feb 12, 2026
4ed3e57
start-dev is now default for keycloak devservice
overheadhunter Feb 12, 2026
15d9a07
OIDC: prevent "Connection refused" errors
overheadhunter Feb 12, 2026
4958495
Dockerfile.jvm: fix missing `L32X64MixRandom`
overheadhunter Feb 13, 2026
26ce724
Revert 96228bc
overheadhunter Feb 13, 2026
8a63280
npm update
overheadhunter Feb 13, 2026
5713035
update vue-router
overheadhunter Feb 13, 2026
de9c245
break up js chunks
overheadhunter Feb 13, 2026
6ebcc7d
fix db rollback during test
overheadhunter Feb 13, 2026
6793813
add micrometer metrics support (#399)
overheadhunter Feb 13, 2026
0e601b2
Merge branch 'develop' into feature/device-list-improvements
overheadhunter Feb 13, 2026
a359044
Bump the github-actions group across 1 directory with 7 updates (#397)
dependabot[bot] Feb 13, 2026
2f09703
Merge branch 'develop' into feature/get-free-CE-license
overheadhunter Feb 13, 2026
e02ddd7
replace method that's deprecated w/ Hibernate 7.0
overheadhunter Feb 13, 2026
880e8dc
make "manage license" button a link as well
overheadhunter Feb 13, 2026
2dec8ce
remove unused import
overheadhunter Feb 13, 2026
8bef28f
Merge pull request #401 from cryptomator/feature/get-free-CE-license
overheadhunter Feb 13, 2026
fd8c6a6
Merge branch 'develop' into feature/manual-license-refresh
overheadhunter Feb 13, 2026
2e61cac
disable refresh button for trials
overheadhunter Feb 13, 2026
52e96a1
apply suggestions from code review
overheadhunter Feb 13, 2026
c84011f
Merge pull request #394 from cryptomator/feature/manual-license-refresh
overheadhunter Feb 13, 2026
33bdf20
reordered code
overheadhunter Feb 13, 2026
56209f6
reload config after license refresh
overheadhunter Feb 13, 2026
92928e6
Fix table column consistency in UserDeviceList
iammajid Feb 18, 2026
50ac6db
Merge branch 'feature/device-list-improvements' of github.com:cryptom…
iammajid Feb 18, 2026
0814b84
Fix null-safe email validation for legacy users
iammajid Feb 18, 2026
5867e14
draft helm chart
overheadhunter Feb 18, 2026
26bb91a
add optional ingress support
overheadhunter Feb 18, 2026
718d612
Use optional types instead of null for email fields
iammajid Feb 19, 2026
0c83233
Merge pull request #392 from cryptomator/feature/device-list-improvem…
iammajid Feb 19, 2026
9b5b6bb
Use undefined instead of empty string for optional email
iammajid Feb 19, 2026
fc9a993
Fix inline email validation to use trimmed value
iammajid Feb 19, 2026
cc100f1
cleanup and refine chart
overheadhunter Feb 19, 2026
6ed0871
auto-generate passwords if unset
overheadhunter Feb 19, 2026
bdb4418
init containers shall also wait for external kc/pg
overheadhunter Feb 19, 2026
69870be
cleanup
overheadhunter Feb 19, 2026
0475859
derive paths from public urls
overheadhunter Feb 20, 2026
20fd5df
make pgdata mount work despite ext4's lost+found
overheadhunter Feb 20, 2026
72d4a3e
remove public key for dev profile in quarkus properties
infeo Feb 20, 2026
0c0abc4
ingress: strip prefix
overheadhunter Feb 22, 2026
f976d9d
don't re-roll secrets during helm upgrade
overheadhunter Feb 22, 2026
62b3d9f
fix relative paths
overheadhunter Feb 22, 2026
a76d058
add another writable tmp dir for keycloak
overheadhunter Feb 22, 2026
b69840c
add `ingress.controller=contour` support
overheadhunter Feb 22, 2026
68127f3
add GitHub workflow to publish chart
overheadhunter Feb 22, 2026
3eada8d
simplify and apply suggestions from code review
overheadhunter Feb 22, 2026
00e0993
escape `'` in db passwords
overheadhunter Feb 22, 2026
10e3d41
apply more suggestions from code review
overheadhunter Feb 22, 2026
b6fd2e3
fix helm chart CI
overheadhunter Feb 22, 2026
73c8071
avoid redirect to canonical url
overheadhunter Feb 22, 2026
8fd6b63
login to GHCR
overheadhunter Feb 22, 2026
06433af
disable nginx regex rewrite when deploying to `/`
overheadhunter Feb 22, 2026
b961de2
only build chart when requested
overheadhunter Feb 22, 2026
462535b
fix trimming
overheadhunter Feb 22, 2026
42fe762
Update Keycloak to 26.5.4
SailReal Feb 23, 2026
7e073b7
Fix isEmailRequired logic for undefined initialEmail
iammajid Feb 23, 2026
671886e
validate council members only when defaults can be changed - Fixes #405
mindmonk Feb 23, 2026
b010c55
Refactor isEmailRequired with explicit else block
iammajid Feb 23, 2026
035d071
Merge pull request #404 from cryptomator/fix/nullsafe-user-fields
iammajid Feb 23, 2026
172d181
change grant disable logic and conditional min-members validation
mindmonk Feb 23, 2026
4d482c8
include archived vaults in emergency access lists with label
mindmonk Feb 23, 2026
25b567a
use curl in `wait-for-oidc` init container
overheadhunter Feb 23, 2026
86d4007
also build chart on [build chart]
overheadhunter Feb 23, 2026
baff9f0
expose metrics endpoint
overheadhunter Feb 23, 2026
4a57438
Merge pull request #406 from cryptomator/feature/helm-chart
overheadhunter Feb 23, 2026
6a4a27f
New Crowdin updates (#364)
cryptobot Feb 24, 2026
9f9d852
replace deprecated css class
overheadhunter Feb 24, 2026
549643a
don't show kc link if not accessible
overheadhunter Feb 24, 2026
8c3b76c
hardcoded key
overheadhunter Feb 24, 2026
9131b26
x5c validation
overheadhunter Feb 25, 2026
de973fa
cleanup
overheadhunter Feb 25, 2026
4695b7a
make intermediate cert configurable
overheadhunter Feb 25, 2026
d419594
enforce CN in trust chain
overheadhunter Feb 26, 2026
bea5c29
addressed findings from code review
overheadhunter Feb 26, 2026
c8202ad
fix CN checking
overheadhunter Feb 26, 2026
20146bd
improved parameter validation
overheadhunter Feb 26, 2026
540951d
treat empty x509 strings as CertificateException
overheadhunter Feb 26, 2026
cfb4493
Merge pull request #407 from cryptomator/feature/license-chain
overheadhunter Feb 27, 2026
4073f2b
Fix emergency-access URL (emergencyaccess vs emergency-access)
SailReal Feb 27, 2026
00eb4b9
generalize "insufficient EA council" warnings
overheadhunter Feb 27, 2026
91d50c0
fix validation logic for emergency access
overheadhunter Feb 27, 2026
0a9768a
update button labels
overheadhunter Feb 27, 2026
be9a05a
Bump com.auth0:java-jwt
dependabot[bot] Mar 1, 2026
7820fc5
improve html semantics
overheadhunter Mar 2, 2026
82633fe
declutter emergency access list
overheadhunter Mar 2, 2026
80c7717
fix label ↔︎ input association
overheadhunter Mar 2, 2026
a2cf3e3
minor code quality issues
overheadhunter Mar 2, 2026
1f228e6
issue templates: set issue type
overheadhunter Mar 2, 2026
4c9bd8b
expose keycloak on `/`
overheadhunter Mar 4, 2026
fc6aba0
fix permissions
overheadhunter Mar 5, 2026
31b6fb6
Hide EA warnings when EA is deactivated
iammajid Mar 5, 2026
8e7d7cf
remove blank placeholder
mindmonk Mar 5, 2026
9464a83
update workflow permissions
overheadhunter Mar 5, 2026
082b214
merge license buttons into single Manage Subscription link
tobihagemann Mar 6, 2026
7c14548
remove extra slash before fragment in billing URL
tobihagemann Mar 6, 2026
b73b53d
use camelCase fragment params and drop hubId
tobihagemann Mar 6, 2026
27da19a
migrate `attest-build-provenance` → `attest`
overheadhunter Mar 6, 2026
ea3e130
Merge pull request #410 from cryptomator/dependabot/maven/backend/jav…
overheadhunter Mar 6, 2026
c49fb78
Bump the github-actions group across 1 directory with 8 updates
dependabot[bot] Mar 6, 2026
c963631
Merge pull request #415 from cryptomator/dependabot/github_actions/gi…
overheadhunter Mar 6, 2026
5f94425
Bump the maven-build-plugins group in /backend with 4 updates
dependabot[bot] Mar 6, 2026
981daff
Merge pull request #409 from cryptomator/dependabot/maven/backend/mav…
overheadhunter Mar 6, 2026
0c07332
Merge pull request #414 from cryptomator/feature/merge-license-buttons
tobihagemann Mar 6, 2026
c4bfab0
npm update
overheadhunter Mar 6, 2026
5e30c3b
upgrade to eslint 10
overheadhunter Mar 6, 2026
c4cd6ef
New Crowdin updates (#408)
cryptobot Mar 6, 2026
106e06f
use requiredSegments and newRequiredKeyShares for emergency access vi…
mindmonk Mar 6, 2026
74bfbf4
expose `hub.license.chain.required-cn`
overheadhunter Mar 6, 2026
f798af5
refresh license on startup
overheadhunter Mar 9, 2026
e17fdec
send captcha to license refresh endpoint
overheadhunter Mar 9, 2026
5614653
Update Keycloak to 26.5.5
SailReal Mar 10, 2026
26c4d8c
deduplicate EA setup logic
overheadhunter Mar 10, 2026
9d3ddea
add reset button to "choose council members" comp
overheadhunter Mar 10, 2026
11272cf
same form validation as in EmergencyAccessDialog
overheadhunter Mar 10, 2026
c9dae77
align styles
overheadhunter Mar 10, 2026
f20dda8
align styles
overheadhunter Mar 10, 2026
04a88c2
Merge branch 'develop' into feature/uvf
overheadhunter Mar 10, 2026
26f055e
fix emergency access start condition for council change with key shares
mindmonk Mar 11, 2026
b92e7d3
fix build
overheadhunter Mar 11, 2026
8bba159
add legacy device deprecation warning banner for users and admins
mindmonk Mar 11, 2026
52cfe1d
dedup "change council members"
overheadhunter Mar 11, 2026
86dfd36
fix ProcessAbortDialog nesting inside EmergencyAccessDialog
mindmonk Mar 13, 2026
d40ea08
fix layout quirks, eliminate `calcLeft`
overheadhunter Mar 13, 2026
af332f0
replaced deprecated `next()` callback in guards
overheadhunter Mar 13, 2026
e9e5fc4
disable username field in admin user edit mode
iammajid Mar 11, 2026
ed97f01
Merge pull request #421 from cryptomator/feature/fix-emergency-access…
mindmonk Mar 16, 2026
b982ccc
Merge pull request #419 from cryptomator/feature/emergency-access-fix…
mindmonk Mar 16, 2026
293b03f
Merge pull request #422 from cryptomator/fix/admin-disable-username-edit
iammajid Mar 17, 2026
971acff
Merge branch 'feature/uvf' of github.com:cryptomator/hub into feature…
chenkins Mar 17, 2026
c65a241
Post-merge fix backend.
chenkins Mar 17, 2026
fbd1112
Post-merge fix frontend.
chenkins Mar 17, 2026
cca595d
Post-merge fix frontend.
chenkins Mar 17, 2026
c773004
Post-merge fix application.properties.
chenkins Mar 17, 2026
e03b781
Post-merge fix pom.xml.
chenkins Mar 17, 2026
a29d65d
Update Keycloak to 26.5.6
SailReal Mar 19, 2026
36c5d0b
Merge branch 'develop' into feature/ea-cleanup
overheadhunter Mar 23, 2026
3064359
Sync disabled user state from Keycloak and exclude from seat count
tobihagemann Mar 24, 2026
b90d231
Add enable/disable user action to admin user detail page
tobihagemann Mar 24, 2026
01ec6ba
fix percent-encoding of query params
overheadhunter Mar 24, 2026
896b48c
Apply suggestions from code review
chenkins Mar 24, 2026
f1c8217
Apply suggestions from code review
chenkins Mar 24, 2026
af8aaa5
Simplify Boolean.TRUE.equals() wrapper for Keycloak isEnabled()
tobihagemann Mar 24, 2026
679b79e
Merge pull request #108 from shift7-ch/feature/merge-from-upstream-1.…
chenkins Mar 24, 2026
63a8d6d
EASetup: expose `allowChoosingCouncil` to context
overheadhunter Mar 24, 2026
d505c61
Simplify setUserEnabled endpoint to accept plain boolean body
tobihagemann Mar 24, 2026
856b015
Fix /storage endpoint, add test coverage for /storage endpoint.
chenkins Nov 6, 2025
8a29217
Pass aws/minio to `PUT /api/vaults/{vaultId}`.
chenkins Nov 7, 2025
e25c811
Use QuarkusMock.install approach instead of global KeycloakCryptomato…
chenkins Nov 23, 2025
4c4c642
Reproduce error archiving vault in IT setup.
chenkins Nov 24, 2025
631c308
Fix archiving.
chenkins Nov 24, 2025
4e9a0f6
Isolate Keycloak for Vaults Helper IT.
chenkins Nov 24, 2025
096829e
Cleanup keycloakGrantAccessToVault/keycloakRemoveAccessToVault args.
chenkins Nov 25, 2025
2cfcd6a
Make minio/aws args optional.
chenkins Nov 25, 2025
634eac8
Remove dependencies between tests in Vault IDs.
chenkins Nov 25, 2025
94a3914
Review.
chenkins Nov 25, 2025
9369893
Remove mapper if aws/minio=false is provided.
chenkins Nov 25, 2025
c34957c
Fix args.
chenkins Nov 26, 2025
617f7fa
Formatting.
chenkins Jan 29, 2026
12c43e2
Formatting.
chenkins Jan 29, 2026
cda7932
Post-rebase fix.
chenkins Mar 19, 2026
78f4b79
Fix linting.
chenkins Mar 19, 2026
1d09ccc
address findings from code review
overheadhunter Mar 24, 2026
31a2f87
Merge pull request #92 from shift7-ch/fix-storage-endpoint
chenkins Mar 24, 2026
abb35ba
Add *.amazonaws.com calls to CSP.
chenkins Feb 19, 2026
7c280a1
Fix web frontend region detection when creating permanent vaults.
chenkins Feb 19, 2026
839333b
try workaround for quarkusio/quarkus#51002
overheadhunter Feb 12, 2026
4c040cc
Post-rebase fix.
chenkins Mar 19, 2026
18120fe
Apply suggestions from code review
chenkins Mar 24, 2026
de496a2
Merge pull request #106 from shift7-ch/fix-cors-check-static-vault
chenkins Mar 24, 2026
62be4f7
feat: remove roles and add aud mapper to cryptomatorhub client.
chenkins Mar 10, 2026
edf63e0
Add missing api response description.
chenkins Mar 20, 2026
6709c17
Merge pull request #107 from shift7-ch/feature/fix-cryptomatorhub
chenkins Mar 24, 2026
047bae1
Replace local User interface with UserDto in dialog components
tobihagemann Mar 24, 2026
c829976
Add missing api response description. (#112)
chenkins Mar 24, 2026
0279d6f
Add "katta" keycloak theme
tobihagemann Nov 19, 2025
c728731
Rebrand frontend and keycloak theme from Cryptomator Hub to Katta
tobihagemann Mar 22, 2026
800dcb8
Update favicon
tobihagemann Mar 22, 2026
25a5706
Merge pull request #111 from shift7-ch/feature/frontend-design
chenkins Mar 24, 2026
12546cd
Post-merge fix keycloak.yml. (#113)
chenkins Mar 24, 2026
df73e11
required key shares: default vs process
overheadhunter Mar 24, 2026
e22d117
Post-merge fix keycloak.yml. (#114)
chenkins Mar 24, 2026
30486ad
apply suggestions from code review
overheadhunter Mar 24, 2026
5681bfe
removed dead branch
overheadhunter Mar 24, 2026
0686dcc
allow admins to archive and unarchive any vault
tobihagemann Mar 24, 2026
f415296
Update version check URL from Cryptomator to Katta
tobihagemann Mar 25, 2026
0b65f0f
Deprecate cipherduck. (#115)
chenkins Mar 25, 2026
af6a8ae
fix disabled state styling to dim pill elements individually, preserv…
mindmonk Mar 25, 2026
141f9aa
Change links to open desktop application. (#116)
chenkins Mar 25, 2026
790ecf6
add dedicated archive endpoint, restrict admin bypass on createOrUpdate
tobihagemann Mar 26, 2026
3683673
remove duplicate admin archive buttons from VaultDetails
tobihagemann Mar 26, 2026
0e760b4
normalize creationTime in setArchived response to Date
tobihagemann Mar 26, 2026
17f4550
Use text/plain content type for setUserEnabled endpoint
tobihagemann Mar 26, 2026
c480f8c
Add changelog entry for disabled user seats feature
tobihagemann Mar 26, 2026
e01e471
Merge pull request #428 from cryptomator/feature/disabled-user-seats
tobihagemann Mar 26, 2026
a7c463f
show archive/reactivate buttons in vault recovery section
tobihagemann Mar 27, 2026
5d5c465
fix archive/reactivate button visibility in licenseViolated section
tobihagemann Mar 27, 2026
cd11e3d
Merge branch 'develop' into feature/admin-archive-vault
tobihagemann Mar 27, 2026
fd9d939
use text/plain content type for setArchived endpoint
tobihagemann Mar 27, 2026
445fb27
Merge pull request #430 from cryptomator/feature/admin-archive-vault
tobihagemann Mar 27, 2026
6b19e60
suppress "no redudnancy" when validation fails
overheadhunter Mar 30, 2026
a6a6022
Merge branch 'develop' into feature/ea-cleanup
overheadhunter Mar 30, 2026
f5f9ae9
Validate missing selected storage profile.
chenkins Mar 31, 2026
c78b81f
Validate missing selected region.
chenkins Mar 31, 2026
a805ae1
Do not show form if no storage profiles available.
chenkins Mar 31, 2026
2faf485
Extract localization.
chenkins Mar 31, 2026
fd2d4e3
display new "required key shares"
overheadhunter Mar 31, 2026
895ad29
Update backend/src/main/java/org/cryptomator/hub/entities/LegacyDevic…
mindmonk Apr 1, 2026
99b9e0b
Fix styling, typo, and bug in vault creation validation.
tobihagemann Apr 1, 2026
830622f
user model always contains role `user`
overheadhunter Apr 1, 2026
3ecd519
CHANGELOG.md: mention fix for missing role `user`
overheadhunter Apr 1, 2026
b90b4ee
CHANGELOG.md: Add "Legacy Device Banner"
SailReal Apr 1, 2026
dae54e0
Merge branch 'develop' into feature/legacy-device-banner
SailReal Apr 1, 2026
fe46992
follow-up fix for 01ec6ba
overheadhunter Apr 1, 2026
365bcb5
Merge branch 'develop' into feature/ea-cleanup
overheadhunter Apr 1, 2026
192881e
Merge pull request #420 from cryptomator/feature/legacy-device-banner
mindmonk Apr 1, 2026
19bf114
Merge pull request #426 from cryptomator/feature/ea-cleanup
SailReal Apr 1, 2026
20eb075
Update dependencies
SailReal Apr 1, 2026
f5408b3
New Crowdin updates (#416)
cryptobot Apr 1, 2026
9c53c20
Validate missing selected storage profile. (#125)
chenkins Apr 1, 2026
2781c7e
Update CSP and Keycloak for Katta. (#127)
chenkins Apr 1, 2026
42ba094
New Crowdin updates (#436)
cryptobot Apr 2, 2026
236e9cf
Merge branch 'develop' into feature/uvf
overheadhunter Apr 2, 2026
7e7bd3c
fix frontend build
overheadhunter Apr 2, 2026
6dbac5c
Merge branch 'feature/uvf' of github.com:cryptomator/hub into feature…
chenkins Apr 2, 2026
e2e0561
fix test
overheadhunter Apr 2, 2026
0089cd5
Merge branch 'feature/uvf' of github.com:cryptomator/hub into feature…
chenkins Apr 3, 2026
156392c
Merge pull request #131 from shift7-ch/feature/126-update-user-creati…
chenkins Apr 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 0 additions & 2 deletions .github/FUNDING.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Bug Report
description: Create a report to help us improve
labels: ["type:bug"]
type: "Bug"
body:
- type: checkboxes
id: terms
Expand Down
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/feature.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Feature Request
description: Suggest an idea for this project
labels: ["type:feature-request"]
type: "Feature"
body:
- type: checkboxes
id: terms
Expand Down
23 changes: 23 additions & 0 deletions .github/ISSUE_TEMPLATE/story.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
name: Story
about: Persona needs for purpose.
title: "[Story]"
labels: ''
assignees: ''

---

### Story
* **Persona**:
* **Need**:
* **Purpose**:


### Acceptance Criteria
- [ ]

### Open Questions

### Context

### Implementation
206 changes: 153 additions & 53 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,29 @@ jobs:
name: Run Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
cache-dependency-path: frontend/package-lock.json
# / katta start addition
- uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: ${{ env.JAVA_VERSION }}
cache: 'maven'
- name: Generate openapi.json
working-directory: backend
run: >
mvn -B clean compile quarkus:build -P generate-openapi-json
- name: Check openapi.json
working-directory: backend
run: >
cat ../frontend/src/openapi/openapi.json
# \ katta end addition
- name: NPM install
working-directory: frontend
run: npm ci --ignore-scripts
Expand All @@ -35,48 +50,86 @@ jobs:
- name: Deploy frontend
working-directory: frontend
run: npm run dist
- name: SonarCloud Scan Frontend
uses: SonarSource/sonarqube-scan-action@fd88b7d7ccbaefd23d8f36f73b59db7a3d246602 # v6.0.0
with:
projectBaseDir: frontend
args: >
-Dsonar.organization=cryptomator
-Dsonar.projectKey=cryptomator_hub_frontend
-Dsonar.typescript.tsconfigPath=tsconfig.json
-Dsonar.sources=src/
-Dsonar.tests=test/
-Dsonar.javascript.lcov.reportPaths=coverage/lcov.info
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
- uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0
# / katta start commented out
# - name: SonarCloud Scan Frontend
# uses: SonarSource/sonarqube-scan-action@a31c9398be7ace6bbfaf30c0bd5d415f843d45e9 # v7.0.0
# with:
# projectBaseDir: frontend
# args: >
# -Dsonar.organization=cryptomator
# -Dsonar.projectKey=cryptomator_hub_frontend
# -Dsonar.typescript.tsconfigPath=tsconfig.json
# -Dsonar.sources=src/
# -Dsonar.tests=test/
# -Dsonar.javascript.lcov.reportPaths=coverage/lcov.info
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
# SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
# \ katta start commented out
- uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'temurin'
java-version: ${{ env.JAVA_VERSION }}
cache: 'maven'
- name: Cache SonarCloud packages
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
# / katta start commented out
# - name: Cache SonarCloud packages
# uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
# with:
# path: ~/.sonar/cache
# key: ${{ runner.os }}-sonar
# restore-keys: ${{ runner.os }}-sonar
# \ katta start commented out
- name: Build and test backend
working-directory: backend
run: >
./mvnw -B clean verify
org.sonarsource.scanner.maven:sonar-maven-plugin:sonar
-Dsonar.projectKey=cryptomator_hub_backend
-Dsonar.organization=cryptomator
-Dsonar.host.url=https://sonarcloud.io
# / katta start commented out
# org.sonarsource.scanner.maven:sonar-maven-plugin:sonar
# -Dsonar.projectKey=cryptomator_hub_backend
# -Dsonar.organization=cryptomator
# -Dsonar.host.url=https://sonarcloud.io
# \ katta start commented out
--no-transfer-progress
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
# / katta addition
- id: get_tag
name: Get tag
working-directory: backend
run: |
if [[ ! -z "${{ inputs.tag }}" ]]; then
TAG="${{ inputs.tag }}"
elif [[ ${{ github.ref_type }} == 'tag' ]]; then
TAG="${{ github.ref_name }}"
# / katta start modification
elif [[ ${{ github.ref_name }} == ${{ github.event.repository.default_branch }} ]]; then
TAG=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)
else
TAG="commit-${{ github.sha }}"
fi
# \ katta end modification
echo tag=${TAG}
echo tag=${TAG} >> "$GITHUB_OUTPUT"
- name: Build and push container image (ci)
working-directory: backend
run: ./mvnw -B clean package -DskipTests
env:
QUARKUS_JIB_PLATFORMS: linux/amd64,linux/arm64/v8
QUARKUS_CONTAINER_IMAGE_TAG: ${{ steps.get_tag.outputs.tag }}-ci
QUARKUS_CONTAINER_IMAGE_BUILD: true
QUARKUS_CONTAINER_IMAGE_PUSH: true
QUARKUS_CONTAINER_IMAGE_REGISTRY: ghcr.io
QUARKUS_CONTAINER_IMAGE_USERNAME: ${{ github.actor }}
QUARKUS_CONTAINER_IMAGE_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
# \ katta addition

build-native-image:
name: Build and Push ${{ matrix.arch }} Image
needs: test
if: startsWith(github.ref, 'refs/tags/') || contains(github.event.head_commit.message, '[build image]')
# / katta start commented out - build every commit
# if: startsWith(github.ref, 'refs/tags/') || contains(github.event.head_commit.message, '[build image]')
# \ katta end commented out
strategy:
fail-fast: false
matrix:
Expand All @@ -92,15 +145,34 @@ jobs:
digest_amd64: ${{ steps.digest.outputs.digest_amd64 }}
digest_arm64: ${{ steps.digest.outputs.digest_arm64 }}
permissions:
contents: read
packages: write
contents: read # Required for checkout
packages: write # Required for pushing the image to GHCR
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
node-version: ${{ env.NODE_VERSION }}
cache: 'npm'
cache-dependency-path: frontend/package-lock.json
# / katta addition
- id: get_tag
name: get tag
working-directory: backend
run: |
if [[ ! -z "${{ inputs.tag }}" ]]; then
TAG="${{ inputs.tag }}"
elif [[ ${{ github.ref_type }} == 'tag' ]]; then
TAG="${{ github.ref_name }}"
# / katta start modification
elif [[ ${{ github.ref_name }} == ${{ github.event.repository.default_branch }} ]]; then
TAG=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)
else
TAG="commit-${{ github.sha }}"
fi
# \ katta end modification
echo tag=${TAG}
echo tag=${TAG} >> "$GITHUB_OUTPUT"
# \ katta addition
- name: NPM install
working-directory: frontend
run: npm ci --ignore-scripts
Expand All @@ -109,30 +181,37 @@ jobs:
run: npm run dist
- name: Ensure to use tagged version
working-directory: backend
run: ./mvnw versions:set --file pom.xml -DnewVersion=${GITHUB_REF##*/}
# / katta modification
#run: ./mvnw versions:set --file pom.xml -DnewVersion=${GITHUB_REF##*/}
run: ./mvnw versions:set --file pom.xml -DnewVersion=${{ steps.get_tag.outputs.tag }}
# \ katta modification
- name: Docker metadata
id: meta
uses: docker/metadata-action@c1e51972afc2121e065aed6d45c65596fe445f3f # v5.8.0
uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6.0.0
with:
images: ghcr.io/cryptomator/hub
images: ghcr.io/shift7-ch/katta-server
# / katta modification
tags: |
type=sha,prefix=,format=short
type=raw,value=${{ steps.get_tag.outputs.tag }}
type=raw,value=latest,enable={{is_default_branch}}
# \ katta modification
flavor: |
suffix=-${{ matrix.arch }}
labels: |
org.opencontainers.image.title=Cryptomator Hub
org.opencontainers.image.vendor=Skymatic GmbH
org.opencontainers.image.title=Katta Server
org.opencontainers.image.vendor=Shift 7 GmbH
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Login to GHCR
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and Push Container Image
id: push
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
uses: docker/build-push-action@d08e5c354a6adb9ed34480a06d141179aa583294 # v7.0.0
with:
context: backend
file: backend/src/main/docker/Dockerfile.native
Expand All @@ -145,42 +224,63 @@ jobs:
run: |
echo "digest_${{ matrix.arch }}=${{ steps.push.outputs.digest }}" >> "$GITHUB_OUTPUT"



multi-arch-image:
name: Build and Push Multi-Arch Image
needs: build-native-image
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
attestations: write
packages: write
contents: read # Required for checkout
id-token: write # Required for the attestations step
attestations: write # Required for the attestations step
artifact-metadata: write # Required for the attestations step
packages: write # Required for pushing the image to GHCR
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4.0.0
- name: Determine short Commit SHA
id: sha
run: echo "short_sha=${LONG_SHA:0:7}" >> "$GITHUB_OUTPUT"
env:
LONG_SHA: ${{ github.sha }}
- name: Login to GHCR
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
uses: docker/login-action@b45d80f862d83dbcd57f89517bcf500b2ab88fb2 # v4.0.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Create Multi-Arch Manifest for ghcr.io/cryptomator/hub:${{ steps.sha.outputs.short_sha }}
- name: Create Multi-Arch Manifest for ghcr.io/shift7-ch/katta-server:${{ steps.sha.outputs.short_sha }}
run: >
docker buildx imagetools create --tag ghcr.io/cryptomator/hub:${{ steps.sha.outputs.short_sha }}
ghcr.io/cryptomator/hub@${{ needs.build-native-image.outputs.digest_amd64 }}
ghcr.io/cryptomator/hub@${{ needs.build-native-image.outputs.digest_arm64 }}
docker buildx imagetools create --tag ghcr.io/shift7-ch/katta-server:${{ steps.sha.outputs.short_sha }}
ghcr.io/shift7-ch/katta-server@${{ needs.build-native-image.outputs.digest_amd64 }}
ghcr.io/shift7-ch/katta-server@${{ needs.build-native-image.outputs.digest_arm64 }}
- name: Retrieve Multi-Arch Digest
id: inspect
run: |
DIGEST=$(docker buildx imagetools inspect ghcr.io/cryptomator/hub:${{ steps.sha.outputs.short_sha }} --format "{{json .Manifest}}" | jq -r .digest)
DIGEST=$(docker buildx imagetools inspect ghcr.io/shift7-ch/katta-server:${{ steps.sha.outputs.short_sha }} --format "{{json .Manifest}}" | jq -r .digest)
echo "digest_multiarch=${DIGEST}" >> "$GITHUB_OUTPUT"
- name: Generate artifact attestation
uses: actions/attest-build-provenance@977bb373ede98d70efdf65b84cb5f73e068dcc2a # v3.0.0
uses: actions/attest@59d89421af93a897026c735860bf21b6eb4f7b26 # v4.1.0
with:
subject-name: ghcr.io/cryptomator/hub
subject-name: ghcr.io/shift7-ch/katta-server
subject-digest: ${{ steps.inspect.outputs.digest_multiarch }}
push-to-registry: true

# / katta start addition
keycloak-integrationtests:
name: Run katta Keycloak Integration Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5

- uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: ${{ env.JAVA_VERSION }}
cache: 'maven'
- name: Run Keycloak integration tests
working-directory: keycloak
run: >
mvn -B clean verify
# \ katta end addition
Loading