Skip to content

Commit 6e12af7

Browse files
committed
Release OpenProject 17.2.0
2 parents d70b7c1 + fc7cba2 commit 6e12af7

File tree

1,833 files changed

+74313
-24163
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,833 files changed

+74313
-24163
lines changed

.dockerignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,5 +41,7 @@ frontend/node_modules
4141
node_modules
4242
# travis
4343
vendor/bundle
44+
# Local checkout; all-in-one copies hocuspocus from its dedicated image.
45+
vendor/hocuspocus
4446
/public/assets
4547
/config/frontend_assets.manifest.json

.env.example

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ PORT=3000
4444
FE_HOST=localhost
4545
FE_PORT=4200
4646

47+
# Hocuspocus (collaborative editing) - local development
48+
OPENPROJECT_COLLABORATIVE__EDITING__HOCUSPOCUS__URL=ws://localhost:1234
49+
OPENPROJECT_COLLABORATIVE__EDITING__HOCUSPOCUS__SECRET=secret12345
50+
4751
# Default TLD for docker dev stack (e.g. when set to "local", services will be openproject.local, nextcloud.local, etc.)
4852
OPENPROJECT_DOCKER_DEV_TLD=local
4953

.github/dependabot.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ updates:
55
schedule:
66
interval: "daily"
77
target-branch: "dev"
8+
cooldown:
9+
default-days: 5
10+
semver-major-days: 30
11+
semver-minor-days: 14
12+
semver-patch-days: 5
813
groups:
914
angular:
1015
patterns:
@@ -40,6 +45,11 @@ updates:
4045
schedule:
4146
interval: "daily"
4247
target-branch: "dev"
48+
cooldown:
49+
default-days: 5
50+
semver-major-days: 30
51+
semver-minor-days: 14
52+
semver-patch-days: 5
4353
groups:
4454
aws-gems:
4555
patterns:
@@ -48,6 +58,22 @@ updates:
4858
- dependency-name: "openproject-octicons"
4959
- dependency-name: "openproject-octicons_helper"
5060
- dependency-name: "openproject-primer_view_components"
61+
- package-ecosystem: "npm"
62+
directory: "/extensions/op-blocknote-hocuspocus"
63+
schedule:
64+
interval: "weekly"
65+
target-branch: "dev"
66+
commit-message:
67+
prefix: "deps(hocuspocus)"
68+
labels:
69+
- "dependencies"
70+
groups:
71+
npm-minor-patch:
72+
patterns:
73+
- "*"
74+
update-types:
75+
- "minor"
76+
- "patch"
5177
- package-ecosystem: "github-actions"
5278
directory: "/"
5379
schedule:

.github/workflows/cla.yml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ on:
33
issue_comment:
44
types: [created]
55
pull_request_target:
6-
types: [opened,closed,synchronize]
6+
types: [opened, closed, synchronize]
77

88
# explicitly configure permissions, in case your GITHUB_TOKEN workflow permissions are set to read-only in repository settings
99
permissions:
@@ -14,6 +14,7 @@ permissions:
1414

1515
jobs:
1616
CLAAssistant:
17+
if: github.repository == 'opf/openproject'
1718
runs-on: ubuntu-latest
1819
steps:
1920
- name: "CLA Assistant"
@@ -23,11 +24,12 @@ jobs:
2324
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2425
PERSONAL_ACCESS_TOKEN: ${{ secrets.OPENPROJECTCI_GH_LEGAL_TOKEN }}
2526
with:
26-
path-to-signatures: 'contributor-license-agreement/signatures/version1.json'
27-
path-to-document: 'https://www.openproject.org/legal/contributor-license-agreement' # e.g. a CLA or a DCO document
27+
path-to-signatures: "contributor-license-agreement/signatures/version1.json"
28+
path-to-document: "https://www.openproject.org/legal/contributor-license-agreement" # e.g. a CLA or a DCO document
2829
# branch should not be protected
29-
branch: 'main'
30+
branch: "main"
3031
allowlist: >
32+
*[bot]*,
3133
Copilot,
3234
Daten-David,
3335
EinLama,
@@ -72,6 +74,7 @@ jobs:
7274
samachon,
7375
shiroginne,
7476
toy,
77+
tiroessler,
7578
ulferts,
7679
vonTronje,
7780
vspielau,

.github/workflows/codeql-scan-core.yml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,19 @@ name: codeql
22

33
on:
44
push:
5-
branches: [ "dev", "release/*", "stable/*" ]
5+
branches: ["dev", "release/*", "stable/*"]
66
pull_request:
7-
branches: [ "dev", "release/*", "stable/*" ]
7+
branches: ["dev", "release/*", "stable/*"]
88
paths-ignore:
9-
- 'docs/**'
9+
- "docs/**"
1010
schedule:
11-
- cron: '32 1 * * 2'
11+
- cron: "32 1 * * 2"
1212

1313
jobs:
1414
analyze:
15+
if: github.repository == 'opf/openproject'
1516
name: Analyze
16-
runs-on: 'ubuntu-latest'
17+
runs-on: "ubuntu-latest"
1718
timeout-minutes: 120
1819
permissions:
1920
# required for all workflows
@@ -26,7 +27,7 @@ jobs:
2627
strategy:
2728
fail-fast: false
2829
matrix:
29-
language: [ 'javascript-typescript', 'ruby' ]
30+
language: ["javascript-typescript", "ruby"]
3031

3132
steps:
3233
- name: Checkout repository

.github/workflows/continuous-delivery.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@ jobs:
2121
REPOSITORY: opf/openproject-flavours
2222
WORKFLOW_ID: ci.yml
2323
REF_NAME: ${{ github.ref_name }}
24+
THIS_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
2425
run: |
25-
PAYLOAD=$(jq -n --arg ref "$REF_NAME" '{"ref": "dev", "inputs": {"ref": $ref}}')
26+
PAYLOAD=$(jq -n --arg ref "$REF_NAME" --arg triggered_by_url "$THIS_RUN_URL" \
27+
'{"ref": "dev", "inputs": {"ref": $ref, "triggered_by_url": $triggered_by_url}}')
2628
curl -i --fail-with-body -H"authorization: Bearer $TOKEN" \
2729
-XPOST -H"Accept: application/vnd.github.v3+json" \
2830
https://api.github.com/repos/$REPOSITORY/actions/workflows/$WORKFLOW_ID/dispatches \

.github/workflows/create-merge-from-previous-release-branch-pr.yml

Lines changed: 36 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,49 @@
11
name: create-merge-from-previous-release-branch
22
on:
33
push:
4-
branches: [ "release/*" ]
4+
branches: ["release/*"]
55
workflow_dispatch:
66

77
permissions: {}
88
jobs:
99
setup:
10+
if: github.repository == 'opf/openproject'
1011
runs-on: ubuntu-latest
1112
outputs:
1213
previous_release_branch: ${{ steps.find_previous_release.outputs.branch }}
1314
latest_release_branch: ${{ steps.find_latest_release.outputs.branch }}
1415
steps:
15-
- id: find_previous_release
16-
env:
17-
GITHUB_TOKEN: ${{ secrets.OPENPROJECTCI_GH_CORE_PAT }}
18-
GITHUB_REPOSITORY: ${{ github.repository }}
19-
run: |
20-
BRANCH=$(curl -H "Authorization: token $GITHUB_TOKEN" \
21-
https://api.github.com/repos/$GITHUB_REPOSITORY/branches?protected=true | \
22-
jq -r '.[].name' | grep '^release/' | sort --version-sort | tail -2 | head -1
23-
)
24-
if [ "$BRANCH" = "" ]; then
25-
echo "Invalid release branch found: $BRANCH"
26-
exit 1
27-
fi
28-
echo "Found previous release branch: $BRANCH"
29-
echo "branch=${BRANCH}" >> $GITHUB_OUTPUT
30-
- id: find_latest_release
31-
env:
32-
GITHUB_TOKEN: ${{ secrets.OPENPROJECTCI_GH_CORE_PAT }}
33-
GITHUB_REPOSITORY: ${{ github.repository }}
34-
run: |
35-
BRANCH=$(curl -H "Authorization: token $GITHUB_TOKEN" \
36-
https://api.github.com/repos/$GITHUB_REPOSITORY/branches?protected=true | \
37-
jq -r '.[].name' | grep '^release/' | sort --version-sort | tail -1
38-
)
39-
if [ "$BRANCH" = "" ]; then
40-
echo "Invalid release branch found: $BRANCH"
41-
exit 1
42-
fi
43-
44-
echo "Found current release branch: $BRANCH"
45-
echo "branch=${BRANCH}" >> $GITHUB_OUTPUT
16+
- id: find_previous_release
17+
env:
18+
GITHUB_TOKEN: ${{ secrets.OPENPROJECTCI_GH_CORE_PAT }}
19+
GITHUB_REPOSITORY: ${{ github.repository }}
20+
run: |
21+
BRANCH=$(curl -H "Authorization: token $GITHUB_TOKEN" \
22+
https://api.github.com/repos/$GITHUB_REPOSITORY/branches?protected=true | \
23+
jq -r '.[].name' | grep '^release/' | sort --version-sort | tail -2 | head -1
24+
)
25+
if [ "$BRANCH" = "" ]; then
26+
echo "Invalid release branch found: $BRANCH"
27+
exit 1
28+
fi
29+
echo "Found previous release branch: $BRANCH"
30+
echo "branch=${BRANCH}" >> $GITHUB_OUTPUT
31+
- id: find_latest_release
32+
env:
33+
GITHUB_TOKEN: ${{ secrets.OPENPROJECTCI_GH_CORE_PAT }}
34+
GITHUB_REPOSITORY: ${{ github.repository }}
35+
run: |
36+
BRANCH=$(curl -H "Authorization: token $GITHUB_TOKEN" \
37+
https://api.github.com/repos/$GITHUB_REPOSITORY/branches?protected=true | \
38+
jq -r '.[].name' | grep '^release/' | sort --version-sort | tail -1
39+
)
40+
if [ "$BRANCH" = "" ]; then
41+
echo "Invalid release branch found: $BRANCH"
42+
exit 1
43+
fi
44+
45+
echo "Found current release branch: $BRANCH"
46+
echo "branch=${BRANCH}" >> $GITHUB_OUTPUT
4647
merge-or-create-pr:
4748
if: github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref_name == needs.setup.outputs.previous_release_branch)
4849
env:
@@ -67,11 +68,11 @@ jobs:
6768
# Calculate a reasonable date to fetch from (e.g., 6 months ago)
6869
SINCE_DATE=$(date -d '3 months ago' '+%Y-%m-%d')
6970
echo "Fetching commits since: $SINCE_DATE"
70-
71+
7172
# Fetch both branches with commits since the calculated date
7273
git fetch --shallow-since="$SINCE_DATE" origin "$RELEASE_BRANCH" "$PREVIOUS_RELEASE_BRANCH" || {
7374
echo "Shallow-since fetch failed, trying with depth strategy..."
74-
75+
7576
# Fallback: Use progressive deepening
7677
git fetch --depth=50 origin "$RELEASE_BRANCH" "$PREVIOUS_RELEASE_BRANCH"
7778
for depth in 100 200 500 1000; do
@@ -98,7 +99,7 @@ jobs:
9899
else
99100
echo "⚠️ Could not find merge-base, operations may be limited"
100101
fi
101-
102+
102103
echo "Branch $RELEASE_BRANCH has $(git rev-list --count origin/$RELEASE_BRANCH) commits"
103104
echo "Branch $PREVIOUS_RELEASE_BRANCH has $(git rev-list --count origin/$PREVIOUS_RELEASE_BRANCH) commits"
104105

.github/workflows/create-merge-release-into-dev-pr.yml

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,34 @@ name: create-merge-release-into-dev-pr
22
on:
33
workflow_dispatch:
44
schedule:
5-
- cron: '30 3 * * *' # Daily at 03:30
5+
- cron: "30 3 * * *" # Daily at 03:30
66

77
env:
88
BASE_BRANCH: dev
99

1010
permissions: {}
1111
jobs:
1212
setup:
13+
if: github.repository == 'opf/openproject'
1314
runs-on: ubuntu-latest
1415
outputs:
1516
latest_release_branch: ${{ steps.find_latest_release.outputs.branch }}
1617
steps:
17-
- id: find_latest_release
18-
env:
19-
GITHUB_TOKEN: ${{ secrets.OPENPROJECTCI_GH_CORE_PAT }}
20-
GITHUB_REPOSITORY: ${{ github.repository }}
21-
run: |
22-
BRANCH=$(curl -H "Authorization: token $GITHUB_TOKEN" \
23-
https://api.github.com/repos/$GITHUB_REPOSITORY/branches?protected=true | \
24-
jq -r '.[].name' | grep '^release/' | sort --version-sort | tail -1
25-
)
26-
if [ "$BRANCH" = "" ]; then
27-
echo "Invalid release branch found: $BRANCH"
28-
exit 1
29-
fi
30-
31-
echo "branch=${BRANCH}" >> $GITHUB_OUTPUT
18+
- id: find_latest_release
19+
env:
20+
GITHUB_TOKEN: ${{ secrets.OPENPROJECTCI_GH_CORE_PAT }}
21+
GITHUB_REPOSITORY: ${{ github.repository }}
22+
run: |
23+
BRANCH=$(curl -H "Authorization: token $GITHUB_TOKEN" \
24+
https://api.github.com/repos/$GITHUB_REPOSITORY/branches?protected=true | \
25+
jq -r '.[].name' | grep '^release/' | sort --version-sort | tail -1
26+
)
27+
if [ "$BRANCH" = "" ]; then
28+
echo "Invalid release branch found: $BRANCH"
29+
exit 1
30+
fi
31+
32+
echo "branch=${BRANCH}" >> $GITHUB_OUTPUT
3233
3334
merge-or-create-pr:
3435
env:

.github/workflows/crowdin.yml

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,30 +2,31 @@ name: crowdin
22
on:
33
workflow_dispatch:
44
schedule:
5-
- cron: '0 3 * * *' # Daily at 03:00
5+
- cron: "0 3 * * *" # Daily at 03:00
66

77
permissions: {}
88
jobs:
99
setup:
10+
if: github.repository == 'opf/openproject'
1011
runs-on: ubuntu-latest
1112
outputs:
1213
latest_release_branch: ${{ steps.find_latest_release.outputs.branch }}
1314
steps:
14-
- id: find_latest_release
15-
env:
16-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
17-
GITHUB_REPOSITORY: ${{ github.repository }}
18-
run: |
19-
BRANCH=$(curl -H "Authorization: token $GITHUB_TOKEN" \
20-
https://api.github.com/repos/$GITHUB_REPOSITORY/branches?protected=true | \
21-
jq -r '.[].name' | grep '^release/' | sort --version-sort | tail -1
22-
)
23-
if [ "$BRANCH" = "" ]; then
24-
echo "Invalid release branch found: $BRANCH"
25-
exit 1
26-
fi
15+
- id: find_latest_release
16+
env:
17+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
18+
GITHUB_REPOSITORY: ${{ github.repository }}
19+
run: |
20+
BRANCH=$(curl -H "Authorization: token $GITHUB_TOKEN" \
21+
https://api.github.com/repos/$GITHUB_REPOSITORY/branches?protected=true | \
22+
jq -r '.[].name' | grep '^release/' | sort --version-sort | tail -1
23+
)
24+
if [ "$BRANCH" = "" ]; then
25+
echo "Invalid release branch found: $BRANCH"
26+
exit 1
27+
fi
2728
28-
echo "branch=${BRANCH}" >> $GITHUB_OUTPUT
29+
echo "branch=${BRANCH}" >> $GITHUB_OUTPUT
2930
3031
crowdin:
3132
permissions:

.github/workflows/docker-release.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ on:
1212

1313
jobs:
1414
compute-inputs:
15+
if: github.repository == 'opf/openproject'
1516
runs-on: ubuntu-latest
1617
outputs:
1718
tag: ${{ steps.compute.outputs.tag }}
@@ -45,7 +46,7 @@ jobs:
4546
echo "tag=$TAG_REF" | tee -a "$GITHUB_OUTPUT"
4647
4748
build:
48-
needs: compute-inputs
49+
needs: [compute-inputs]
4950
uses: ./.github/workflows/docker.yml
5051
with:
5152
branch: ${{ needs.compute-inputs.outputs.branch }}

0 commit comments

Comments
 (0)